Межсетевое экранирование

Встроенные действия


pass

Позволяет запросу продолжать анализироваться на соответствие фильтру. Данное действие используется, когда нужно занести в лог информацию о запросе, но никаких других действий выполнять не требуется.

SecFilter KEYWORD "log, pass"

allow

Это усиленная версия предыдущего фильтра. После того как данное действие выполнится, запрос далее не будет проходить через другие фильтры. Например, завершение обработки запроса, пришедшего с рабочей станции администратора:

SecFilterSelective REMOTE_ADDR "^192\.168\.2\.99$" allow

deny

Прерывает обработку запроса, который соответствует фильтру. Если не используется действие status, ModSecurity возвращает код ошибки HTTP 500. Если запрос запрещен, заголовок mod_security_action будет добавлен в список заголовков запроса. Данный заголовок будет содержать используемый код статуса.

status

Использует указанный код статуса НТТР при прерывании запроса. Пример:

SecFilter KEYWORD "deny, status:404"

Будет возвращать ответ "Page not found" при соответствии фильтру. Директива Apache ErrorDocument будет использована, если она присутствует в конфигурации. Следовательно, если имеется заранее определенная страница для сообщения об ошибке для данного статуса, она будет выполняться, и ее выходные значения будут показаны пользователю.

redirect

При соответствии фильтру происходит перенаправление запроса пользователя на данный URL. Например:

SecFilter KEYWORD "redirect:http://www.modseciruty.org"

Данная конфигурационная директива всегда перекрывает код статуса НТТР или ключевое слово deny.

proxy

При соответствии фильтру запрос попускается через внутренний реверсный прокси.

SecFilter KEYWORD "proxy:http://www.example.ru"

Для выполнения данного действия должен быть инсталлирован mod_proxy.



exec

При соответствии происходит выполнение бинарного файла. Требуется указывать полный путь к этому бинарному файлу.

SecFilter KEYWORD "exec:/home/my/report-attack.pl"


Данная директива не влияет на первичное действие, если оно существует. Данное действие всегда вызывает скрипт без параметров, но предоставляя всю информацию через окружение. Можно использовать все обычные CGI-переменные окружения.

На каждый фильтр можно иметь только один выполняемый бинарный файл. Выполнение будет добавлять заголовок mod_security-executed в список заголовков запроса.

Замечание. Выполняемый скрипт должен что-либо записать в stdout. Если он этого не делает, то ModSeciruty предполагает, что скрипт не работает.

log

При соответствии фильтру информация заносится в error log Apache.

nolog

Не заносится ничего в лог при соответствии фильтру.

skipnext

Данное действие позволяет пропустить одно или более правил. Это используется, когда установлено, что нет необходимости выполнять некоторые проверки для конкретного запроса. По умолчанию действие пропускает следующее правило. Можно перепрыгнуть через несколько правил, если указать дополнительный параметр.

SecFilterSelective ARG_p value1 skipnext:2 SecFilterSelective ARG_p value2 SecFilterSelective ARG_p value3

chain

Правило позволяет создавать цепочку из нескольких правил для получения большего теста. Только последнее правило в цепочке будет воздействовать на запрос, но для того чтобы его достигнуть, для всех правил до него также должно выполняться соответствие. Приведем пример того, как можно использовать данную возможность.

Предположим, что необходимо ограничить аккаунт администратора, чтобы он мог заносить в лог информацию, войдя только с определенных IP-адресов. Однако панель входа администратор разделяет с другими пользователями, поэтому нельзя использовать стандартные возможности Apache. Следует применить следующие два правила:

SecFilterSelective ARG_username admin chain SecFilterSelective REMOTE_ADDR "!^YOUR_IP_ADDRESS_HERE$"

Для первого правила выполняется соответствие только тогда, когда существует параметр username, и его значение есть admin. Только при этом будет выполняться второе правило, которое проверяет соответствие удаленного адреса в запросе с указанным IP-адресом.


Если соответствие не выполняется ( так как указан восклицательный знак перед адресом), запрос отвергается.

pause

Указывается количество миллисекунд перед тем, как будет выдан ответ на запрос. Используется для того, чтобы замедлить или полностью остановить некоторые web-сканеры.

auditlog

Занесение информации о транзакции в лог аудита.

noauditlog

Информация о транзакции не заносится в лог аудита.

id, rev, msg, severity

Существует четыре действия, имеющие один параметр, который затем передается в каждое лог-сообщение. Идея состоит в том, чтобы дать возможность классифицировать проблемы и поместить эту информацию в лог.



  • id – уникальный ID правила.


  • rev – пересмотр правила; если опущено, то предполагается 1; всякий раз, когда правило изменяется, значение пересмотра должно быть увеличено.


  • msg – текстовое сообщение, которое появляется в логах ошибок.


  • severity – целое значение или имя, как определено syslog. Могут использоваться следующие уровни: 2 (большая строгость), 3 (средняя строгость), 4 (маленькая строгость) и 5 (нормальная, но важная). Уровни 0-1 и 5-7 могут применяться только конечными пользователями для своих целей.



    • 0 EMERGENCY – система не используется.


    • 1 ALERT – действие должно быть выполнено немедленно.


    • 2 CRITICAL – критичные условия.


    • 3 ERROR – ошибочные условия.


    • 4 WARNING – предупреждающие условия.


    • 5 NOTICE – нормальные, но важные условия.


    • 6 INFO – информационное.


    • 7 DEBUG – сообщение отладочного уровня.




Замечание. Данные действия могут использоваться только в отдельном правиле или в правиле, которое начинает цепочку.

Хотя id действия может содержать произвольный текст, рекомендуется, чтобы были задействованы только целые числа.

mandatory

Данное действие можно использовать для того, чтобы пометить правило или цепочку правил для обязательного наследования в подконтекстах.

Замечание. Действие может применяться только для отдельного правила или в начале цепочке.

SecFilter 111 mandatory

Или

SecFilter 111 mandatory, chain SecFilter 222

setenv, setnote

Данные два действия устанавливают и удаляют поименованную переменную окружения или Apache. Существует три формата, которые могут использоваться.

Указание имени и значения:

SecFilter KEYWORD setenv:name=value

Указание только имени, значение предполагается равным "1":

SecFilter KEYWORD setenv:name

Удаление существующей переменной указывается с помощью восклицательного знака перед именем переменной:

SecFilter KEYWORD setenv:!name


Содержание раздела