Ochrona przed atakami DOS i DDOS – SYN

Z uwagi na spore nasilenie ataków DOS i DDOS, zabezpieczenie przed nimi jest kluczowe dla stabilności każdego serwera produkcyjnego. Jeżeli nie mamy do dyspozycji sprzętowego firewalla czy uruchomionej specjalnej usługi ochrony u dostawcy łącza, możemy załagodzić skutki ataków na stos TCP z wykorzystaniem flag SYN zmieniając odpowiednio konfiguracje jądra systemowego i wykorzystując narzędzie Iptables.

Skupimy się najpierw na konfiguracji kernela i jego konfiguracji za pomocą sysctl. Na początek zwiększymy możliwości obsługi większej ilości połączeń:

net.core.netdev_max_backlog = 2048
net.core.somaxconn = 2048

następnie ustawimy zabezpieczenie przed zalaniem nas falą pakietów SYN ( ang. SYN Flood ) i atakiem SYN-ACK:

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 2
net.netfilter.nf_conntrack_tcp_loose = 0
net.ipv4.tcp_timestamps = 1

dodamy również zabezpieczenie przed podszywaniem się ( ang. IP Spoofing ):

net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

następnie dodamy regułę Iptables pomocną przy atakach SYN-ACK:

iptables -A INPUT -m state --state INVALID -j DROP

Jeżeli w naszym kernelu znajduje się moduł Iptables SYNPROXY ( podobny używany jest np. w firewallach Junipera lub systemach BSD ) to możemy wykorzystać poniższe reguły:

iptables -t raw -I PREROUTING -p tcp -m tcp --syn -j CT --notrack
iptables -I INPUT -p tcp -m tcp -m conntrack --ctstate INVALID,UNTRACKED -j SYNPROXY --sack-perm --timestamp --wscale 7 --mss 1460
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

Oczywiście powyższe parametry można dowolnie dostosować oraz uzupełnić o inne zabezpieczenia i odpowiednie limity.

W przypadku większych ataków i problemów z ich odparciem zapraszamy do kontaktu.

 

 

 

Dodaj komentarz