Назад | Перейти на главную страницу

Проверьте, действительно ли работает mod_security

Я впервые запускаю это на своем промежуточном сервере и думаю, что все сделал правильно. Я могу видеть записи в modsec_audit.log, когда я запускаю nikto2 против него, но, хоть убей, я не могу вручную заставить mod_security что-либо блокировать. Я поместил SQL в URL-адреса, формы и т. Д. И получил нашу типичную удобную для пользователя страницу HTML 404, а не блок из mod_security, который должен быть ошибкой 403 или прямым блоком.

Боюсь, что это только обнаружение, а не остановка. Я проверил свою конфигурацию, и она определенно настроена на остановку атак, а не только на их обнаружение. Есть идеи, как я могу проверить, действительно ли эта штука блокирует атаки? У кого-нибудь есть тестовый URL или что-то, что я могу сделать, чтобы доказать мне, что он действительно работает?

Я нашел на это ответ. Просто зайдите на свой сайт так: example.com/etc/passwd

Это мгновенно вызовет 403 из mod_security и зарегистрирует его в журнале по умолчанию.

По умолчанию движок будет только обнаружение Режим:

SecRuleEngine DetectionOnly

Вам нужно настроить SecRuleEngine On

sed -ie 's/^\s*SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/modsecurity/modsecurity.conf

и перезапустите Apache.

В вашем браузере попробуйте получить доступ к веб-сайту, размещенному на этом сервере, как в этом примере:

http://www.anywebsitefromthatserver.com/aphpfilethatdonotexist.php?something=../../etc

Затем проверьте журнал Modsecurity, и у вас будет что-то похожее (если у вас есть WHM / cPanel -> проверьте WHM -> Modsecurity Tools, чтобы увидеть журнал):

2017-12-14 10:28:41 www.anywebsitefromthatserver.com    YOUR IP: 68.XX.XX.XX    CRITICAL    404  930100: Path Traversal Attack (/../)

Подробный журнал будет выглядеть так:

Request:    GET /aphpfilethatdonotexist.php?something=../../etc
Action Description: Warning.
Justification:  Pattern match "(?i)(?:\\x5c|(?:%(?:c(?:0%(?:[2aq]f|5c|9v)|1%(?:[19p]c|8s|af))|2(?:5(?:c(?:0%25af|1%259c)|2f|5c)|%46|f)|(?:(?:f(?:8%8)?0%8|e)0%80%a|bg%q)f|%3(?:2(?:%(?:%6|4)6|F)|5%%63)|u(?:221[56]|002f|EFC8|F025)|1u|5c)|0x(?:2f|5c)|\\/))(?:%(?:(?:f(?:(?:c%80|8)%8)?0%8 ..." at REQUEST_URI_RAW.

Если вы увидите аналогичный журнал, вы можете быть уверены, что ваш Modsecurity активирован и работает.

Вы можете найти в Google какой-нибудь онлайн-тестер XSS или сканер XSS и позволить инструменту выполнить несколько запрошенных атак на ваш промежуточный сайт. Инструмент также может предоставить вам отчет с подробным описанием результатов «атаки».

Затем вы можете отслеживать свои журналы, чтобы увидеть, соответствуют ли записи отчету, особенно дата, время и IP-адрес, если таковые имеются.

У меня есть чек, как показано ниже

$ curl -ks -o /dev/null -w '%{http_code}' "https://something.example.com/foo?username=1'%20or%20'1'%20=%20'"

Если вы получите 403, то ModSecurity работает должным образом.

Вы можете посмотреть руководство Rapid7 для базовой настройки.

https://blog.rapid7.com/2017/04/09/how-to-configure-modsecurity-with-apache-on-ubuntu-linux/

Есть несколько тестовых локонов, которые должны создавать записи в журнале. Записи журнала появляются как в / var / log / apache2 / access, так и в /var/log/apache2/modsec_audit.log в зависимости от ваших настроек.

XSS тест

curl 'http://www.example.com/?q="><script>alert(1)</script>'

SQL-инъекция

curl "http://www.example.com/?q='1 OR 1=1"