M 5.105 Vorbeugen vor SYN-Attacken auf den IIS
Verantwortlich für Initiierung: Leiter IT, IT-Sicherheitsmanagement
Verantwortlich für Umsetzung: Administrator
TCP-Verbindungen werden über einen Drei-Wege-Handshake aufgebaut, indem zuerst ein so genanntes SYN-Paket (SYN dient der Synchronisation von Sequenznummern beim Verbindungsaufbau) gesendet, darauf mittels eines SYN/ACK-Paketes geantwortet und anschließend wiederum mittels eines ACK-Paketes bestätigt wird. Bei einer SYN-Flooding-Attacke wird dem "Opfer" beim Handshake eine falsche Absenderadresse übermittelt. Das SYN/ACK-Antwortpaket wird also an eine falsche IP-Adresse gesendet. Wenn nach einiger Zeit keine Rückantwort in Form eines ACK-Paketes erfolgt, wird der Verbindungsversuch als erfolglos abgebrochen. Der entscheidende Punkt beim SYN-Flooding besteht darin, diese Zeit bis zum Abbruch (Timeout) dafür zu nutzen, das Opfer mit SYN-Paketen zu überfluten. Das SYN-Flooding kann dadurch ein Denial of Service (DoS) auslösen, da der Server für jede halboffene Verbindung Speicher belegt.
Mit dem Befehl netstat -n -p tcp werden alle aktuellen Verbindungen eines Rechners aufgelistet.
Wenn sich viele Verbindungen im Status SYN_RECEIVED befinden, kann dies ein Hinweis auf einen möglichen Angriff sein. Um diesen Attacken vorzubeugen, sind einige Einstellungen im TCP/IP über die Registrierung vorzunehmen.
"halboffene" Verbindungen schneller abbrechen
Die Information, wie häufig eine Antwort auf eine TCP-Verbindungsanfrage gesendet wird, kann an den Treiber Tcpip.sys (ab Windows NT 4.0 SP 2) übergeben werden. Der Registrierungsschlüssel TcpMaxConnectResponseRetransmissions steuert das Verhalten.
Registrierung | |
---|---|
Bereich |
HKEY_LOCAL_MACHINE\SYSTEM |
Schlüssel |
CurrentControlSet\Services\Tcpip\Parameters |
Name |
TcpMaxConnectResponseRetransmissions |
Type |
REG_DWORD |
Wert |
3 (Standard) |
Dieser Eintrag legt fest, wie oft eine Erwiderung auf einen versuchten TCP-Verbindungsaufbau wiederholt wird. D. h. es wird festgelegt, wie viele TCP-SYN-ACKs nach Eingang eines TCP-SYN gesendet werden. Die erste Verzögerung liegt bei drei Sekunden, mit jeder neuen Übertragung des TCP-SYN-ACKs wird diese Wartezeit verdoppelt.
Standardmäßig ist der Wert des Registrierungsschlüssels auf 3 gesetzt (höchster Wert). Ein zu niedriger Wert kann bei höheren Laufzeiten einen korrekten Verbindungsaufbau verhindern. Zu empfehlen ist eine Einstellung
von 1 oder 2 in Abhängigkeit von den Eigenschaften des Netzes und der Wahrscheinlichkeit von SYN-Attacken. Die folgende Tabelle zeigt eine Übersicht über mögliche Werte und die damit verbundenen Eigenschaften.
Wert | Abstände der Übertragungswiederholungen | Verstrichene Zeit | Kommentar |
---|---|---|---|
3 |
3, 6 und 12 Sekunden |
45 Sekunden |
Der Versuch gilt nach 24 Sekunden nach der letzten Wiederholung als beendet. |
2 |
3 und 12 Sekunden |
21 Sekunden |
Der Versuch gilt nach 12 Sekunden nach der letzten Wiederholung als beendet. |
1 |
3 Sekunden |
9 Sekunden |
Der Versuch gilt nach 6 Sekunden nach der letzten Wiederholung als beendet. |
0 |
Es werden keine SYN-ACKs in Wiederholung gesendet. |
Nach drei Sekunden ist der TCP-SYN-Versuch verfallen. |
Dieser Wert kann dazu führen, dass korrekte Versuche zum Verbindungsaufbau scheitern, wenn die Laufzeit über ein langsames Netz hin und zurück mehr als drei Sekunden beträgt. |
Tabelle 1: Einstellungen des Treibers Tcpip.sys
NetBIOS über TCP/IP
NetBIOS über TCP/IP (NetBT) ist die Netzkomponente, die über den TCP-Anschluss 139 den Microsoft Netzdienst (z. B. Datei- und Druckerfreigaben) zur Verfügung stellt. NetBIOS kann einen Angriffspunkt für eventuelle Attacken darstellen und sollte aus diesem Grund deaktiviert werden. Dazu wird über die Systemsteuerung im Menü Netzwerk | Dienste die NetBios-Schnittstelle entfernt.
Um einen externen Zugriff auf das NetBIOS-Protokoll zu verhindern, sollten die Ports 137 und 139 auf der Firewall zwischen Internet und Web-Server generell gesperrt werden.
Kann auf NetBT nicht verzichtet werden, so ist das Verhalten von NetBT wie folgt in der Registrierung einzustellen (ab Windows NT 4.0 SP 2).
Einstellen der zunehmenden Verbindungsblöcke (INCREASING CONNECTION BLOCK INCREMENT)
Die Anzahl der Verbindungsblöcke, die hinzugefügt werden, falls die Anzahl der freien Blöcke unter zwei liegt, wird wie folgt in der Registrierung eingestellt:
Registrierung | |
---|---|
Bereich |
HKEY_LOCAL_MACHINE\SYSTEM |
Schlüssel |
CurrentControlSet\Services\NetBT\Parameters |
Name |
BacklogIncrement |
Type |
REG_DWORD |
Wert |
3 (Standard) |
Bereich |
1 bis 20 |
Der Standardwert 3 kann in der Regel beibehalten werden. Ist der Wert zu hoch, werden viele Systemressourcen benötigt, was hingegen aber die Geschwindigkeit erhöht, mit der die Anschlüsse zur Verfügung gestellt werden.
Einstellen der maximalen Verbindungsblöcke (MAXIMUM CONNECTION BLOCKS)
Jeder Verbindungsblock belegt 78 Byte im Arbeitsspeicher. Die Anzahl der maximalen Verbindungsblöcke wird wie folgt in der Registrierung eingestellt:
Registrierung | |
---|---|
Bereich |
HKEY_LOCAL_MACHINE\SYSTEM |
Schlüssel |
CurrentControlSet\Services\NetBT\Parameters |
Name |
MaxConnBackLog |
Type |
REG_DWORD |
Wert |
1.000 (Standard) |
Bereich |
1 bis 40.000 |
Der Standardwert 1.000 kann in der Regel beibehalten werden. Abhängig von der Systemausstattung und der Frequentierung des Servers kann der Wert bis 40.000 erhöht werden.
Einstellen des dynamischen Reserve-Verhaltens
Anwendungen wie ftp-Server und Web-Server verarbeiten die TCP-Anschlussversuche mit Hilfe der Komponente afd.sys. Dieser Treiber ist von Microsoft geändert worden, um viele Anschlüsse während der Synchronisation (SYN_RECEIVED) zu unterstützen, ohne den Zugriff von einem berechtigten Client zu verweigern.
Diese Einstellungen sind durch den Administrator entsprechend zu konfigurieren.
Hierzu unterstützt die neue Version von afd.sys vier Parameter, die in der Registrierung hinterlegt sind. Diese Parameter steuern das dynamische Reserve-Verhalten.
EnableDynamicBacklog ist ein globaler Schalter zum Aktivieren oder Sperren der dynamischen Reserve. Der Standardwert ist 0 (deaktiviert). Diese Einstellung liefert keine Änderung zur vorherigen Version. Bei einem durch SYN-Attacken bedrohten System sollte das dynamische Reserve-Verhalten durch Setzen des Wertes 1 aktiviert werden.
Registrierung | |
---|---|
Bereich |
HKEY_LOCAL_MACHINE\SYSTEM |
Schlüssel |
CurrentControlSet\Services\AFD\Parameters |
Name |
EnableDynamicBacklog |
Type |
REG_DWORD |
Wert |
1 |
MinimumDynamicBacklog steuert die Mindestzahl der freien Anschlüsse, die erlaubt werden. Dieser Wert sollte nicht zu groß gewählt werden, denn ein zu großer Wert kann zu Leistungseinbrüchen führen. Es wird empfohlen, den Wert auf 20 einzustellen.
Registrierung | |
---|---|
Bereich |
HKEY_LOCAL_MACHINE\SYSTEM |
Schlüssel |
CurrentControlSet\Services\AFD\Parameters |
Name |
MinimumDynamicBacklog |
Type |
REG_DWORD |
Wert |
20 |
MaximumDynamicBacklog steuert die Höchstzahl der freien Anschlüsse und der Anschlüsse, die sich im Synchronisationsmodus (SYN_RECEIVED) befinden.
Registrierung | |
---|---|
Bereich |
HKEY_LOCAL_MACHINE\SYSTEM |
Schlüssel |
CurrentControlSet\Services\AFD\Parameters |
Name |
MaximumDynamicBacklog |
Type |
REG_DWORD |
Wert |
Dieser Wert sollte nicht 5000 pro 32MB RAM übersteigen. |
DynamicBacklogGrowthDelta legt die maximale Zahl verfügbarer Verbindungen fest, die eingerichtet werden, wenn das dynamic backlog feature ausgelöst wird. Ist der Wert zu groß, kann es zu einem übermäßigen Anwachsen der Zahl freier Verbindungen kommen. Es wird empfohlen, den Wert auf 10 einzustellen.
Registrierung | |
---|---|
Bereich |
HKEY_LOCAL_MACHINE\SYSTEM |
Schlüssel |
CurrentControlSet\Services\AFD\Parameters |
Name |
DynamicBacklogGrowthDelta |
Type |
REG_DWORD |
Wert |
10 |
Die aktuelle Version des Treibers (afd.sys) ist in den aktuellen Service Packs für Windows NT 4.0 und Windows 2000 enthalten. Weitere Informationen sind bei Microsoft erhältlich.
Ergänzende Kontrollfragen:
- Wurden die Einstellungen in der Registry angepasst, um SYN-Attacken vorzubeugen?