Перейти к содержанию
Авторизация  

Защита От Ddos С Помощью Утилиты Tcpdump


Описание

Защита От Ddos С Помощью Утилиты Tcpdump

196366631_60b1124d02_m.jpg

 

tcpdump - это мощнейшая утилита UNIX, позволяющая перехватывать

и анализировать сетевой трафик, проходящий через сетевые интерфейсы. Об установке

читайте на сайте разработчика, в FreeBSD она есть

в портах, в Debian Linux в репозиториях.

 

Приведу пример как можно использовать 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

 

 

Мы добавили head -20

 

Что бы получить только IP адреса, без первого столбца, нужно убрать ключ -c после uniq

Вывод парсинга можно перенаправить в файл, а затем простым bash-скриптом, заблокировать все IP со списка.

#!/bin/bash
BLOCKDB="ips.txt"
IPS=$(grep -Ev "^#" $BLOCKDB)
for i in $IPS
do
iptables -A INPUT -s $i -j DROP



Рекомендуемые комментарии

Комментариев нет

×
×
  • Создать...