ModSecurity , иногда называемый Modsec , является брандмауэром с открытым исходным кодом веб-приложений (WAF). Первоначально разработанный как модуль для HTTP-сервера Apache, он эволюционировал, чтобы предоставить массу возможностей фильтрации запросов и фильтров Hypertext Transfer Protocol наряду с другими функциями безопасности на нескольких разных платформах, включая Apache HTTP Server , Microsoft IIS и NGINX . Это бесплатное программное обеспечение,выпущенное под лицензией Apache 2.0.
Платформа предоставляет язык конфигурации правил, известный как «SecRules» для мониторинга в реальном времени, регистрации и фильтрации сообщений протокола Hypertext Transfer Protocol на основе пользовательских правил.
Хотя это не единственная конфигурация, ModSecurity чаще всего развертывается для обеспечения защиты от общих классов уязвимостей с использованием набора правил OWASP ModSecurity Core Rule Set (CRS). Это набор правил с открытым исходным кодом, написанный на языке SecRules ModSecurity. Проект является частью OWASP , проекта Open Web Application Security.
Для обнаружения угроз механизм ModSecurity развертывается встроенным в веб-сервер или в качестве прокси-сервера перед веб-приложением. Это позволяет движку сканировать входящий и исходящий HTTP- поток данных. В зависимости от конфигурации правила движок будет решать, как следует обрабатывать связь, которая включает в себя возможность передавать, удалять, перенаправлять, возвращать определенны код состояния, выполнять пользовательский скрипт и многое другое.
В целом ModSecurity помогает блокировать возможность использования существующих уязвимостей сайта и предотвратить его взлом.
Устраняем уязвимость веб приложения
Скачаем исходные коды nginx и modsecurity, которые понадобятся для сборки
cd /tmp wget https://nginx.org/download/nginx-1.9.15.tar.gz wget https://www.modsecurity.org/tarball/2.9.1/modsecurity-2.9.1.tar.gz gunzip -c nginx-1.9.15.tar.gz | tar xvf nginx-1.9.15.tar.gz gunzip -c modsecurity-2.9.1.tar.gz | tar xvf modsecurity-2.9.1.tar.gz yum -y install gcc make automake autoconf libtool pcre pcre-devel libxml2 libxml2-devel curl curl-devel httpd-devel
Сборка и установка
Конфигурируем режим работы modsecurity и затем собираем nginx с этим модулем
cd modsecurity-2.9.1/ ./configure --enable-standalone-module make cd ../nginx-1.9.15/ ./configure --add-module=../modsecurity-2.9.1/nginx/modsecurity make && make install
Первоначальная настройка
Применяем реккомендуемые конфигурации по умолчанию
cp /tmp/modsecurity-2.9.1/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity.conf cp /tmp/modsecurity-2.9.1/unicode.mapping /usr/local/nginx/conf/
Далее для включения возможностей использования модуля необходимо добавить в /usr/local/nginx/conf/nginx.conf в раздел “location /” строки
ModSecurityEnabled on;
ModSecurityConfig modsecurity.conf;
В файле конфигурации это выглядит так:
location / { ModSecurityEnabled on; ModSecurityConfig modsecurity.conf; }
Запуск
Запуск модно произвести двумя способами
servise nginx start
или
/usr/local/nginx/sbin/nginx
Локальная проверка
wget localhost cat index.html
Настройка фаервола
iptables-save > iptab
Редактируем правила
vi iptab
Добавляем после правила разрешения ssh
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
Применяем изменения
iptables -F; iptables-restore < iptab
Проверяем
Браузером или с помощью curl
Получение рабочей копии owasp
Скачиваем правила OWASP и копируем в конфигурацию веб сервера nginx
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git cd owasp-modsecurity-crs/ cp rules /usr/local/nginx/conf/ cp crs-setup.conf.example /usr/local/nginx/conf/crs-setup.conf
Подготовка файла правил:
За основу берем подготовленный пример правил:
cd /usr/local/nginx/conf cd rules mv REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf mv RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf
cd .. > modsecurity.conf cat crs-setup.conf > modsecurity.conf cat rules/*.conf >> modsecurity.conf
Редактируем файл конфигурации:
vi modsecurity.conf
добавляем строки в начале
SecAuditLog /usr/local/nginx/logs/modsec_audit.log - файл аудита SecRuleEngine On - включение фильтра SecDefaultAction "phase:1,deny,log" - что делаем с нарушителями - в лог и блокируем SecServerSignature GeekFlare - подпись сервера в заголовках SecDataDir /tmp
Далее выполняем
Перезапуск nginx
service nginx restart
или
killall nginx /usr/local/nginx/sbin/nginx
При работе правил записи вносятся в фалы журналов
/usr/local/nginx/logs/modsec_audit.log - записи аудита /usr/local/nginx/logs/error.log - тут отчет фильтра с пометкой “ModSecurity”
Проверки:
при нелегальном запросе должно выдавать 403 ошибку!
/aphpfilethatdonotexist.php?something=../../etc
при обращении по ИП сайта
Так же вы можете запустить бесплатное сканирование на уязвимости
https://pentest-tools.com до и после и сравнить результат
Хотите защитить свой сайт от уязвимости, тогда обращайтесь к нам [email protected]