Я новичок в ModSecurity, он отлично работает на сервере, но я хотел бы контролировать то, как он регистрирует вещи. Например, когда я пытаюсь устранить неполадки на своем веб-сайте, чтобы внести в белый список или исправить проблемы с кодированием php, чтобы получить чистый modsec_audit.log
когда все работает исправно я столкнулся со следующим.
Всякий раз, когда я запрашиваю URL-адрес, защищенный паролем, либо basic
или htdigest
аутентификация ModSecurity регистрирует это в modsec_audit.log
следующим образом:
htdigest Аутентификация:
--838e7b1b-A--
[17/Nov/2013:19:13:51 +0200] Uoj5T8CoAWQAABfMVE0AAAAA xxx.xxx.xxx.xxx XXXXX xxx.xxx.xxx.xxx XXXXX
--838e7b1b-B--
GET / HTTP/1.1
Host: XXX.XXX.com:XXXX
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:25.0) Gecko/20100101 Firefox/25.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Connection: keep-alive
--838e7b1b-F--
HTTP/1.1 401 Authorization Required
WWW-Authenticate: Digest realm="Members Only", nonce="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", algorithm=MD5, qop="auth"
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 290
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1
--838e7b1b-H--
Stopwatch: 1384708431494144 2002 (- - -)
Stopwatch2: 1384708431494144 2002; combined=32, p1=0, p2=0, p3=0, p4=0, p5=32, sr=0, sw=0, l=0, gc=0
Producer: ModSecurity for Apache/2.6.6 (http://www.modsecurity.org/); OWASP_CRS/2.2.5.
Server: Apache
--838e7b1b-Z--
или
базовая аутентификация:
--b8248f7a-A--
[17/Nov/2013:19:28:11 +0200] Uoj8q8CoAWQAABgxs7kAAAAM xxx.xxx.xxx.xxx XXXXX xxx.xxx.xxx.xxx XXXXX
--b8248f7a-B--
GET / HTTP/1.1
Host: XXX.XXX.com
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:25.0) Gecko/20100101 Firefox/25.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Cookie: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Connection: keep-alive
--b8248f7a-F--
HTTP/1.1 401 Authorization Required
WWW-Authenticate: Basic realm="Members Only"
Content-Encoding: gzip
Vary: Accept-Encoding,User-Agent
Cache-Control: no-cache, private, no-transform, must-revalidate, proxy-revalidate, post-check=300, pre-check=300, max-age=300
Pragma: no-cache
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html
--b8248f7a-H--
Apache-Handler: x-httpd-suphp
Stopwatch: 1384709291811105 152463 (- - -)
Stopwatch2: 1384709291811105 152463; combined=54, p1=0, p2=0, p3=0, p4=0, p5=54, sr=0, sw=0, l=0, gc=0
Producer: ModSecurity for Apache/2.6.6 (http://www.modsecurity.org/); OWASP_CRS/2.2.5.
Server: Apache
--b8248f7a-Z--
Вышеупомянутая регистрация происходит сразу после запроса, я не показываю, что происходит с неудачным паролем или с успешным паролем вообще.
Мой вопрос в том, есть ли способ запретить ему регистрировать это. Я попытался внести свой IP в белый список, но безрезультатно. Я не уверен, стоит ли мешать ему регистрировать такие вещи или нет, но я думаю, что это просто затопит /var/log/apache2/modsec_audit.log
с такой информацией каждый раз, когда «я» даже запрашиваю защищенный паролем URL.
Еще немного информации о моем сервере:
# apt-cache show libapache-mod-security | grep Version
Version: 2.6.6-6+deb7u1
Пока я использую следующие правила:
/usr/share/modsecurity-crs/base_rules/
..и modsecurity.conf рекомендуется как modsecurity.conf
Заранее спасибо. Ура
РЕДАКТИРОВАТЬ:
Я думаю, что нашел обходной путь, который решает проблему.
Чтобы исключить статус 401 из журнала, я изменил SecAuditLogRelevantStatus
регулярное выражение в modsecurity.conf
из этого:
SecAuditLogRelevantStatus "^(?:5|4(?!04))"
к этому:
SecAuditLogRelevantStatus "^(?:5|4\d[^41])"
Я также внес дополнительное изменение, не уверен, что оно актуально, но я изменил SecDefaultAction
в modsecurity_crs_10_setup.conf
из этого:
SecDefaultAction "phase:2,deny,log"
к этому:
SecDefaultAction "phase:2,deny,log,noauditlog"
После тестирования URL-адреса, защищенного паролем, теперь я ничего не получаю modsec_audit.log
это именно то, что я хотел. Я не уверен, есть ли гораздо более умный способ сделать это, но это работает. Любые комментарии приветствуются.
1) Убедитесь, что ваше правило белого списка игнорируется на этапе 1 и является самым высоким среди самых высоких правил в вашем наборе правил.
Вот пример правила:
SecRule REMOTE_ADDR "^111.222.333.444" phase:1,nolog,allow,ctl:ruleEngine=off
Обратите внимание, что он обходит фазу 1 и не продолжает дальнейшую часть процесса сканирования, он настроен так, чтобы разрешить, не регистрировать вообще и не подчиняется механизму правил.
2) HTTP 401 - это код ошибки, состоящий из двух частей. Доступ к ресурсу URL требует аутентификации пользователя, 1) которая еще не была предоставлена или 2) которая была предоставлена, но не прошла проверку авторизации. Это важно для корректирующих действий при попытках вторжения, таких как вход в систему методом грубой силы.
3) Действительно ли дата в этих журналах относится к ноябрю 2013 года? Возможно, вам потребуется обновить дату и время на вашем устройстве.