Данная статья имеет смысл, если на сервере установлен Nginx.
Для начала изменяем конфиг Nginx, чтобы в лог выводились имена сайтов, к которым идет обращение:
# vi /etc/nginx/nginx.conf
Меняем строку
access_log /var/log/nginx/access.log;
На
log_format main ‘$remote_addr — $remote_user [$time_local] $status «$host» «$request» $body_bytes_sent «$http_referer» «$http_user_agent» «$http_x_forwarded_for»‘;
access_log /var/log/nginx/access.log main;
И перезапускаем nginx:
# invoke-rc.d nginx restart
Если установлен Apache, то его желательно отключить, чтобы сервер не повис от нагрузки от атаки.
# invoke-rc.d apache2 stop
После чего ждем, чтобы access.log «поднакопил» данные от запросов.
Через некоторое время можно останавливать nginx и запускать следующую команду:
# tail -n 1000 /var/nginx/access.log | awk ‘{print $7}’ | sort | uniq -c | sort -n
Таким образом, мы получим данные в виде имен сайтов и количестве обращений к ним.
А вот так выглядет команда на получение списка IP, с которых шли запросы:
# tail -n 1000 /var/log/nginx/access.log | awk ‘{print $1}’ | sort | uniq -c | sort -n
Есть и более простой вариант.
После того, как мы сделали свой log_format в Nginx и перезапустили его, можно просто запустить:
# tail -f /var/log/nginx/access.log
И мониторить запросы на наличие корректного браузера, реферрера и т.д.
Такие же манипуляции можно производить и с error.log’ом.