Библиотека сайта rus-linux.net
Безопасная эксплуатация Apache, часть 11: использование журналов событий и других средств
Оригинал: Securing Apache, Part 11: Logs, et al.Автор: Arpit Bajpai
Дата публикации: 1 Сентября 2011 г.
Перевод: А.Панин
Дата перевода: 13 Февраля 2013 г.
Другие пути повышения безопасности Apache
Использование модуля mod_parmguard
Несомненно, самый полезный модуль Apache, mod_paramguard
(модуль защиты параметров) исследует передаваемые формы в поисках некорректных значений параметров. В составе этого модуля имеется сценарий, который обходит ваше веб-приложение, создавая профиль с описанием всех используемых форм. Вы можете использовать этот профиль напрямую или, вместо этого, подкорректировать его, добавив лучшее определение параметров. Например, с помощью сценария может быть установлено, что параметр может принимать только числовые значения, но вы можете ограничить диапазон этих значений от 1 до 5.
Настройка модуля с точки зрения сервера Apache крайне проста, так как поддерживаются только три директивы. Важной частью является файл настроек модуля, который использует язык разметки XML и является сердцем модуля mod_parmguard
. Модуль mod_parmguard
поддерживает только две директивы уровня сервера (ParmguardConfFile
и ParmguardTrace
) и одну директиву расположения (ParmguardEngine
).
ParmguardConfFile
устанавливает расположение файла настроек модуля. В данном случае /usr/local/apache2/conf/mod_parmguard.xml
:
<IfModule mod_parmguard.c> ParmguardConfFile /usr/local/apache2/conf/mod_parmguard.xml </IfModule>
mod_parmguard.xml
хотя бы с минимальным количеством настроек. Пример такого файла приведен ниже:
<?xml version="1.0"?> <!DOCTYPE parmguard SYSTEM "mod_parmguard.dtd"> <parmguard> <!-- requested action when there is a mismatch --> <global name="scan_all_parm" value="1"/> <global name="illegal_parm_action" value="accept,log,setenv"/> </parmguard>
На данный момент не стоит беспокоиться о параметрах, описанных в данном файле. Вы также должны помнить о том, что следует скопировать файл mod_parmguard.dtd
в ту же директорию, что и файл mod_parmguard.xml
, иначе не сможет быть произведен разбор XML-файла и сервер Apache не будет запущен.
ParamguardTrace
используется в том случае, когда у вас возникают проблемы с модулем и вы хотите понять причину этих проблем. Единственным доступным является параметр debug. Например:
<IfModule mod_parmguard.c> ParmguardTrace debug ParmguardConfFile /usr/local/apache2/conf/mod_parmguard.xml </IfModule>
Сообщения отладки будут сохраняться в журнале ошибок Apache.
ParamguardEngine
устанавливает область применения модуля. Эта директива должна использоваться внутри элемента <Location>
файла httpd.conf
(в случае расположения вне этого элемента, от ее использования не будет никакого эффекта). Например:
<Location /cgi-bin/> ParmguardEngine on </Location>
httpd.conf
должны быть внесены изменения для настройки модуля, аналогичные приведенным ниже:
<IfModule mod_parmguard.c> #ParmguardTrace debug ParmguardConfFile /usr/local/apache2/conf/mod_parmguard.xml </IfModule> <Location /cgi-bin/> #ParmguardEngine on </Location>
Примечание: Директива ParmguardEngine закомментирована, так как до этого момента не было установлено подходящего фильтра.
|
Сокрытие версии Apache и другой важной информации
httpd.conf
:
ServerSignature Off ServerTokens Prod
ServerSignature
отвечает за вывод информации о сервере внизу страниц, генерируемых Apache, таких, как страницы ошибок 404, списки содержимого директорий, и.т.д. Директива ServerTokens
используется для указанию Apache того, что нужно выводить в параметре Server HTTP-заголовка ответа. После установки значения Prod
, параметр Server в HTTP-заголовке ответа будет выглядеть следующим образом:
Server: Apache
Убедитесь, что сервер не работает с файлами вне своей корневой директории
/web
), вам необходимо использовать следующие настройки:
<Directory /> Order Deny,Allow Deny from all Options None AllowOverride None </Directory> <Directory /web> Order Allow,Deny Allow from all </Directory>
Примечание: Так как мы установили директивы Options None и AllowOverride None, все параметры и переопределения не будут действовать в рамках сервера. Вам необходимо объявить их явно для каждой директории с помощью директив Option и Override .
|
Не стоит позволять Apache переходить по символьным ссылкам
Это также может быть сделано с помощью директивы Options
внутри элемента Directory
. В качестве параметра директивы Options
следует использовать либо None
, либо -FollowSymLinks
.
Разрешите доступ на чтение к файлам настройки и исполняемым файлам Apache только для пользователя root
/usr/local/apache
, это действие может быть выполнено с помощью следующих команд:
chown -R root:root /usr/local/apache chmod -R o-rwx /usr/local/apache
Позднее мы вернемся к рассмотрению вопросов безопасности и взлома в новых интересных статьях.
Всегда помните: нужно знать все о взломе, но не заниматься им.
К началу серии: "Безопасная эксплуатация Apache, часть 1: базовые понятия"