Samstag, 31. Juli 2010 |
Die Filterung der Daten durch den in About Security #29 vorgestellten Paketfilter erfolgt auf der Netzzugangs-, Netzwerk- und Transportschicht des TCP/IP-Schichtenmodells. Wie die Daten geprüft werden, erfahren Sie in dieser Folge.
Ethernet-Paket (Version 2, für weitere Informationen siehe zum Beispiel hier):
N E U ! Security
aktuell
Täglich aktuelle Security-Infos!
| Präambel (7 Byte) dient der Synchronisation |
| Paketbegrenzer (1 Byte) markiert den Anfang des Pakets |
| Zieladresse
(6 Byte) Hardwareadresse des Ziels |
| Quelladresse
(6 Byte) Hardwareadresse der Quelle |
| Type (2
Byte) Definition des nächsthöheren Protokolls |
| Daten variabel, min. 46, max. 1.500 Bytes bei weniger als 46 Bytes wird aufgefüllt |
| Prüfsumme (4 Byte) |
Bei einer Filterung auf Basis von Ziel- und Quelladresse kann festgelegt werden, welche Geräte über den Paketfilter miteinander kommunizieren dürfen. Der Typ kann verwendet werden, um unerwünschte Protokolle auszufiltern.
IP-Paket (RFC 791):
| Version (4 Bit) |
Header-Länge (4 Bit) | Servicetype (8 Bit) |
Gesamtlänge in
Bytes (16 Bit) |
||
| Identifikation (16 Bit) |
Flags (3 Bit) |
Fragment-Offset (13 Bit) |
|||
| Time to Live (8 Bit) | Protokoll (8 Bit) | Header-Prüfsumme (16 Bit) | |||
| Quell-IP-Adresse (32 Bit) | |||||
| Ziel-IP-Adresse (32 Bit) | |||||
| IP-Optionen und Füllzeichen (insgesamt 32 Bit) | |||||
| Daten | |||||
Gefiltert werden kann wieder auf Basis von Ziel- und Quelladresse, wobei nun IP-Adressen betrachtet werden. Aus dem Protokollfeld kann das verwendete Protokoll auf der Transportschicht zur Filterung verwendet werden. Das Flags-Feld enthält z.B. Informationen darüber, ob eine Fragmentierung der IP-Pakete durchgeführt wurde. Das IP-Optionen-Feld enthält gegebenenfalls Informationen über das Routing, die ebenfalls zur Filterung herangezogen werden können.
ICMP-Paket (RFC 792):
| Type (8 Bit) |
Code (8 Bit) |
Prüfsumme (16 Bit) |
|
| Verschiedenes (32 Bit) | |||
| IP-Header und weitere 64 Bits oder Testdaten | |||
Bei der Filterung von ICMP-Paketen wird das Type-Feld ausgewertet. Dies enthält die Nachrichtentypen, z.B. Destination Unreachable (Ziel nicht erreichbar), Redirect, Echo Reply, Echo Request oder Time Exceeded (Zeit verstrichen).
TCP-Paket (RFC 793):
| Quell-Port (16 Bit) |
Ziel-Port (16 Bit) |
||
| Sequenznummer (32 Bit) |
|||
| Quittungsnummer (32 Bit) |
|||
| Header-Länge (4 Bit) |
Reserviert (6 Bit) |
Flags (6 Bit) |
Fenstergröße (16 Bit) |
| Prüfsumme (16 Bit) | Urgent Pointer (16 Bit) | ||
| Optionen und Füllzeichen (insgesamt 32 Bit) | |||
| Daten | |||
Zur Filterung können Quell- und Ziel-Port sowie die Flags verwendet werden. Über die Ports kann das verwendete Protokoll ermittelt und mit den zulässigen Diensten verglichen werden. Das SYN-Flag wird beim Verbindungsaufbau in den ersten beiden Paketen gesetzt. Das ACK-Flag ist im jeweils ersten Paket jeder Verbindung nicht gesetzt, alle weiteren Pakete der aufgebauten Verbindung enthalten ein gesetztes ACK-Flag. Dies kann vom Paketfilter genutzt werden, um eine bestehende Verbindung zu erkennen. Das PSH-Flag kann zum Erkennen von HTTP-Response-Splitting- und HTTP-Request-Smuggling-Angriffen verwendet werden (siehe About Security #20).
UDP-Paket (RFC 768):
| Quell-Port (16 Bit) |
Ziel-Port (16 Bit) |
| Länge (16 Bit) |
Prüfsumme (16 Bit) |
| Daten | |
Wie bei TCP können Quell- und Ziel-Port zur Filterung verwendet werden.
Die Daten der verschiedenen Pakete werden folgendermaßen ineinander gekapselt:
| Daten | Anwendungsschicht | |||
|
|
||||
| TCP-Header | Daten | Transportschicht (TCP) | ||
| = TCP-Daten | ||||
|
|
||||
| IP-Header | TCP-Header | Daten | Netzwerkschicht (IP) | |
| = IP-Daten | ||||
|
|
||||
| Ethernet-Header | IP-Header | TCP-Header | Daten | Netzzugangsschicht (Ethernet) |
| = Ethernet-Daten | ||||
| Nr. | Senderadresse | Port | Zieladresse | Port | Protokoll | Flags | Aktion |
|
|
|||||||
| 1. | 0.0.0.0 | >= 1024 | 80.237.217.196 | 80 | TCP | permit | |
| 2. | 80.237.217.196 | 80 | 0.0.0.0 | >= 1024 | TCP | ACK | permit |
| 3. | 0.0.0.0 | any | 80.237.217.196 | any | any | any | reject |
Woher kommen welche Daten?
Die Sender- und Zieladresse werden dem IP-Header entnommen, ebenso das
verwendete Protokoll. Der jeweilige Port ist im TCP-Header gespeichert,
ebenso die Flags.
Weitere Regeln: HTTPS wird erlaubt
Jetzt sollen Regeln hinzugefügt werden, die den Zugriff auf den
Webserver über HTTPS erlauben. Als Faustregel für einen
Paketfilter kann man sich "WWW" merken:
(oder kurz: "Wer darf was wo?"). In diesem Fall lauten die Antworten:
sollen durchgelassen werden, ebenso die Antworten darauf. Die bisherige Regel 3 wandert an das Ende der Regelkette, und zwei neue Regeln übernehmen die Durchleitung der HTTPS-Kommunikation:
| Nr. | Senderadresse | Port | Zieladresse | Port | Protokoll | Flags | Aktion |
|
|
|||||||
| 3. | 0.0.0.0 | >= 1024 | 80.237.217.196 | 443 | TCP | permit | |
| 4. | 80.237.217.196 | 443 | 0.0.0.0 | >= 1024 | TCP | ACK | permit |
| 5. | 0.0.0.0 | any | 80.237.217.196 | any | any | any | reject |
Die obigen Beispiele sind relativ einfach. Schwieriger ist die Konfiguration des Paketfilters für die Filterung von FTP-Verbindungen. Wieso das so ist und wie Sie FTP-Verbindungen zulassen bzw. verhindern können, erfahren Sie in der nächsten Folge, in der außerdem zustandsorientierte Paketfilter (Stateful Inspection) vorgestellt werden.
Wenn Sie Fragen oder Themenvorschläge haben, können Sie diese gerne an die angegebene E-Mail-Adresse senden oder im Security-Forum einbringen!
About Security – Übersicht zum aktuellen Thema "Firewall"