Serwer internetowy jest niedostępny z powodu złośliwego ataku SYN

Tłumaczenia artykułów Tłumaczenia artykułów
Numer ID artykułu: 142641 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Ten artykuł został opublikowany wcześniej pod numerem PL142641
Rozwiń wszystko | Zwiń wszystko

Na tej stronie

Symptomy

Na komputerze z uruchomionym protokołem TCP/IP, połączonym z Internetem, niektóre lub wszystkie usługi sieciowe przestają być dostępne, a na ekranie klienta sieci pojawiają się komunikaty o błędzie podobne do poniższego komunikatu:
Połączenie zostało zresetowane przez zdalnego hosta.

Ten objaw utraty dostępu do wszystkich usług sieciowych może wystąpić także na komputerze z uruchomionym systemem operacyjnym innym niż Windows NT, na przykład z systemem UNIX.

Przyczyna

Komputer padł ofiarą złośliwego ataku znanego jako „zalew SYN” lub „atak SYN” z wykorzystaniem protokołu TCP/IP.

Hakerzy komputerowi mogą zaatakować cały komputer lub określoną usługę TCP, taką jak usługi sieci Web. Atak wykorzystuje protokół TCP używany przez wszystkie komputery w Internecie i nie ogranicza się do systemu operacyjnego Windows NT.

Na czym polega zalew SYN

