tm

   Всегда интересовало что же посылается на сайт с подобными запросами:

tail /log/apache/access.log
[30/Dec/2016:01:48:52 +0700] - - 5.141.8.114 "POST /index.php/index.php/3-install HTTP/1.0" 200 26760 "http://site.xx/index.php/index.php/3-install"

Начал разбираться. Наткнулся на какой-то mod dumpio. Ничего вразумительного он мне показал. Наверное даже и не заработал =)

Начал копать в сторону mod security. Назначений у него множество, но мне нужно только логирование POST запросов. Как обычно начинаем с установки MOD'a:

apt-get install libapache2-modsecurity 

Файл конфигурации лежит в /etc/modsecurity/ и по-умолчанию называется modsecurity.conf-recommended. Перед запуском мода нужно переименовать его в modsecurity.conf:

cp /etc/modsecurity/modsecurity.conf-recomended /etc/modsecurity/modsecurity.conf

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

apachectl -M | grep security

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

nano /etc/modsecurity/modsecurity.conf
SecRequestBodyAccess On
SecRule REQUEST_METHOD "POST" "id:200012,phase:2,ctl:auditEngine=On,log,pass"

Как я понял, это означает, что запросы методом POST попадают под правило с уникальным ID. В этом правиле на второй фазе (phase:2 = REQUEST_BODY) будет выполняться логирование содержимого POST-запроса. Параметр pass означает, что обработка запроса продолжится, пока не попадёт под слудующее правило.

 Работа этого мода разбита на 5 фаз за которые он анализирует весь http(s) трафик:

REQUEST_HEADERS (фаза 1);
REQUEST_BODY (фаза 2);
RESPONSE_HEADERS (фаза 3);
RESPONSE_BODY (фаза 4);
LOGGING (фаза 5).

Файл лога создаётся автоматически при перезапуске apache2:

service apache2 restart

и находится он по-умолчанию в /var/log/apache2/modsec_audit.log

Можно сделать тоже самое, только отдельно для VirtualHost'a. В файл с настройками VirtualHost'a вписываем слудующий код:

nano /etc/apache2/sites-available/000-default.conf
<IfModule security2_module>
        SecAuditLog /var/log/apache2/audit_it.log
        SecRule REQUEST_METHOD "POST" "id:22222224,phase:2,ctl:auditEngine=On,log,pass"
        SecRuleEngine On
</IfModule>

Если у VirtualHost'a есть алиасы и их нужно изключить из анализа в директиве <Directory></Directory> прописываем код:

nano /etc/apache2/sites-available/000-default.conf
<IfModule security2_module>
        SecRuleEngine Off
</IfModule>

Комментарии отключены