Как эффективно анализировать логи при DDOS атаке
Доброго времени друзья! Сегодня я хочу поделиться заметкой о том, как можно быстро проанализировать логи веб-сервера Apache на предмет самых активных IP адресов с которых идут запросы(например в случае DDOS атаки) или самых активных сайтов на вашем сервере, к которым идут запросы.
Анализ логов
Нам понадобиться утилита logtop (которая умеет считать количество одинаковых строк и сортировать их), если в системе она не установлена, то быстренько устанавливаем её, выполнив следующее:
yum install git ncurses-devel uthash-devel git clone https://github.com/JulienPalard/logtop.git cd logtop make make install |
Проанализируем лог доступа Apache, в моем случае он имеет путь /etc/httpd/vhost_logs/access.log (кастномный путь расположения, у вас он может быть /var/logs/httpd/access.log или /home/sites/www/logs/access.log). Для этого выполним команду:
tail -f /etc/httpd/vhost_logs/site.ru_access | awk {'print $1; fflush();'} | logtop |
После запуска видим следующее(данные будут обновляться в реальном времени):
Чтобы вывести проанализировать подобный образом все Apache логи сайтов, можно выполнить команды tail с перечислением всех путей к лог файлам с данными access, вот так:
tail -f /etc/httpd/vhost_logs/SITE1.ru_access /etc/httpd/vhost_logs/SITE2.ru_access | awk {'print $1; fflush();'} | logtop |
Где в данном случае колонки означают:
1 — порядковый номер
2 — количество запросов с данного IP
3 — количество запросов в секунду с данного IP
4 — собственно сам IP
Но вручную конечно прописывать пути к логам всех сайтов, что у вас есть на сервере неудобно, поэтому напишем небольшой скрипт на bash, который будет обрабатывать все файлы логов(содержащих в названии access) в директории, и передавать в команду tail.
#!/bin/bash SEARCH_DIR=/etc/httpd/vhost_logs DESTINATIONS="" for entry in $(find . -type f -mtime -1 -name "*_access" -not -name "*default*") do if [ -f "$SEARCH_DIR/$entry" ];then DESTINATIONS+=" $entry" fi done # Раскомментируйте одну из строк ниже, для получения информации активности в режиме реального времени # Список активных IP tail -f $DESTINATIONS | awk {'print $1; fflush();'} | logtop # Список активных сайтов #tail -f $DESTINATIONS | awk {'print $2; fflush();'} | logtop # Список активных GET/POST запросов #tail -f $DESTINATIONS | awk {'print $6; fflush();'} | logtop # Список активных URL #tail -f $DESTINATIONS | awk {'print $7; fflush();'} | logtop |
Мы видим список IP встречающихся в логах по всем сайтам, список обновляется в режиме реального времени. По каждому IP мы видим количество — сколько раз он встречается, и вообще с какой скоростью растет его счетчик. Таким образом мы можем вычислить список самых активных IP адресов, с целью их дальнейшей блокировки файрволлом (например ТОП-10 самых активных).
Узнать географию и принадлежность IP адреса можно с помощью моей онлайн утилиты Информация о Домене и IP.

Автор: 






