Łagodzenie ataków SYN oraz ACK flood cz.I
Napisał: Patryk Krawaczyński
22/07/2015 w Bezpieczeństwo Brak komentarzy. (artykuł nr 484, ilość słów: 336)
P
odstawowy problem skalowalności protokołu TCP w jądrze Linuksa jest związany z liczbą nowych połączeń, jakie mogą być tworzone na sekundę. Odnosi się to bezpośrednio do obsługi gniazd powstających w trybie nasłuchu, które są blokowane. Blokady powodowane są nie tylko przez pakiety z flagą SYN, ale także SYN-ACK oraz ACK (ostatni w potrójnym uścisku dłoni). Podczas ataków DoS / DDoS za pomocą tego rodzaju pakietów atakujący ma na celu wysłanie, jak największej ilości spreparowanych pakietów, które mają na celu osiągnąć i spowodować problem z blokowaniem gniazd w trybie nasłuchu. Jedną z metod jest podniesienie bardzo niskiego limitu dla tego typu gniazd oraz kolejki oczekujących połączeń w systemie:
/etc/sysctl.conf
:
net.core.netdev_max_backlog = 4096 net.ipv4.tcp_max_syn_backlog = 4096 net.core.somaxconn = 4096
Plus zwiększenie txqueuelen. Niestety jest to tylko odłożenie w czasie kiedy limit ten zostanie osiągnięty, a system zablokowany – chyba, że skala ataku nie będzie na tyle duża. Dużo lepszym wyjściem wydaje się mechanizm filtrowania fałszywie zapoczątkowanych połączeń, zanim spowodują one wejście gniazda w stan nasłuchu i blokadę nowych, nadchodzących połączeń.
Za pomocą modułu conntrack z narzędzia netfilter możemy rozpocząć filtrowanie fałszywych pakietów SYN-ACK oraz ACK zanim doprowadzą one do tego stanu. Jest to coś, co było możliwe od dawna w systemie Linux, ale standardowo nie jest włączone. W celu aktywacji tego mechanizmu wystarczy wydać dwa polecenia:
iptables -A INPUT -m state –state INVALID -j DROP /sbin/sysctl -w net/netfilter/nf_conntrack_tcp_loose=0
Pierwsza reguła iptables
wyłapie wszystkie pakiety dla połączeń przychodzących, które system śledzenia połączeń zakwalifikował jako niewłaściwe, czyli nie są częścią żadnego poprawnie nawiązanego połączenia lub nie posiadają żadnego stanu. Druga linia wywołująca zmianę ustawienia sysctl
spowoduje, że conntrack będzie bardziej rygorystyczny odnośnie tej kwalifikacji, co zaowocuje (między innymi) możliwością wyłapania i zblokowania zalewów pakietami ACK. Rezultatem tych ustawień jest 20’krotny wzrost wydajności w odpieraniu ataków opartych o pakiety SYN-ACK oraz ACK. Pozostaje uporanie się z pakietami typu SYN.
Więcej informacji: Vyatta Stateful Firewall Issue