SYN cookies

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania
Nawiązanie połączenia TCP między użytkownikiem i serwerem.

SYN Cookies - mechanizm pozwalający na obronę przed atakami SYN flood. Zaproponowany w obecnym kształcie przez D.J. Bersteina oraz Erica Schenka. Został zaimplementowany m.in. w Linuksie, FreeBSD oraz wielu komercyjnych zaporach sieciowych.

Zasada działania[edytuj | edytuj kod]

Mechanizm SYN cookies polega na odpowiednim doborze ISN (ang. Initial Sequence Numbers - początkowe numery sekwencyjne) wysyłanych przez serwer w pakietach SYN+ACK podczas nawiązywania połączenia TCP/IP. ISN są wyliczane w następujący sposób:

  • pierwsze 5 bitów: t mod 32, gdzie t to 32-bitowy licznik zwiększający się co 64 sekundy;
  • następne 3 bity: zakodowana wartość MSS (ang. Maximum Segment Size - szerokość okna) wybranego przez serwer w odpowiedzi na propozycję MSS klienta;
  • ostatnie 24 bitów: wyliczone wybraną przez serwer sekretną funkcją na podstawie adresów IP klienta i serwera, numeru portu, oraz licznika t.

Mechanizm uaktywnia się w momencie przepełnienia tabeli stanów pakietami SYN. Serwer zamiast ignorować kolejne próby nawiązania połączenia TCP (pakiety SYN), odpowiada klientom wysyłając pakiet SYN+ACK z odpowiednio wyliczonym ISN, nie zapisując tego faktu w przepełnionej tabeli stanów. Jeżeli serwer otrzyma pakiet ACK, szuka odpowiadającego mu połączenia w tabeli stanów. Jeżeli połączenie nie zostanie dopasowane, serwer sprawdza wiarygodność pakietu ACK na podstawie zawartego w nim numeru sekwencyjnego, w oparciu o sekretną funkcję i ostatnie wartości licznika t. W przypadku zgodności, w tabeli stanów tworzony jest wpis na podstawie wartości MSS wyliczonych z otrzymanego pakietu ACK. Połączenie TCP może być kontynuowane normalnie.

Wady[edytuj | edytuj kod]

W czasie ataku SYN flood, MSS musi być zakodowane przy pomocy trzech bitów. Serwer może więc proponować jedynie osiem różnych wartości MSS. Ponadto serwer musi odrzucać pakiety SYN zawierające opcje TCP. Uniemożliwia to wykorzystywania rozszerzeń protokołu TCP opisanych w RFC1323. W efekcie szybkość połączenia TCP jest mniejsza niż normalne.

W czasie ataku SYN flood istnieje również możliwość przeprowadzenia kryptoanalizy sekretnej funkcji służącej do wyliczania ISN. Poznanie jej silnie ułatwia przeprowadzenie ataków wykorzystujących predykcję numerów sekwencyjnych TCP.

Zobacz też[edytuj | edytuj kod]

TCP (protokół)

Linki zewnętrzne[edytuj | edytuj kod]