Online Suche im Handbuch | LITTLE-IDIOT NETWORKING |
Manchmal ist es sinnvoll eine TCP-Verbindung in nur eine Richtung zuzulassen, und in die andere Richtung zu verbieten. Wir müssen hierzu zwischen dem Vorgang des Verbindungsaufbaues und der Übertragung der folgenden Pakete unterscheiden. Um eine Verbindung aufzubauen, wird ein SYN Paket gesendet, welches mit einem ACK quittiert wird. Danach folgen nur noch Pakete, die kein ACK Bit gesetzt haben. Es reicht also nach dem SYN-Bit zu differenzieren, da Pakete mit SYN-Bit kein ACK-Bit gesetzt haben sollten. Was aber passiert, wenn ein Angreifer SYN und ACK Bits zusammen setzt ? Nun, sobald ein ACK Flag gesetzt ist, muß das Paket zu einer bestehenden Verbindung gehören. Die Firewall merkt sich stets Verbindungen, die mit einem SYN-Flag erfolgreich den Filter passiert haben. Da TCP Verbindungen stets mit Prüfsumme und Sequenznummer abgesichert sind, gelingt es dem Zielhost oder der Firewall nicht, diese Pakete einer Verbindung zuzuordnen, daher werden sie abgelehnt. Da es leider noch einige Betriebssysteme gibt, die schwere Fehler im TCP/IP Stack haben (Windows NT), sollte man möglichst eine Firewall mit PROXY einsetzen. Stateful Paket Filter (SPF´s) leiten Pakete manchmal ohne diese Prüfung weiter (RAPTOR, FIREWALL-1). Um also einen Verbindungaufbau von außen nach innen zu erlauben, darf beim ersten Paket das ACK-Bit nicht gesetzt sein. Was passiert aber, wenn der Router nicht nach SYN/ACK unterscheiden kann, oder die ACK Regeln falsch gesetzt wurden ?
Ein Beispiel:
Regel Richtung Protokoll Quellport Zielport
1 ein TCP >1023 25
2 aus TCP 25 >1023
3 aus TCP >1023 25
4 ein TCP 25 >1023
Das Beispiel zeigt die Filterregeln, die einen Host hinter einem Paketfilter schützen sollen. Ein Client aus dem Internet kann eine Verbindung zu dem Host aufbauen, um e-Mail zu senden (Regel 12). Der Host selber darf Verbindungen zu anderen Hosts aufbauen, um e-Mails zu versenden. Regel (34). Was ist aber, wenn ein Angreifer mit einem Client von Port 25 aus einen beliebigen Port > 1023 auf dem Host erreichen will ? Nach Regel 4 würde die Verbindung zugelassen werden. Ein Angriff wäre somit erfolgreich. Der kleine Zusatz in Regel 4 (ACK gesetzt) bedeutet gleichzeitig: SYN darf keinesfalls gesetzt sein ! Dann ist nämlich der Verbindungsaufbau von Port 25 nach z.B. Port 8080 (WWW-PROXY-CACHE) des Hosts untersagt.
Ein großes Problem ist die Behandlung von UDP. UDP kennt keine ACK-Bits, sodaß hier der Paketfilter immer wieder von neuem entscheiden muß, ob das Paket zulässig ist, oder nicht. UDP besitzt auch keine Prüfsummen, die eventuell verlorengegangene oder von einem Angreifer zusätzliche eingeschleuste Pakete entdecken könnten. Hierfür gibt es TCP<->UDP Relays
Für die Sicherheitsüberprüfung mit einem Portscanner bedeutet dieses, daß alle Kombinationen von Quellport und Zielport ebenfalls geprüft werden müssen. Das wären ungefähr 4.3 Milliarden Pakete (65536^2). Die Überprüfung mit nur einem Paket würde ca. 1 Tag dauern (10 MBit). Portscanner überprüfen daher stets nur die Zielports unter Verwendung eines einzigen Quellports.
Wie wichtig diese Überprüfung ist, zeigt sich an einem Einbruch in die Site von Wietse Venema, der Autor des TCP-WRAPPER ist. Ein Hacker hat den Quellcode so verändert, daß eine Rootshell aktiviert wird, sobald von einem bestimmten Quellport auf einen bestimmten Zielport des Wrappers zugegriffen wird. Ein normaler Portscanner hätte das Problem nicht erkannt. Umso wichtiger erscheint es, daß die Firewall "counter intelligence" Mechanismen besitzt, und nach einigen wenigen Portscans die Verbindung zu diesem Host sperrt ! Der Nachteil ist jedoch, daß die Firewallregeln schlecht überprüfbar sind, da stets die counter intelligence Mechanismen aktiv werden und die Sicherheitsüberprüfung verhindern.
Online Suche im Handbuch | LITTLE-IDIOT NETWORKING |