Навигация
 
Главная
Для начинающих
Паскаль/Pascal
Bash

Визуальное программирование
• Visual Basic
• Delphi/Делфи
• C++/Си++/Си
• документация
• Компоненты

WEB программирование
• MySQL/мускул
• Web-дизайн
•• Шрифты
• PHP/Пхп
• Документация PHP
• JavaScript
•• библиотека jquery
•  Документация
Прочее

 
 
Поиск по сайту
 




 
 
О нас
  У нас Вы можете скачать исходники, скачать скрипты, найти исходники, исходники delphi, документация по JQeury, исходники си, учебник HTML  
 
Теги
  codeserfercom, Linux, nbspnbsp, Private, Visual, Возможность, Пример, Рассмотрим, Сегодня, Теперь, будет, данных, значение, который, может, можно, написать, например, очень, переменной, переменных, пользователя, помощью, программа, программирования, программы, просто, работы, разработки, решил, сделать, скрипт, строки, строку, также, только, функции, число, этого, языка

Показать все теги
 
 
Счетчики
 
 
 
Реклама
   
 
Лучшие коды
   
   
 
Комплексная защита сервера
 Категория: Web-программирование » документация по WEB-программированию | автор: Codeserfer | 21 июля 2009 | Просмотров: 3876  



 
