Я установил mod_security на свой сервер Ubuntu GNU / Linux, но когда я отправляю несколько простых запросов на веб-сервер, которые должны соответствовать даже самым простым правилам, я не вижу никаких предупреждений или каких-либо файлов журнала, которые должны были существовать в / var / log / apache2. Что мне не хватает?
Прежде чем продолжить, вот детали моей системы:
$ apache2ctl -t -D DUMP_MODULES | grep secu
Syntax OK
security2_module (shared)
$ sudo lsof | grep mod_security
apache2 12773 root mem REG 202,0 268828 50225 /usr/lib/apache2/modules/mod_security2.so
apache2 15287 www-data mem REG 202,0 268828 50225 /usr/lib/apache2/modules/mod_security2.so
apache2 15288 www-data mem REG 202,0 268828 50225 /usr/lib/apache2/modules/mod_security2.so
...
А вот соответствующая часть из моего /etc/apache2/apache2.conf:
<IfModule mod_security2.c>
# Basic configuration options
SecRuleEngine On
SecRequestBodyAccess On
SecResponseBodyAccess Off
# Handling of file uploads
# TODO Choose a folder private to Apache.
# SecUploadDir /opt/apache-frontend/tmp/
SecUploadKeepFiles Off
# Debug log
SecDebugLog /var/log/apache2/modsec_debug.log
SecDebugLogLevel 3
# Serial audit log
SecAuditEngine RelevantOnly
SecAuditLogRelevantStatus ^5
SecAuditLogParts ABIFHZ
SecAuditLogType Serial
SecAuditLog /var/log/apache2/modsec_audit.log
# Maximum request body size we will
# accept for buffering
SecRequestBodyLimit 131072
# Store up to 128 KB in memory
SecRequestBodyInMemoryLimit 131072
# Buffer response bodies of up to # 512 KB in length
SecResponseBodyLimit 524288
# Configure default blocking policy
# see ModSecurity Handbook, p. 175
#
#SecDefaultAction "phase:1,log,auditlog,pass"
Include /etc/apache2/modsecurity-crs_2.0.6/*.conf
Include /etc/apache2/modsecurity-crs_2.0.6/base_rules/*.conf
SecFilter "/bin/"
SecFilter "/cgi-bin" "deny,log,status:500"
# By default log and deny suspicious requests
# with HTTP status 500
SecFilterDefaultAction "deny,log,status:500"
</IfModule>
Поэтому я ожидаю, что если я попытаюсь посетить свой веб-сайт и отправить запрос, который соответствует одному из фильтров, которые я объявил выше, используя SecFilter или что-нибудь, что соответствует базовым правилам и т.д., то я увижу что-то в этих файлах:
/var/log/apache2/modsec_debug.log
/var/log/apache2/modsec_audit.log
право?
Однако эти файлы не существуют, что бы я ни пытался:
http://www.myserver.com/cgi-bin
http://www.myserver.com/index.html?q=/cgi-bin
http://www.myserver.com/bin
http://www.myserver.com/index.html?q=/bin
http://www.myserver.com/index.html?q=/bin/
Почему я не вижу никаких modsec_debug.log или modsec_audit.log в / var / log / apache2? Я тоже не получаю статус 500 с сервера. Все, что я вижу из приведенных выше запросов, - это несколько записей в файле error.log в / var / log / apache2, в которых говорится, что запрошенные мной файлы не были найдены, но никаких предупреждений, созданных mod_security, не было.
Что мне не хватает?
Мне стыдно! Я поставил директивы конфигурации мода-безопасности перед (а не после):
# Include module configuration:
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
так что модуль mod-security фактически не загружался! Теперь, когда я разместил директивы mod-security ниже их загружается mod-security, и он записывается в соответствующие файлы. Задача решена.
коснитесь /var/log/apache2/modsec_debug.log chown apache_user: apache_user /var/log/apache2/modsec_debug.log
SecAuditEngine RelevantOnly to SecAuditEngine On