Zalew SYN przebiega w następujący sposób: (zobacz także artykuł CERT(sm) Advisory CA-96.21 pod adresem ftp://info.cert.org/pub/cert_advisories
  • Do komputera docelowego jest wysyłane żądanie połączenia TCP (SYN). Źródłowy adres IP w pakiecie jest „fałszowany”, czyli zamieniany na adres nieużywany w Internecie lub należący do innego komputera. Osoba atakująca wysyła wiele takich żądań SYN w protokole TCP, aby związać jak najwięcej zasobów komputera docelowego.
  • Po odebraniu żądania połączenia komputer docelowy przydziela zasoby do obsługi i śledzenia nowego połączenia, po czym odpowiada, wysyłając pakiet „SYN-ACK”. W tym przypadku odpowiedź zostanie wysłana pod nieistniejący, „sfałszowany” adres IP.
  • Transmisja SYN-ACK pozostaje bez odpowiedzi. Komputer o domyślnej konfiguracji systemu Windows NT 3.5x lub 4.0 będzie pięciokrotnie retransmitował pakiet SYN-ACK, podwajając wartość limitu czasu po każdej retransmisji. Początkowy limit czasu wynosi 3 sekundy, tak więc próby retransmisji są ponawiane po 3, 6, 12, 24 i 48 sekundach. Po ostatniej retransmisji upływa jeszcze 96 sekund, zanim komputer zrezygnuje z oczekiwania na odbiór odpowiedzi i zwolni zasoby, które zostały wcześniej zarezerwowane na potrzeby połączenia. Całkowity czas zajęcia zasobów wynosi 189 sekund.

Jak sprawdzić, czy komputer jest celem ataku SYN

Jeśli podejrzewasz, że komputer jest celem ataku SYN, możesz wpisać w wierszu polecenia następujące polecenie w celu wyświetlenia połączeń o stanie „ODEBRANO_SYN”:

netstat -n -p tcp

W wyniku użycia tego polecenia na ekranie może pojawić się poniższy tekst:
Aktywne połączenia
      Protokół  Adres lokalny          Obcy adres             Stan
      TCP    127.0.0.1:1030        127.0.0.1:1032        USTANOWIONO
      TCP    127.0.0.1:1032        127.0.0.1:1030        USTANOWIONO
      TCP    10.57.8.190:21        10.57.14.154:1256     ODEBRANO_SYN
      TCP    10.57.8.190:21        10.57.14.154:1257     ODEBRANO_SYN
      TCP    10.57.8.190:21        10.57.14.154:1258     ODEBRANO_SYN
      TCP    10.57.8.190:21        10.57.14.154:1259     ODEBRANO_SYN
      TCP    10.57.8.190:21        10.57.14.154:1260     ODEBRANO_SYN
      TCP    10.57.8.190:21        10.57.14.154:1261     ODEBRANO_SYN
      TCP    10.57.8.190:21        10.57.14.154:1262     ODEBRANO_SYN
      TCP    10.57.8.190:21        10.57.14.154:1263     ODEBRANO_SYN
      TCP    10.57.8.190:21        10.57.14.154:1264     ODEBRANO_SYN
      TCP    10.57.8.190:21        10.57.14.154:1265     ODEBRANO_SYN
      TCP    10.57.8.190:21        10.57.14.154:1266     ODEBRANO_SYN
      TCP    10.57.8.190:4801      10.57.14.221:139      CZAS_OCZEKIWANIA


Jeśli duża liczba połączeń ma stan ODEBRANO_SYN, istnieje możliwość, że system jest celem ataku. Można użyć analizatora sieci do dalszego prześledzenia problemu, przy czym może zajść potrzeba skontaktowania się z usługodawcą internetowym (ISP) w celu uzyskania pomocy w próbie namierzenia źródła ataku.

Efekt zajęcia zasobów dla połączeń może być różny, w zależności od stosu TCP/IP i aplikacji prowadzących nasłuch na porcie TCP. Dla większości stosów istnieje limit liczby połączeń, które mogą mieć stan półotwarty (ODEBRANO_SYN). Po przekroczeniu limitu dla danego portu TCP komputer docelowy reaguje resetowaniem wszystkich następnych żądań połączenia, dopóki zasoby nie zostaną zwolnione.

Rozwiązanie

Uzyskaj następującą aktualizację dla systemu Windows NT 3.51 lub najnowszy dodatek Service Pack dla Windows NT 4.0.

W odpowiedzi na to zagrożenie firma Microsoft zobowiązała się do zapewnienia najlepszej możliwej ochrony przed atakami tego typu w ramach systemu operacyjnego Windows NT i wprowadziła liczne zmiany w swoich składnikach TCP/IP udostępnianych klientom.

Klucz globalny, który zaprojektowano w celu ochrony przed atakami, ustawia dla innych kluczy, wspomnianych w dalszej części tego artykułu, wartości znane jako efektywne. Użycie tego klucza zapobiega konieczności odgadywania przez administratorów wartości, które zapewniają najlepszą ochronę. Zdecydowanie zaleca się użycie następujących kluczy globalnych:

SynAttackProtect
Klucz: Tcpip\Parameters
Typ wartości: REG_DWORD
Zakres prawidłowych wartości: 0, 1, 2
0 (brak ochrony przed atakami SYN)
1 (zmniejszenie liczby prób retransmisji i opóźnienie tworzenia wpisu RCE (route cache entry) po przekroczeniu ustawień limitów TcpMaxHalfOpen i TcpMaxHalfOpenRetried)
2 (dodatkowo - oprócz 1 - opóźnienie wskazania do modułu Winsock)

UWAGA: Kiedy system zostanie zaatakowany, następujących opcji nie można już włączyć na żadnym gnieździe: skalowalne okna (scalable windows, RFC 1323) i parametry TCP konfigurowane indywidualnie dla każdej karty (wartość początkowa RTT, rozmiar okna). Dzieje się tak, ponieważ gdy działają mechanizmy ochrony, wpis buforu trasy nie jest sprawdzany przed wysłaniem pakietu SYN-ACK i opcje modułu Winsock nie są dostępne w tej fazie połączenia.

Wartość domyślna: 0 (fałsz)
Wartość zalecana: 2
Opis: Ochrona przed atakiem SYN polega na zredukowaniu liczby retransmisji pakietów SYN-ACK, co zmniejsza czas, przez który zasoby muszą pozostać przydzielone. Przydzielenie zasobów wpisu buforu trasy jest opóźniane aż do nawiązania połączenia. Jeśli wartość synattackprotect = 2, to wskazanie aktywności połączenia dla AFD jest opóźniane aż do ukończenia trójstronnego uzgadniania. Warto zauważyć, że czynności podejmowane są przez mechanizm ochronny tylko w sytuacji przekroczenia ustawień TcpMaxHalfOpen i TcpMaxHalfOpenRetried.

UWAGA: Poniższe klucze powinny być zmieniane tylko w sytuacji, gdy powyższy klucz globalny okazał się nieefektywny lub gdy atakowane są określone limity zasobów.

Oto lista wprowadzonych zmian:

******************************************************************* 
*  1. Sterownik Tcpip.sys szybciej zamyka półotwarte połączenia  * 
*******************************************************************


Opracowano nową wersję sterownika Tcpip.sys, która pozwala kontrolować, ile razy będzie retransmitowana odpowiedź na żądanie połączenia TCP (SYN-ACK). Kontrolę umożliwia nowy parametr Rejestru:

  HKEY_LOCAL_MACHINE
  \SYSTEM
   \CurrentControlSet
    \Services
     \Tcpip
      \Parameters
       \TcpMaxConnectResponseRetransmissions
           Typ wartości: REG_DWORD
           Zakres prawidłowych wartości: 0-0xFFFFFFFF
           Wartość domyślna: 2


Wartość domyślna dla tego parametru wynosi teraz 3. W poniższej tabeli zaprezentowano zachowanie protokołu TCP/IP w systemie Windows NT 4.0 dla różnych wartości tego parametru:

Wartość  Czasy retransmisji  Łącznie  Uwagi
3        3, 6 i 12 sekund    45 s     Czyszczenie w 24 s po ostatniej retransm.
2        3 i 6 sekund        21 s     Czyszczenie w 12 s po ostatniej retransm.
1        3 sekundy            9 s     Czyszczenie w 6 s po ostatniej retransm.


Ten parametr zmniejsza domyślny czas, który zajmuje wyczyszczenie półotwartego połączenia TCP, ze 189 do 45 sekund i umożliwia administratorowi jego precyzyjniejszą kontrolę. W lokacji będącej celem silnego ataku można ustawić tę wartość nisko, nawet na „1”. Możliwa jest także wartość „0”; jeśli jednak parametr zostanie ustawiony na 0, pakiety SYN-ACK w ogóle nie będą retransmitowane, a limit czasu zostanie przekroczony w 3 sekundy. Przy tak niskiej wartości legalne próby połączeń odległych klientów mogą kończyć się niepowodzeniem.

******************************************************************* 
*  2. Usługa NetBT ma większy, konfigurowany zapas  * 
*******************************************************************


Usługa NetBT (NetBIOS przez TCP/IP) wykorzystuje port TCP o numerze 139 i jest używana przez usługi sieciowe Microsoft, takie jak udostępnianie plików i drukarek. Wersje 3.51 i 4.0 usługi NetBT mają „zapas” dostępnych bloków połączeń, w liczbie dwa plus liczba przyrostowa zależna od klientów NetBT (takich jak readresator, serwer i wszelkie uruchomione aplikacje NetBIOS). Dla typowego serwera liczba ta wynosi 7-11. Opracowano nową wersję usługi NetBT, która w miarę potrzeby automatycznie przydziela więcej bloków połączeń w sposób, który można konfigurować.

W zdarzeniu połączenia usługa sprawdza teraz, czy liczba wolnych bloków jest mniejsza od 2, i jeśli tak jest, dodaje „przyrostową” liczbę bloków, przy czym „przyrost” można konfigurować w Rejestrze w następujący sposób:

  HKEY_LOCAL_MACHINE
  \SYSTEM
   \CurrentControlSet
    \Services
     \NetBt
      \Parameters
       \BacklogIncrement
           Typ wartości: REG_DWORD
           Zakres prawidłowych wartości: 1-0x14 (dziesiętnie 1-20)
           Wartość domyślna: 3


Każdy blok połączenia zużywa 78 bajtów pamięci. Całkowitą liczbę bloków połączeń, którą może przydzielić usługa NetBT, również można konfigurować w Rejestrze:

  HKEY_LOCAL_MACHINE
  \SYSTEM
   \CurrentControlSet
    \Services
     \NetBt
      \Parameters
       \MaxConnBackLog
           Typ wartości: REG_DWORD
           Zakres prawidłowych wartości: 1-0x9c40 (dziesiętnie 1-40000)
           Wartość domyślna: 1000


Parametr MaxConnBackLog przyjmuje domyślną wartość 1000, ale można ustawić w nim wartość wysoką, wynoszącą nawet 40000. Bloki połączeń są „oczyszczane”, czyli usuwane, gdy upływa limit czasu retransmisji SYN-ACK i protokół TCP odrzuca próbę połączenia.

*******************************************************************
*  3. Usługę Afd.sys zmodyfikowano tak, aby wydajnie obsługiwała  *
             *  dużą liczbę połączeń „półotwartych”  *
*******************************************************************


Dla aplikacji Windows Sockets, takich jak serwery FTP i serwery sieci Web, próby połączeń obsługuje usługa Afd.sys. Usługę Afd.sys zmodyfikowano tak, aby mogła obsługiwać dużą liczbę połączeń w stanie „półotwartym” bez odmawiania dostępu legalnym klientom. Pozwala na to możliwość dynamicznej konfiguracji zapasu przez administratora.

Nowa wersja usługi Afd.sys obsługuje cztery nowe parametry Rejestru, które mogą służyć do kontrolowania zachowania zapasu dynamicznego.

EnableDynamicBacklog to przełącznik globalny, służący do włączania lub wyłączania zapasu dynamicznego. Przyjmuje on domyślnie wartość 0 (wyłączony) i ustawienie go w ten sposób nie zmienia nic w porównaniu z wersjami istniejącymi wcześniej. Ustawienie dla niego wartości 1 włącza nową funkcję zapasu dynamicznego.

  HKEY_LOCAL_MACHINE
  \SYSTEM
   \CurrentControlSet
    \Services
     \AFD
      \Parameters
       \EnableDynamicBacklog
           Typ wartości: REG_DWORD
           Zakres prawidłowych wartości: 0,1
           Wartość domyślna: 0
           Wartość sugerowana dla systemu będącego celem silnego ataku: 1


Parametr MinimumDynamicBacklog kontroluje minimalną liczbę wolnych połączeń dozwolonych w punkcie końcowym nasłuchiwania. Jeżeli liczba wolnych połączeń spadnie poniżej tej wartości, wątek zostanie ustawiony w kolejce w celu utworzenia dodatkowych wolnych połączeń. Tej wartości nie należy zbytnio zwiększać, ponieważ kod zapasu dynamicznego włącza się zawsze, gdy liczba wolnych połączeń spadnie poniżej tej wartości. Zbyt duża wartość może prowadzić do spadku wydajności.

  HKEY_LOCAL_MACHINE
  \SYSTEM
   \CurrentControlSet
    \Services
     \AFD
      \Parameters
       \MinimumDynamicBacklog
           Typ wartości: REG_DWORD
           Zakres prawidłowych wartości: 0-0xFFFFFFFF
           Wartość domyślna: 0
           Wartość sugerowana dla systemu będącego celem silnego ataku: 20


Parametr MaximumDynamicBacklog kontroluje maksymalną liczbę „quasi-wolnych” połączeń dozwolonych w punkcie końcowym nasłuchiwania. Do połączeń „quasi-wolnych” zalicza się połączenia wolne wraz z połączeniami w stanie półotwartym (ODEBRANO_SYN). Nie podejmuje się żadnych prób utworzenia dodatkowych połączeń wolnych, jeżeli spowodowałoby to przekroczenie tej wartości.

  HKEY_LOCAL_MACHINE
  \SYSTEM
   \CurrentControlSet
    \Services
     \AFD
      \Parameters
       \MaximumDynamicBacklog
           Typ wartości: REG_DWORD
           Zakres prawidłowych wartości: 0-0xFFFFFFFF
           Wartość domyślna: 0
           Wartość sugerowana dla systemu będącego celem silnego ataku: zależna
           od pamięci. Wartość ta nie powinna przekraczać 5000 dla każdych 32 MB
           pamięci RAM zainstalowanych w serwerze, aby uniknąć wyczerpania
           zestawu niestronicowanego w czasie ataku.


Parametr DynamicBacklogGrowthDelta kontroluje liczbę wolnych połączeń, które zostaną utworzone w przypadku zapotrzebowania na dodatkowe połączenia. Przy ustawianiu tej wartości należy zachować ostrożność, ponieważ zbyt duża wartość może prowadzić do wybuchowego rozmnożenia przydziałów wolnych połączeń.

  HKEY_LOCAL_MACHINE
  \SYSTEM
   \CurrentControlSet
    \Services
     \AFD
      \Parameters
       \DynamicBacklogGrowthDelta
           Typ wartości: REG_DWORD
           Zakres prawidłowych wartości: 0-0xFFFFFFFF
           Wartość domyślna: 0
           Wartość sugerowana dla systemu będącego celem silnego ataku: 10 (0xa)



MaximumDynamicBacklog,



W celu wykorzystania zmian wprowadzonych w usłudze Afd.sys, aplikacje Windows Sockets muszą podczas wykonywania wywołania funkcji listen() jawnie zażądać zapasu większego niż wartość skonfigurowana dla parametru MinimumDynamicBacklog. Aplikacje firmy Microsoft, takie jak Internet Information Server (którego zapas domyślny wynosi 25), można konfigurować. Szczegółowe informacje dotyczące poszczególnych aplikacji są dostępne w bazie wiedzy Microsoft Knowledge Base pod adresem http://www.microsoft.com/kb.

Zmodyfikowane sterowniki dla systemu Windows NT i instrukcje dotyczące ich instalacji są dostępne w kanałach Pomocy technicznej Microsoft lub bezpośrednio z następujących lokalizacji internetowych:

Dla systemu Windows NT 3.51:
ftp://ftp.microsoft.com/bussys/winnt /winnt-public/fixes/usa/nt351/hotfixes-postsp5/syn-attack

Stan

System Windows NT 4.0

Ten problem został usunięty w najnowszej amerykańskiej wersji dodatku Microsoft Windows NT Service Pack dla systemu Windows NT 4.0. Aby uzyskać informacje dotyczące sposobu otrzymania dodatku Service Pack, wyszukaj następujące słowo w bazie wiedzy Microsoft Knowledge Base (bez spacji):
S E R V P A C K

System Windows NT 3.51

Firma Microsoft potwierdziła, że ten problem może stanowić pewną lukę w zabezpieczeniach systemu Windows NT 3.51. Istnieje obecnie w pełni obsługiwana i dostępna poprawka, która jednak nie została do końca przetestowana i powinna być stosowana tylko w systemach, w których stwierdzono ryzyko ataku. Aby ocenić stopień narażenia systemu, należy rozważyć jego dostępność fizyczną, połączenia z siecią i z Internetem, a także inne czynniki. Jeżeli system jest znacznie narażony na ataki, firma Microsoft zaleca zastosowanie poprawki. W przeciwnym razie zaleca się poczekanie na następny dodatek Service Pack dla systemu Windows NT, który będzie zawierał tę poprawkę. Aby uzyskać więcej informacji, skontaktuj się z Pomocą techniczną firmy Microsoft.



Właściwości

Numer ID artykułu: 142641 - Ostatnia weryfikacja: 19 września 2003 - Weryfikacja: 1.2
Informacje zawarte w tym artykule dotyczą:
  • Microsoft Windows NT Server 3.51
  • Microsoft Windows NT Server 4.0 Standard Edition
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Professional Edition
Słowa kluczowe: 
kbnetwork KB142641

Przekaż opinię

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com