Stateful Packet Inspection
Unter Stateful Packet Inspection (SPI) versteht man eine dynamische Paketfiltertechnik, bei der jedes Datenpaket einer bestimmten aktiven Session zugeordnet wird.
Die Datenpakete werden analysiert und der Verbindungsstatus wird in die Entscheidung einbezogen. Bei dieser Technik, die in Firewalls eingesetzt wird, werden die Datenpakete während der Übertragung auf der Vermittlungsschicht analysiert und in dynamischen Zustandstabellen gespeichert. Auf Basis des Vergleichs von mehreren Datenpaketen und durch die Ermittlung der Korrelation zwischen zusammengehörenden Datenpaketen werden die Entscheidungen für die Weiterleitung der Datenpakete getroffen. Datenpakete, die nicht bestimmten Kriterien zugeordnet werden können oder eventuell zu einer DoS-Attacke gehören, werden verworfen. Firewalls mit SPI-Technik sind daher in sicherheitsrelevanten Anwendungen den reinen Paketfilter-Firewalls überlegen.
Die Firma Check Point Software Technologies Ltd. nimmt für sich in Anspruch, diese Technik erfunden und patentiert zu haben (U.S. Patent # 5,606,668).
Funktionsweise
Kommuniziert ein Rechner A mit einem Rechner B über einen einfachen Paketfilter, so muss dieser in seinem Regelwerk zwei Verbindungen erlauben:
- Quelle A nach Ziel B mit Dienst HTTP (für die Anfrage, z. B. „Schicke mir Webseite www.beispiel.de“)
- Quelle B nach Ziel A mit Dienst HTTP (für die Antwortpakete, in diesem Beispiel der Inhalt von www.beispiel.de)
Dadurch ist das Regelwerk unsicherer als eigentlich nötig, da B jederzeit an A senden darf, auch wenn A gar keine Webseite angefordert hat.
Bei der Zustandsgesteuerten Filterung wird nur eine Regel benötigt (bzw. die zweite wird implizit hinzugefügt):
- Quelle A nach Ziel B
Der Paketfilter merkt sich, wenn Rechner A mit Rechner B kommuniziert und erlaubt nur dann Antworten darauf von Rechner B an Rechner A. Rechner B kann dadurch nicht ohne Anforderung von A beginnen.
Die Regeln für Antwortpakete werden dynamisch erzeugt und werden nach Eintreffen der Antwort oder nach einem Timeout automatisch gelöscht.
Noch weitergehende Systeme prüfen zusätzlich, ob ein Paket zu einem bestimmten Zeitpunkt in der Kommunikation überhaupt erlaubt ist (zum Beispiel weitere Pakete schicken, obwohl der andere Teilnehmer die Kommunikation bereits abgeschlossen hat).
Stateful Inspection bei UDP-Paketen
Auf den ersten Blick sieht eine Stateful Packet Inspection bei UDP-Paketen wie ein Widerspruch aus, da UDP im Gegensatz zu TCP zustandsfrei arbeitet. Die meisten Implementierungen behandeln UDP trotzdem als stateful, in dem Sinne, dass beim Versenden einer Anforderung per UDP für kurze Zeit eine dynamische Firewall-Regel für die Antwortpakete erzeugt wird. Im Beispiel DNS-Anfragen werden dadurch nur Antwortpakete von den Nameservern erlaubt, die man selbst gefragt hat.
Implementierungen von Stateful Firewalls
- Check Point Firewall-1 (Solaris, Windows, IPSO)
- Pf (Paketfilter) (OpenBSD)
- Ipfw (FreeBSD)
- Iptables (Linux 2.4)
- Ipchains (Linux 2.2)
- Ipfwadm (Linux 2.0)