Как все мы знаем, HTTP-запросы бывают двух типов – GET и POST. С логированием GET-запросов проблем никаких не возникает – все такие запросы заносятся в файл access.log. А вот что с POST-запросами? Как мы узнаем, какой пользователь обращался с помощью POST к нашим сценариям? В этом нам поможет модуль modsecurity. Также будет показан способ без изменения конфигурации сервера.
Использование modsecurity
Возможности modsecurity довольно большие, но нас интересует сейчас только логирование POST-запросов, на этом и остановимся.
Установите modsecurity:
sudo apt install libapache2-modsecurity
Скопируйте файл конфигурации с рекомендуемыми параметрами, чтобы использовать его в качестве основного файла конфигурации:
Откройте файл /etc/modsecurity/modsecurity.conf для редактирования:
sudo mcedit /etc/modsecurity/modsecurity.conf
Добавьте в него следующие строки:
SecRequestBodyAccess On
SecRule REQUEST_METHOD "POST" "id:200012,phase:2,ctl:auditEngine=On,log,pass"
При желании вы можете настроить и другие параметры этого модуля – обратитесь к документации (вы без проблем найдете ее в Интернете).
Перезапустим Apache:
sudo service apache2 restart
Файл журнала modsecurity называется /var/log/apache2/modsec_audit.log.
Если на сервере «крутится»" несколько сайтов, то соответствующую настройку можно произвести для каждого отдельного виртуального узла. Откройте файл конфигурации виртуального узла и добавьте строки:
Здесь мы не только включаем логирование POST-запросов, но и указываем файл конфигурации.
Совсем другое дело, если мы не можем редактировать конфигурацию сервера, то есть у нас есть обычный хостинг, а логировать запросы к сайту нужно. В этом случае поможет следующий PHP-сценарий (postlog.php):
Теперь нужно сделать так, чтобы этот файл присоединялся к каждому выполняемому PH-сценарию. Для этого редактируем .htaccess и добавляем в него строку:
php_value auto_prepend_file /home/example.com/postlog.php
Путь к сценарию нужно указать полный – от корня сервера. На этом все. Мы показали два способа логирования POST-запросов, надеемся, статья будет для вас полезной.