В качестве части нашего “целостного” подхода к безопасности мы хотим, чтобы веб-серверы и PHP были настроены так, как следует. Мы не сможем во всем объеме показать, как защитить каждый веб-сервер или расширение PHP, которые могут понадобиться именно вам, но, по крайней мере, мы очертим некоторые основные направления исследований и дадим некоторые основные советы и предположения.
Следите за обновлениями ПО
Это один из самых простых способов защиты системы. Необходимо следить, что у вас работает самая свежая и безопасная версия ПО. Для PHP, Apache HTTP Server и Microsoft Internet Information Server (IIS) это означает, что нужно достаточно регулярно заходить на соответствующий веб-сайт (http://www.php.net , httpd.apache.org, или www.microsoft.com/iis ) и просматривать советы по безопасности, следить за появлением новых выпусков и просматривать список новых возможности, среди которых могут оказаться и необходимые исправления.
Установка новой версии
Инсталляция и настройка некоторых из этих программ могут потребовать значительного времени на выполнение существенного количество шагов. Особенно это касается Unix, где инсталляция выполняется из исходных кодов, и может понадобиться вначале установить дополнительные программы, а затем не запутаться в большом количестве ключей командной строки, чтобы включить все нужные и выключить все ненужные модули и расширения.
Это важно: напишите себе небольшой “сценарий” инсталляции, т.е. действия, которые нужно выполнить для установки новой версии ПО. Так вы точно не забудете чего-нибудь важного, что может негативно сказаться в последующем. Количество шагов обычно настолько велико, что вряд ли наш мозг запомнить все необходимые нюансы, которые нужно учитывать при каждой инсталляции.
Развертывание новой версии
Первая инсталляция никогда не должна выполняться на производственном сервере. Необходимо сначала опробовать все детали на тестовом сервере, на который следует устанавливать новые программы и веб-приложения и проверять их работоспособность. Это особенно верно для таких языковых интерпретаторов, как PHP, где отдельные стандартные параметры меняются от версии; поэтому абсолютно необходимо выполнить последовательность проверок, чтобы проверить, что новая версия не имеет нежелательных эффектов относительно вашего предложения.
Нет необходимости тратить тысячи долларов на новый компьютер, чтобы опробовать установку и настройку ПО. Есть много программ, которые позволяют поработать в другой операционной системе, не выходя из вашей –например, VMware компании VMwaer или VirtualPС компании Microsoft.
И только после проверки, что новая версия ПО отлично работает с вашим веб-приложением, ее можно развертывать на производственных серверах. Здесь нужно, чтобы этот процесс был либо полностью автоматизированный, либо, опять таки, записан на бумаге (или в файле), чтобы выполнить в точности ту же самую последовательность шагов и получить такую же серверную среду. На работающем сервере потребуется выполнить ряд завершающих тестов, чтобы удостовериться, что действительно работает так как надо.
Компиляция -> Тестирование -> Развертывания
Компиляция:
- Создать сервер
- Создать PHP
- Настройки конфигурационные файлы
- Настроить документы
Тестирование:
- Проверить работоспособност
- Выполнить тестовые утилиты
- Выполнить тестирование модулей
- Выполнить стрессовые тестирование
Развертывания:
- Скопировать на сервер
- Проверить работоспособность
- Выполнить тестирование модулей
- Выполнить стрессовые тестирование
- Выполнить специальные проверки
Просмотр файла php.ini
Если вы еще не удосужились пролистать файл php.ini то сейчас самое время загрузить его в текстовый редактор и просмотреть содержимое. Для большинство элементов данного файла приведены понятные комментарии с описанием применения этих элементов.
Кроме того они собраны в группы по областям применения и именам расширений: имена всех настроечных параметров mbstring начинается с mbstring, а имена параметров относиться к сеансом, имеют префикс session.
В файле присутствует большое количество настоечных параметров для модулей, которые нам никогда не придется использовать, и если эти модули отключены, то не стоить и думать об этих параметрах – они будут просто игнорироваться. Но для тех модулей, которые будут использоваться, необходимо прочитать онлайновом руководстве по PHP здесь о параметрах этих расширений и их возможных значениях.
Здесь также настоятельно рекомендуеться либо регулярно создавать резервные копии файла php.ini, либо записывать все выполненные изменения, чтобы при инсталляции новых версий в нем присутствовали все нужные значения.
С этим параметром связан один нюанс: если вам придется использовать старое ПО, написанное на PHP, то оно может затребовать включения параметров register_globals или register_long_arrays. В этом случае предстоит решить, стоит ли пользоваться этим ПО и подвергать систему риску безопасности. Этот риск можно минимизировать, если почаще интересоваться наличием исправления безопасности и других обновлений для такого ПО.
Apache HTTP Server
Сервер httpd поставляется с довольно разумными значениями по умолчанию, но есть некоторые моменты, которые лучше перепроверить, прежде чем запустить сервер в производственной среде. Все конфигурационные параметры находиться в одном файле по имени httpd.conf который обычно расположен (т.е. /usr/local/apache/conf или C:\Program Files\Apache Software Foundation\Apache2.2\conf). Обязательно прочтите разделы, касающиеся безопасности, в онлайновой документации на сервер здесь.
Кроме того необходимо выполнить описанные ниже действия.
- Проверьте, что httpd выполняется от имени пользователя без полномочий суперпользователя (вроде nobody или httpd в Unix). Этим управляют параметры User и Group в файле httpd.conf .
- Проверьте, что правильно заданы права доступа для каталога инсталляции Apache. В Unix у всех каталогов, кроме корневого каталога документов (по умолчанию этот подкаталог /httpd.conf ) должен быть указаны владелец root и права доступа 755.
- Проверьте, что сервер настроен на обработку верного количество подключений. Для пользователей httpd версий 1.3х в параметре MaxClients следует указать разумное количество одновременно обрабатываемых клиентов. Обычно годиться стандартное значения 150, но если ожидаться серьезная нагрузка, то это количество можно увеличить. В Apache версий 2.х поддерживается многопоточность, поэтому необходимо проверить значение ThreadsPerChild (вполне годиться значения стандартное значения 50).
- Скроите файлы, которые не предназначены для посторонних глаз, с помощью соответствующих директив в файле httpd.conf. Например, для исключения из поля видимости файлов с расширением .inc нужно добавить следующие строки:
<Files ~”\.inc$”>
Order allow, deny
Deny from all
Microsoft IIS
Для настроики IIS не нужно редактировать файлы с параметрами как Apache HTTP Server, но для защиты инсталляции IIS все таки нужно предпринять ряд действий.
- Старайтесь не размещать веб-сайты на том же логическом диске, что и операционная система.
Используйте файловую систему NTFS и удалите разрешения на запись там, где они не нужны. - Удалите все файлы, которые устанавливает по умолчанию IIS в корневой каталог документов. Скорее всего, большинство этих файлов (если не все) не понадобятся. Большой объем информации содержится в каталоге \inetpub, который вам не нужен, если вы не используете онлайновые средства настройки (а вы не должны ими пользоваться – вместо них лучше применяйте утилиту iisadmin).
- Старайтесь не использовать общепринятые имена. Существует много автоматизированных средств, которые пытаются найти сценарии и программы в распространенных подкаталогов корневого каталога документов: \Scripts, \cgi-bin, \bin и т.д.
Вот и все! Спасибо за внимание!