SYN flooding and SYN spoofing

SYN flooding on üks DoS rünnaku tüüp. Rünnatavale serverile tekitatakse väga palju ühendusi SYN RECEIVED staatusega kuni backlog on üle ujutatud. SYN RECEIVED staatus rünnatava serveri connection listi tekitatakse kui rünnatav server saab paketi SYN aktiivse lipuga. SYN flooding rünnaku puhul saadetakse rünnatavale masinale SYN lipuga pakett ning rünnatav masin avab n.n half-open connection. Samuti pannakse half-open connection backlog-i. Rünnatav masin saadab nüüd vastu SYN+ACK paketi ja kui see vastuseta siis üritab saata veel. Kõik see on liiklus ja avatud ühendused ja kasutatud mälu. Samuti on backlog piirangud. Näiteks RedHat 7.3 puhul 256 ja kui ründajal õneestub need täis lasta ning seda situatsiooni mõnda aega hoida on see rünne juba õnnestunud.

Juhul kui veel paketi sees source IP valetada (SYN spoofing attack) siis on rünne veel tõhusam kuna rünnatav masin ei suuda saada SRC masinast SYN+ACK lipuga paketi ning paneb ühenduse backlog-i ning proovib veel ja veel.

Kuidas aru saada et teie serverit on tabanud kas SYN flooding või SYN spoofing?

Lihtsalt netstat ja vaadata palju on SYN_RECV staatuses ühendusi.

# netstat | grep SYN_RECV

Backlog on mälus olev osa kus hoitakse pakete SYN lipuga kuni nad on n.n “three-way handshake (SYN -> SYN+ACK <- SYN+ACK)" protsessi lõpetanud. Mida saab sellisel puhul teha. SYN cookies protection: Hea oleks vaadata kas /proc/sys/net/ipv4/tcp_syncookies oleks 1. Eelnevalt peab olema muidugi kernelisse CONFIG_SYNCOOKIES kompileeritud Vahel võib olla vajadus muuta backlog suurust. Vaikimisi suurust näeb:
# cat /proc/sys/net/ipv4/tcp_max_syn_backlog
1024

tcp_synack_retries - Kui serverisse tuleb SYN lipuga pakk siis saadetakse see SRC poole tagasi SYN+ACK ning pannakse see n.n "half-open" ühendus backlog-i. Juhul kui on tegu SYN flood+spoof ründega ei tule SRC poolt ilmselt tagasi midagi ning backlog uputatakse üle. Sellistel puhkudel on mõtekas piirata hulka mitu korda üritatakse SRC-ga ühendust saada.

Hetkeolukorda näeb:

# cat /proc/sys/net/ipv4/tcp_syn_retries

Minul on ta hetkel 5 mis tähendab et half-open connection hoitakse üleval 3 minutit.

Leave a Reply