- PVSM.RU - https://www.pvsm.ru -
ModSecurity [1] — популярный бесплатный Web Application Firewall (WAF) с открытыми исходными кодами. Долгое время существовал только в виде модуля к веб-серверу Apache.
Позже, понимая, что мир меняется, разработчики сделали т.н. standalone реализацию, которую можно встроить в любое приложение. И хотя, библиотека всё еще в глубокой бете и целиком завязана на APR [2], некоторое время назад появилась версия modSecurity для IIS.
Сейчас схема фронтенд-бэкенд стала де-факто стандартом, и логично перенести функционал внешней безопасности приложения на фронтенд, что привело к необходимости запуска ModSecurity под, пожалуй, лучшим на сегодняшний день веб-сервере с функционалом реверс-прокси — Nginx [3].
Архитектура Nginx такова, что модули подключаются в момент компиляции, а вызов обработчиков может происходить на различных фазах обработки запроса. В данный момент в модуле реализована обработка GET и POST запросов, в том числе запросов с большим размером тела, что потребовало установки собственного location handler'а.
Из-за этого, схема подключения модуля выглядит так:
Без modSecurity:
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
proxy_pass http://localhost:8080;
}
С подключенным modSecurity:
location / {
// включаем модуль, в off будет слать запросы на location указанный в ModSecurityPass
ModSecurityEnabled on;
// конфиг mod_security, здесь подразумевается, что лежит рядом с nginx.conf
ModSecurityConfig modsecurity.conf;
//named location, на который уйдет запрос, успешно прошедший проверку
ModSecurityPass @backend;
}
location @backend {
// стандартный конфиг
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
proxy_pass http://localhost:8080;
}
Что реализовано в текущей версии:
Что не реализовано:
Модуль доступен в svn [4], отзывы, рекомендации, баг-репорты и патчи очень приветствуются.
Спасибо Игорю Сысоеву [5] и Валерию Холодову [6], авторам веб-сервера и дополнений, исходный код которых используется в модуле.
Автор: kyprizel
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/nginx/15875
Ссылки в тексте:
[1] ModSecurity: http://modsecurity.org
[2] APR: http://en.wikipedia.org/wiki/Apache_Portable_Runtime
[3] Nginx: http://www.nginx.org/
[4] доступен в svn: http://www.modsecurity.org/projects/modsecurity/nginx/index.html
[5] Игорю Сысоеву: http://sysoev.ru/
[6] Валерию Холодову: http://www.grid.net.ru/
Нажмите здесь для печати.