Проблема защиты не ограничивается только защитой сценария. Можно написать самую безопасную программу, но при этом установить на сервер ОС
с настройками по умолчанию. Всем известно, что настройки по умолчанию далеки от идеала, и благодаря этому сервер может быть взломан даже без использования Web-сценариев. Безопасным должен быть не только каждый участок кода, но и каждая программа, установленная на сервере, сама ОС и все используемое оборудование (в основном, это касается сетевых устройств).
Программист должен всегда работать в сотрудничестве с администраторами и специалистами по безопасности. Например, программист может решить, что для его удобства необходимо сделать определенную папку открытой для чтения и записи всем пользователям. В этой папке сценарии будут сохранять некоторые данные. Но если эта папка используется администратором для хранения важных данных или конфигурационных файлов, то сервер
окажется под угрозой.
Защищать надо и сетевое оборудование. Если вы следите за бюллетенями по безопасности, то должны были встречаться с описаниями взломов, при которых хакер смог получить доступ к маршрутизатору и просмотреть все пакеты пользователей. Для конфиденциальных данных мы можем использовать шифрование и передавать данные по протоколу SSL, но его никто и никогда не использует при создании форумов или чатов. Если хакер смог перехватить пакет, в котором пользователь передает на форум данные об авторизации, то хакер сможет их прочитать и захватить учетную запись
пользователя.
Итак, защищать необходимо не только сценарии, но и ОС, сервер базы данных, сетевое оборудование. Каждая составляющая требует отдельном книги по безопасности, но некоторые особенности защиты мы рассмотрим
в этой статье.
Даже если вы являетесь разработчиком и не связаны с администрированием сервера своей компании или просто сайта, я настоятельно рекомендую вам познакомиться с безопасностью ОС, которая используется на вашем сервере. Для Linux-систем я рекомендую прочитать книгу "Linux глазами хакера".
Давайте рассмотрим пример защиты MySQL и Apache в операционной системе Linux. Мы опустим защиту самой ОС, потому что это отдельная и очень большая тема. Итак, защита начинается с установки и предварительного конфигурирования. В случае с MySQL необходимо выполнить следующие действия:
1. Сервер базы данных устанавливается с настройками по умолчанию, при которых администраторский доступ разрешен пользователю root с пустым паролем. Это небезопасно. Необходимо, как минимум, установить сложный пароль, а лучше переименовать учетную запись root. Если вы работали с ОС Linux, то должны знать, что в этой системе администратором тоже является root. Имена администратора в ОС и в базе данных никак не связаны.
2. Необходимо заблокировать анонимный доступ к базе данных. Подключения должны производиться только для авторизованных пользователей.
3. Необходимо удалить все базы данных, созданные для тестирования и отладки. По умолчанию в большинстве серверов баз данных (в том числе и в MySQL) устанавливается тестовая база данных. В работающей системе ее не должно быть.
Доступ по умолчанию, о котором мы уже сказали, есть практически во всех базах данных. В MS SQL Server это имя sa, которое может не иметь пароля, если администратор не установил его во время инсталляции, а в MySQL это пользователь root без пароля. Чтобы изменить пароль в MySQL, выполните команду:
/usr/bin/mysqladmin -uroot password newpass
Наилучшим вариантом будет перенести работу MySQL и Apache в окружение enroot. Как работает это окружение? В системе создается каталог (в Linux для этого существует команда chroot), который является для программы корневым. Выше этого каталога программа, работающая в окружении chroot, попасть не может. Во главе всего стоит корневой каталог /. В нем находятся каталоги /bin, /usr, /var, /home и т. д. В /home расположены каталоги пользователей системы. Мы создаем здесь новый каталог, для примера назовем его chroot, и он будет являться корнем для службы. В нем будут свои каталоги /bin, /usr и т. д., и служба будет работать с ними, а все, что выше /home/chroot, окажется недоступным. Просто служба будет считать, что /home/chroot — это и есть корень файловой системы.
Если хакер проникнет в систему через защищенную службу и захочет просмотреть каталог /etc, то он увидит каталог /home/chroot/etc, но никак не системный /etc. Чтобы взломщик ничего не заподозрил, в каталоге /home/chroot/etc можно расположить все необходимые файлы, но занести в них некорректную информацию. Взломщик, запросив файл /etc/passwd через уязвимую службу, получит доступ к /home/chroot/etc/passwd, потому что служба считает его системным.
Так, например, файл /home/chroot/etc/passwd может содержать неверные пароли. На работу системы в целом это не повлияет, потому что система будет брать пароли из файла /etc/passwd, а службе реальные пароли системы не нужны, поэтому в файл /home/chroot/etc/passwd можно записать что угодно.
Встроенная в систему Linux программа chroot, создающая виртуальные пространства на сервере, не очень удобна. Нужно выполнить слишком много операций. Именно поэтому администраторы больше любят программу Jail. Ее вы можете найти в Интернете по этому адресу. Скачайте архивный файл и поместите его в свой каталог. Для того чтобы разархивировать этот файл, нужно выполнить следующую команду
tar xzvf jail.tar.gz
Теперь в текущем каталоге появится подкаталог jail с исходным кодом программы. Да, именно так. Программа открыта и поставляется в исходных кодах. Теперь нужно перейти в каталог jail/src (cd jail/src) и отредактировать файл Makefile (например, редактором программы МС). В самом начале файла идет множество комментариев, и их мы опустим. После этого вы сможете увидеть следующие параметры:
ARCH= LINUX_
#ARCH= FREEBSD
#ARCH= IRIX
#ARCH= SOLARIS
DEBUG = 0
INSTALL_DIR = /tmp/jail
PERL = /usr/bin/perl
ROOTUSER = root
ROOTGROUP = root
Вначале задается тип ОС. По умолчанию указана Linux, а следующие тристрочки для FreeBSD, Irix и Solaris закомментированы. Оставим все как есть. Что нужно изменить, так это каталог для установки (параметр INSTALL_DIR). По умолчанию в последней версии используется каталог /tmp/jail. He знаю, зачем это сделано, ведь каталог предназначен для временных файлов, и он должен быть доступен для чтения абсолютно всем. Раньше каталогом по умолчанию был /usr/local, и именно его я советую здесь указать. Больше ничего менять не надо. Для выполнения следующих команд вам понадобятся права пользователя root, поэтому войдите в систему как администратор или получите нужные права, выполнив команду su root. Перед компиляцией и установкой убедитесь, что у файла preinstall.sh есть права на выполнение файлов. Если их нет, выполните следующую команду:
chmod 755 preinstall.sh
Все готово к установке. Находясь в каталоге jail/src, выполните команды:
make
make install
Если все прошло успешно, то в каталоге /usr/local/bin должны появиться программы: addjailsw, addjailuser, jail и mkjailenv. Для начала создадим каталог /home/chroot. Он станет корневым для программы, на которой мы будем испытывать систему. Для этого выполним команду:
mkdir /home/chroot
Теперь нужно подготовить окружение для нормальной работы будущей службы. Для этого выполняем команду:
/usr/local/bin/mkjailenv /home/chroot
Посмотрите, что произошло с каталогом /home/chroot. Здесь появились два каталога dev и etc. Как мы знаем, в каталоге dev должны быть файлы описания устройств. В данном случае программа не стала делать полную копию системного каталога /dev, а ограничилась созданием трех основных устройств: null, urandom и zero.
В каталоге etc можно также увидеть три файла: group, passwd и shadow. Это неполные копии системных файлов. Например, если взглянуть на файл passwd, он будет содержать только следующие строчки:
root:x:0:0:Flenov,Admin:/root:/bin/bash
bin:x:l:l:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
В частности, здесь нет пользователей, которые могли быть созданы в основном разделе ОС Linux. В файле shadow находятся теневые пароли. Проверьте права на этот файл, чтобы они не были шире, чем rw (или 600). Тут есть один недостаток в безопасности — в файле /home/chroot/etc/shadow находится реальный зашифрованный пароль из файла /etc/shadow. Лучше удалите его. Если злоумышленник узнает пароль к службе, то он сможет проникнуть на сервер через другую дверь, которая не защищена виртуальным каталогом.
Продолжаем настройку виртуального корневого каталога. Теперь нам нужно выполнить следующую команду:
/usr/local/bin/addjailsw /home/chroot
Во время выполнения этой команды по экрану побежит множество информационных строчек о выполняемых действиях. Действия заключаются в том, что в каталог /home/chroot копируются основные каталоги и программы. Например, в каталог /home/chroot/bin будут скопированы программы cat, cp, Is, rm и т. д., и служба будет использовать именно эти программы, а не те, что расположены в основном каталоге /bin. Команда копирует то, что считает нужным, но далеко не все программы потребуются будущей службе, которая будет работать в виртуальном корневом каталоге. Если какая-либо программа не нужна, то ее следует удалить, но лучше делать это после того, как вы убедитесь, что все работает.
Окружение готово, и необходимые программы присутствуют. Теперь можно установить службу в это окружение. Для этого выполняем команду:
/usr/local/bin/addjailsw /home/chroot -P httpd
В данном примере в новое окружение устанавливается программа httpd и все необходимые ей библиотеки. Программа jail сама определит, что необходимо.
Теперь в новое окружение можно добавлять пользователя. Это выполняется командой:
/usr/local/bin/addjailuser chroot home sh name
Здесь chroot — виртуальный корневой каталог, в нашем случае таковым является /home/chroot. Параметр home — это домашний каталог пользователя относительно виртуального каталога. Параметр sh — командный интерпретатор. Параметр name — имя пользователя, которое мы хотим добавить (это имя уже должно существовать в основном окружении ОС). Посмотрим, как можно добавить пользователя robert (он должен уже существовать в реальной системе) в виртуальную систему:
/usr/local/bin/addjailuser /home/chroot/home/robert /bin/bash robert
Если параметры указаны верно, то вы должны увидеть сообщение Done, иначе будет выведено сообщение об ошибке. Для запуска сервера httpd (в Linux это сервер Apache) в виртуальном окру-жении должен присутствовать пользователь apache. В реальном окружении он есть. Давайте посмотрим на его параметры и создадим такого же пользователя в виртуальном окружении:
/usr/local/bin/addjailuser /home/chroot/var/www /bin/false apache
Как теперь попасть в новое окружение? Выполните команду:
chroot /home/chroot
Вы окажетесь в новом окружении. Только учтите, что большинство команд здесь не работает. Так, например, мы не установили в виртуальное окружение программу МС, поэтому вы не сможете ею воспользоваться. Чтобы убедиться, что вы находитесь в виртуальном окружении, выполните
команду:
Is -al /etc
Вы увидите всего несколько файлов, и это лишь малая часть того, что доступно в реальном каталоге /etc. Можете просмотреть файл /etc/passwd; в нем
будут только пользователи виртуального окружения. Если злоумышленник взломает его, то он получит только эти данные и сможет уничтожить только содержимое каталога /home/chroot. Вся остальная файловая система останется целой и невредимой.
Для запуска httpd нужно выполнить в виртуальном окружении команду:
/usr/sbin/httpd. Таким образом, можно перевести в окружение chroot все необходимые Web-серверу программы, в том числе и MySQL. Если исходить из правила, что ошибки есть в любой программе, вы должны быть готовы к тому, что вашу систему когда-нибудь взломают. Даже если это произойдет, хакер не сможет получить доступ к вашей реальной файловой системе и не нарушит работу сервера, но он сможет нарушить работу Web.
 
 

