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.