Защита от возможных DDoS-атак syn-flood

Я запускаю службу на заданном порту (скажем, 1234). Время от времени это недоступно. Когда я проверяю dmesg, я вижу:

TCP: возможна лавинная рассылка SYN на порт 1234. Отправка файлов cookie. Проверить счетчики SNMP

net.ipv4.tcp_max_syn_backlog имеет значение 1024

Когда я проверяю netstat, я вижу:

tcp 0 0 exampledomainname.com:5008 ip190-5-138-234.i: 56772 SYN_RECV
tcp 0 0 exampledomainname.com:5008 ip190-5-138-234.i: 56771 SYN_RECV
tcp 0 0 exampledomainname .com: 1234 216.218.222.14:18687 SYN_RECV
tcp 0 0 exampledomainname.com:1234 185.234.218.50:59848 SYN_RECV
tcp 0 0 exampledomainname.com:1234 tor-exit.r2.apx.p: 45992 SYN_RECV
tcp 0 0 exampledomainname.com:1234 tor-exit1.signal.:42747 SYN_RECV
tcp 0 0 exampledomainname.com:1234 chulak.enn.lu:29545 SYN_RECV
tcp 0 0 exampledomainname.com:1234 chulak.enn.lu:19883 SYN_RECV
tcp 0 0 exampledomainname.com:1234 5.188.86.30:53106 SYN_RECV
tcp 0 0 exampledomainname.com:1234 lh28409.voxility.:59899 SYN_RECV
tcp 0 0 exampledomainname .com: 1234 tor-exit1.signal.:40048 SYN_RECV
tcp 0 0 exampledomainname.com:1234 62.176.4.10:48546 SYN_RECV
tcp 0 0 exampledomainname.com:1234 chulak.enn.lu:52326 SYN_RECV
tcp 0 0 exampledomainname.com:1234 sunfire-cape.gate: 44592 SYN_RECV
tcp 0 0 exampledomainname.com:1234 sunfire-cape.gate: 44590 SYN_RECV
tcp 0 0 exampledomainname.com:1234 chomsky.torserver: 45374 SYN_RECV
tcp 0 0 exampledomainname.com:1234 chulak.enn.lu:60156 SYN_RECV
tcp 0 0 exampledomainname.com:1234 chulak.enn.lu:47522 SYN_RECV
tcp 0 0 exampledomainname.com:1234 tor-exit.r2.apx.p: 38568 SYN_RECV
tcp 0 0 exampledomainname.com:1234 chulak.enn .lu: 34309 SYN_RECV
tcp 0 0 exampledomainname.com:1234 185.100.86.128:35623 SYN_RECV
tcp 0 0 exampledomainname.com:1234 tor-exit1.signal.:42921 ...

около 30 таких соединений SYN_RECV. Если мое предположение верно, то это довольно сложная бот-сеть, которая проходит через сеть Tor.

Что я могу сделать против такой атаки? Любая помощь будет высоко ценится.


person user994612    schedule 22.01.2018    source источник


Ответы (2)


Существует множество возможных способов создания эффективной защиты от DDOS-атак. Большинство из них включает анализ сетевого трафика, но проводится различие между профилями «известных» атак / методов, с которыми защитное программное обеспечение сможет сопоставить, новыми атаками, вызывающими нерегулярную активность, и профилями здоровой активности.

Само собой разумеется, что эффективная защита будет зависеть от имеющихся у вас инструментов и систем, которые вы используете. Возможно, это видео могло бы дать вам некоторые идеи.

https://www.youtube.com/watch?v=AqY3UxXyQTY

person Leo Naylor    schedule 22.01.2018
comment
спасибо за ваш ответ ... к сожалению, я использую VPS с root-доступом без возможности «купить и установить» дополнительное оборудование. - person user994612; 23.01.2018

Возможно, вы захотите реализовать правила SYNPROXY iptables, которые будут выполнять 3WHS перед добавлением записи conntrack, той, которую она насыщает, когда вы находитесь под атакой synflood.

Я лично протестировал и могу подтвердить, что он действительно работает. Это объяснение от разработчика Red Hat, который включил SYNPROXY в ядро ​​Linux: https://rhelblog.redhat.com/2014/04/11/mitigate-tcp-syn-flood-attacks-with-red-hat-enterprise-linux-7-beta/#more-273

Из статьи:

sysctl -w net/netfilter/nf_conntrack_tcp_loose=0
iptables -t raw -I PREROUTING -i $DEV -p tcp -m tcp --syn --dport $PORT -j CT --notrack
iptables -A INPUT -i $DEV -p tcp -m tcp –dport $PORT -m state --state INVALID,UNTRACKED -j SYNPROXY --sack-perm --timestamp --wscale 7 --mss 1460
iptables -A INPUT -m state --state INVALID -j DROP
sysctl -w net/ipv4/tcp_timestamps=1

Обратите внимание: если вам нужно использовать NAT, необходимо внести некоторые изменения, поскольку NAT использует conntrack и SYNPROXY блокирует conntrack на первых пакетах.

Если вам это нужно, у меня где-то есть скрипты, где я решил проблему (просто нужно время, чтобы их найти).

Изменить: в основном вам нужно переместить nat tcp-потоков с -t nat -A PREROUTING на -t nat -A OUTPUT

person setenforce 1    schedule 23.01.2018
comment
К сожалению, это неправильное решение для меня. Я настроил его, как описано. Использовал eth0 вместо $ DEV. DDoS все еще может вывести меня из строя. - person user994612; 28.01.2018