Данная статья имеет смысл, если на сервере установлен 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’ом.