Установка и настройка modsecurity 2

Про безопасность в интернет сказано уже пожалуй все. :-) И про методы защиты сервера, и про детекторы вторжений и про фаерволы, и про необходимость постоянного мониторинга уязвимостей в программном обеспечении и так далее. Все это верно, и все это правильно. Но в данной заметке я хочу описать один из наиболее эффективных инструментов для предотвращения атак на HTTP. Так называемый HTTP firewall. Это модуль для apache: modsecurity версии 2. Насчет установки и настройки предыдущей версии modsecurity есть очень хорошая статья Защита Web приложений с помощью Apache и mod_security. Но с тех пор вышла новая, полностью переписанная версия, которая имеет значительное количество усовершенствований. Одним из самых важных усовершенствований можно назвать пять фаз обработки пакетов. Это заголовок запроса, тело запроса, заголовок ответа, тело ответа, а также регистрация.

Итак, приступим!

Сайт модуля modsecurity находится по адресу http://www.modsecurity.org/ Версия modsecurity 2 работает только для apache 2.x. Для apache 1.3.x можно использовать только modsecurity 1.
Заходим в нашу любимую консоль и выполняем:
cd /usr/local/src
wget http://www.modsecurity.org/download/modsecurity-apache_2.1.1.tar.gz
tar zxvf modsecurity-apache_2.1.1.tar.gz
cd modsecurity-apache_2.1.1/apache2
теперь нам необходимо отредактировать файл Makefile. Его нужно подогнать под наш дистрибутив, а именно изменить строку: top_dir = /apps/apache22 на другую строку. В top_dir должен быть прописан тот же путь что и в файле httpd.conf нашего сервера apache. Узнать путь можно например вот так:
cat /etc/httpd/conf/httpd.conf | grep ServerRoot
И в выводе команды видно что наш путь /etc/httpd
Таким образом в файле Makefile меняем строку top_dir = /apps/apache22 на top_dir = /etc/httpd
При необходимости можно отключить поддержку xml. Просто в некоторых дистрибутивах сталкивался с многочисленными ошибками при попытке компиляции модуля вместе с xml. Для отключения поддержки xml делаем:
Ищем строку
DEFS = -DWITH_LIBXML2
и меняем на
# DEFS = -DWITH_LIBXML2
то есть комментируем ее. Таким образом мы выключили поддержку XML.
Сохраняемся и выходим.
Для успешной компиляции и работы нашего модуля нам необходимо доставить еще несколько пакетов. Это httpd-devel и libxml2.
Ставим:
yum install httpd-devel
yum install libxml2* это если поддержка xml не была отключена
после чего наконец-то компилируем modsecurity. Пишем:
make
Останавливаем apache:
service httpd stop
и уcтанавливаем модуль куда надо:
make install
Все на этом наш модуль modsecurity 2 установлен.
Теперь нам необходимо скачать правила для modsecurity 2.
Для этого нам необходимо создать каталог где мы будем хранить правила. Удобно это сделать в папке /etc/httpd/conf/modsecurity. Создаем каталог.
mkdir /etc/httpd/conf/modsecurity
Переходим туда, скачиваем и распаковываем:
cd /etc/httpd/conf/modsecurity
http://www.modsecurity.org/download/modsecurity-core-rules_2.1-1.4.tar.gz
tar zxvf modsecurity-core-rules_2.1-1.4.tar.gz
На этом правила для modsecurity 2 установлены.
Далее пойдет настройка.
Для работы modsecurity 2 также необходим модуль apache mod_unique_id.so. Загрузку модуля необходимо прописать в /etc/httpd/conf/httpd.conf. А также в том же файле необходимо прописать загрузку модуля mod_security2.so и модуля libxml2.so если не отключали поддержку xml. Ну и, конечно, необходимо прописать загрузку наших правил для modsecurity 2.
Открываем файл /etc/httpd/conf/httpd.conf, ищем чисто из эстетических соображений место где у нас грузятся модули для apache (хотя в общем то можем прописать где угодно) и там прописываем следующие строки:

LoadModule unique_id_module modules/mod_unique_id.so
LoadFile /usr/lib/libxml2.so
LoadModule security2_module modules/mod_security2.so
Include /etc/httpd/conf/modsecurity/*.conf

Сохраняемся, и перезапускаем сервер apache:
service httpd restart

И наслаждаемся улучшенной защитой нашего сервера. Насладится можно в лог файлах /var/log/httpd/modsec_audit.log
и /var/log/httpd/modsec_debug.log
Для введения более жестких правил для modsecurity 2 необходимо переписать правила в каталоге /etc/httpd/conf/modsecurity. Там же присутствует подкаталог blocking. Вот файлы из него и нужно переписать поверх тех, которые присутствуют в каталоге /etc/httpd/conf/modsecurity. Например вот так:
cp -f --reply=yes /etc/httpd/conf/modsecurity/blocking/* /etc/httpd/conf/modsecurity/

На этом моя краткая заметка по установке и базовой настройке такого замечательного инструмента как modsecurity 2 заканчивается. Надейсь что кому-нибудь она пригодится. Как всегда жду Ваших замечаний и отзывов.

спасибо за статейку! она

спасибо за статейку! она довольно хорошо написана, доступно, только меня еще интересует настройка модуля в cPanel, а то собираешь так по интернету кусками инфу, вот только блог нашел https://shneider-host.ru/blog/cpanel-modul-modsecurity.html, но это и все. хочется, чтоб кто-то все таки помог мне, а то сам я не могу настроить!((

To Baxtiyor: К сожалению для

To Baxtiyor:
К сожалению для такого проекта просто нет времени сейчас. :-(

Если не будет трудно то

Если не будет трудно то помогите более защитить новую узбекскую платежную систему которая скоро выйдет на свет. Дайте более лучшую систему безопасности. Спасибо. e-mail: baxtiyor@yandex.ru

Спасибо за добрые слова! Но

Спасибо за добрые слова! Но еще раз хочу сказать, что в заметке рассмотрена базовая установка этого замечательного пакета. На самом деле возможностей у него значительно больше.

Нигде не смог найти более

Нигде не смог найти более удобный и практичный пример установки modsecurity спасибо большое автору.