Наиболее распространенным языком для создания веб-сайтов можно смело считать php. Но мало использовать его, нужно еще и правильно настроить. Настройка php на сервере обеспечит не только безопасность, но и увеличит скорость работы сайтов.
Пользователем github из Германии - perusio опубликован скрипт на awk+bash, который автоматически приводит настройки php в соответствие с ресурсами сервера, включая улучшения безопасности.
Рассмотрим более подробно, что же из себя представляет этот скрипт, его установку и варианты использования.
Итак, скрипт предназначен для более тонкой настройки параметров php для работы как “боевого” сайта - production, так и для разработки - development.
В процессе разработки сайта нужно получать вывод различных ошибок как в лог-файлы, так и при открытии страниц сайта. Тогда как на “боевом” сайте вывод ошибок на экран окажется не только некрасивым, но и небезопасным. С помощью этих данных можно узнать:
- путь до скриптов сайта
- какие установлены и включены php-расширения
- какие настройки используются для сайта
- и тому подобное для проведения атак
Какие настройки PHP изменяются и зачем?
Скрипт изменяет следующие настройки:
- Логирование ошибок. Для “боевого” сайта все ошибки отправляются в syslog, для разрабатываемого - выводятся на страницы сайта
- Использование PHP. Не выводятся данные об использовании php
- zlib-сжатие и ее уровень. Если доступно, используется zlib с уровнем сжатия 1.
- Ограничение памяти. 512МБ
- Максимальный размер запроса и максимальный размер файлов.
- Параметр cgi.fix_pathinfo устанавливается равным 0. Сделано для того, чтобы не транслировать автоматически pathinfo. Но к этому параметру следует отнестись внимательней. К примеру, Drupal не использует PATHINFO, но Wordpress - да.
- Не позволять открывать файлы по прямой ссылке для функций fopen или include. Только те файлы, что доступны веб-серверу или FastCGI-обработчику в файловой системе. Никаких внешних ресурсов.
- Запрет обработки кукисов через DOM, например с помощью JavaScript. Все современные браузеры поддерживают флаг httponly, IE6, IE7 и IE8 так же поддерживают его.
- Настройка дополнительной энтропии для генерации токенов сессий с использованием аппаратного генератора чисел /dev/urandom. Требуется php не ниже 5.3.
Установка и использование
Для использования этого скрипта выполните ряд несложных действий:
Склонируйте git-репозитарий или скачайте текущую версию кода и поместите на сервер
Запустите шелл-скрипт php_cleanup. Он поддерживает использование трех параметров:
- production / development - указание “боевой” или разрабатываемый сайт
- ограничение памяти для PHP. По умолчанию - 512МБ
- путь до файла php.ini. По умолчанию ищется в той же директории, где запущен скрипт.
Примеры использования
Произвести обработку php.ini для “боевого” сайта, запустив скрипт в той же директории, где расположен php.ini:
php_cleanup -p
Произвести обработку php.ini для разрабатываемого сайта, запустив скрипт в той же директории, где расположен php.ini:
php_cleanup -d
Произвести обработку php.ini для “боевого” сайта, работающего на php-fpm, указав месторасположение php.ini (по умолчанию, пример для Debian):
php_cleanup -p /etc/php5/fpm/php.ini
Произвести обработку php.ini для “боевого” сайта, работающего на php-fpm, указав месторасположение php.ini (по умолчанию, пример для Debian) и установив ограничение памяти в 2Гб:
php_cleanup -p -m 2G /etc/php5/fpm/php.ini