Приведу пример как можно использовать tcpdump. Например, на сервере отключены логи, идет легкая ddos атака, происходит что-то не ладное, вы хотите быстро посмотреть масштабность или убедиться, что это DDoS-атака, а не DoS или может это вообще никак не связано с внешним миром? Давайте посмотрим:
tcpdump -v -i eth0 dst port 80После выше набранной команды вы сможете наблюдать список подключений к 80-у порту, чем больше повторных подключений с одинаковых хостов тем вероятнее мы столкнулись с DoS или DDoS атакой. Как вы уже наверное догадались, изменив порт можно проверить есть ли атака на FTP, SSH или другие сервисы которые крутятся на сервере. Добавив ключ -n имена хостов преобразуются в IP адреса.
Глазами все не уследить, при атаке на веб-сервер вывод tcpdump-a сумасшедшей скоростью будет двигаться вдоль окна вывода терминала :) Поэтому, мы сначала запишем вывод tcpdump-a в файл. пакетов 200-300 хватит.
tcpdump -v -n -w attack.log dst port 80 -c 250-v самый простой уровень логирования, без изысканности.
-n преобразуем имена хостов в IP адреса
-w записываем анализ трафика в файл
-c количество захваченных пакетов
Приступим к анализу полученных данных через tcpdump, отпарсим лог следующей командой:
tcpdump -nr attack.log |awk '{print $3}' |grep -oE '[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,}' |sort |uniq -c |sort -rnРезультат будет - 2 столбца, в первом количество подключений, во втором IP. Чем больше подключений для одного IP тем вероятнее что это бот.
Если список очень длинный можно ограничить его указав нужное количество выводимых строк
tcpdump -nr attack.log |awk '{print $3}' |grep -oE '[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,}' |sort |uniq -c |sort -rn | head -20Что бы получить только IP адреса, без первого столбца, нужно убрать ключ -c после uniq
Вывод парсинга можно перенаправить в файл, а затем простым bash-скриптом, заблокировать все IP со списка.
#!/bin/bashBLOCKDB="ips.txt"IPS=$(grep -Ev "^#" $BLOCKDB)for i in $IPSdoiptables -A INPUT -s $i -j DROP
Очень похожие трюки иногда проделывают с помощью утилиты netstat.
Пока это все, что я хотел написать о tcpdump. До скорых встреч!
2 комментария:
побольше статей бы, ибо мертво всё и харит заходить сюда даже
Товарищ, спасибо огромное за статью! Только что отбивался от дидоса.
Отправить комментарий