Что-то не получается? Не понятна какая-то часть кода? Напишите комментарий об этом и мы обязательно Вам все объясним!
Обязательно напишите отзыв о программе / учебнике. Для выражения благодарностей есть кнопка:


Своё Спасибо, еще не выражали.
 
  Просьбы перезалить в комментариях принимаются
 
 (голосов: 2)
 
 
 
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
 
  Другие коды по теме:  
 
  • Доступ к базе данных с помощью PHP
  • Симметричное шифрование в PHP
  • Получение списка файлов
  • Защита от изменения формы
  • Рекурсионное зацикливание на linux
  •  
    Комментарии (0) Распечатать




    © 2008 - 2010. Копирование материалов запрещено!
    Мой аккаунт
     
    Логин
    Пароль
     
     
     
    Опрос
     
    Чего нам не хватает?

    Ничего, все прекрасно и так!
    Другого дизайна
    Больше кодов
    Больше комментариев
    Посещаемости
    Дополнительных сервисов для удобства пользователей
    Другое (напишите, пожалуйста, что)
     
     
    Друзья
     
    serial, crack, keygen
    cool-archive.ru
    ABC-IT.lv - истиному ИТишнику!
     
     
    Архив кодов
      Август 2011 (1)
    Июль 2011 (4)
    Июнь 2011 (3)
    Апрель 2011 (2)
    Февраль 2011 (5)
    Январь 2011 (3)
     
     
     
    Реклама