Заголовок
В общем случае, существуют два варианта:
- вариант, если вы провайдер интернета, то используя BGP blackhole community можно пододвинуть черную дыру в которую будет сливаться незапрошенный трафик как можно ближе к атакующим.
- вариант, если вы пользователь и, например, атакован Ваш сервер то можно только постараться облегчить последствия атаки. Все все приемы доступные пользователю направлены на снижение эффективности DDoS-атак, ставящих своей целью израсходовать ресурсы машины. От флуда, забивающего канал мусором, защититься практически невозможно.
Итак минимум:
Добавляем в файл /etc/sysctl.conf
# Защита от спуфинга net.ipv4.conf.default.rp_filter = 1 # Проверять TCP-соединение каждую минуту. net.ipv4.tcp_keepalive_time = 60 # Повторить пробу через десять секунд net.ipv4.tcp_keepalive_intvl = 10 # Количество проверок перед закрытием соединения net.ipv4.tcp_keepalive_probes = 5
Дальше определяем сети от куда приходит атака:
Например так:
netstat -na | grep «:80 » | grep SYN_RCVD
или так:
netstat -na | grep «:80 » | sort | uniq -c | sort -nr | less
Однозначно идентифицировать так DDoS-атаку нельзя, можно лишь подтвердить свои догадки о наличии таковой, если один адрес повторяется в списке слишком много раз (это может так же говорить о посетителях, сидящих за NAT'ом). Или слишком много адресов которые например только открывают tcp соединение и больше ничего не делают.
Дополнительным подтверждением будет анализ пакетов с помощью tcpdump:
tcpdump -n -i eth0 -s 0 -w output.txt dst port 80 and host IP-сервера
Показателем служит большой поток однообразных (и не содержащих полезной информации) пакетов от разных IP, направленных на один порт/сервис.
Ну и наконец:
iptables -A INPUT -s xxx.xxx.xxx.xxx -p tcp –destination-port http -j DROP
Кроме того, следует обратиться к провайдеру/хостеру (с приложенными к сообщению логами web-сервера, ядра, брандмауэра и списком выявленных тобой IP-адресов) для решения данной проблемы более эффективными средствами.