ModSecurity: доступ запрещен с кодом 406 в apache

Приведенная ниже ошибка генерировалась при добавлении публикации на веб-страницу кода, разработанного PHP.

[error] [client 1192.168.0.1] ModSecurity: Access denied With code 406(phase 2). Pattern match "(?:\\b(?:\\.(?:ht(?:access|passwd|group)|www_?acl)|global\\\.asa|httpd\\\.conf|boot\\\\.ini)\\\\b|\\\\/etc\\\\/|\\\\/root\\\\/|\\\\/public_html\\\\/)" at ARGS:content. [file "/usr/local/apache/conf/2.user.conf"] [line "134"] [id "1234123401"] [msg "Remote File Access Attempt"] [data "/etc/"] [severity "CRITICAL"] [tag "WEB_ATTACK/FILE_INJECTION"] [hostname "mydomain.com"] [uri "/admin/preview.php"] [unique_id "U36x7XyZeYcAAFVUXLsAAADC"]

Я нашел код из файла ниже:

vim /usr/local/apache/conf/modsec2.user.conf
"phase:2,capture,t:none,t:htmlEntityDecode,t:lowercase,ctl:auditLogParts=+E,deny,log,auditlog,msg:'Remote File Access Attempt',id:'1234123401',tag:'WEB_ATTACK/FILE_INJECTION',logdata:'%{TX.0}',severity:'2'"

Это безопасно, может mod_security будет отключен?


person lakshmikandan    schedule 24.05.2014    source источник


Ответы (1)


Как я вижу проблема в том, что в одном из параметров запроса к "/admin/preview.php" использовалась строка "/etc/", что выглядит как атака и поэтому правило с id 1234123401 заблокировано запрос.

Если это была атака, то ModSecurity сработала отлично.

Если бы это был законный запрос, который необходимо пройти через ModSecurity, можно было бы

1) Измените запрос, чтобы он не содержал строку "/etc/" в качестве значения параметра - возможно, PHP-скрипт должен быть адаптирован для этого

2) Измените регулярное выражение правила и удалите часть /etc/

3) Измените действие правила с отказа на пропуск

Я бы не стал использовать варианты 2 и 3, так как вы понизите уровень безопасности. Вместо этого я бы попытался пойти с вариантом один.

Лучший, Рональд

person Ronald    schedule 24.05.2014