Zustandsbehaftete ALE-Filterung

Filter, die auf den ALE-Ebenen (Application Layer Enforcement) der Windows-Filterplattform (Windows Filtering Platform, WFP) installiert sind, führen zustandsbehaftete Netzwerkfilterung aus. Ein ALE-Flow wird als Grundlage für die zustandsbehaftete ALE-Filterung verwendet.

Ein ALE-Flow ist eine Möglichkeit zum Klassifizieren des Netzwerkdatenverkehrs, indem er anhand einer Quell-IP-Adresse, einer Ziel-IP-Adresse, eines Quellports, eines Zielports und eines Protokolls gruppiert wird. Ein ALE-Flow kann generisch sein, d. a. eine oder mehrere deskriptoren können alles (oder ein Wildcard *) übereinstimmen. Ein generischer UDP-ALE-Flow würde beispielsweise als Quell-IP-Adresse = *, Ziel-IP-Adresse = *, Quellport = *, Zielport = * und Protokoll = UDP beschrieben.

Sobald eine Verbindung autorisiert wurde (eingehende Verbindungen werden auf der FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V{4|6}- Ebene und ausgehende Verbindungen auf der FWPM_LAYER_ALE_AUTH_CONNECT_V{4|6}- Ebene autorisiert), wird ein ALE-Fluss erstellt, sodass, außer bei einer Richtlinienänderung, alle ein- und ausgehenden Pakete, die zum gleichen ALE-Fluss gehören, automatisch zugelassen werden. Da eine Richtlinienänderung möglicherweise das Blockieren zuvor zulässiger Verbindungen erfordert, müssen ALE-Flows bei einer Richtlinienänderung erneut autorisiert werden.

Die zustandsbehaftete ALE-Filterung reduziert die Anzahl der erforderlichen Klassifizierungen drastisch, indem nur das erste Paket klassifiziert wird, das zu einem ALE-Flow gehört. Im Vergleich dazu erfordert die nicht zustandsbehaftete Filterung eine Klassifizierung jedes Pakets, das das Netzwerk durchläuft.

Ein ALE-Flow weist eine zugeordnete Richtung auf, die die Richtung des ersten Pakets des Flows darstellt. Dies ermöglicht flexiblere Richtlinien, da eingehende initiierte Verbindungen andere Richtlinien als ausgehende Verbindungen aufweisen.

TCP-ALE-Fluss

Ein ALE-Fluss für TCP-Datenverkehr wird durch das Fünf-Tupel von TCP/IP (Quell-IP-Adresse, Ziel-IP-Adresse, Quellport, Zielport und Protokoll) identifiziert.

Ein TCP-ALE-Flow hat die gleiche Lebensdauer wie ein verbundener TCP-Socket. Ein verbundener TCP-Socket kann entweder ein Socket sein, der mit connect() erstellt wurde, oder ein Socket, der als Ergebnis eines accept() -Aufrufs erstellt wurde.

ALE verwaltet eine 1:1-Beziehung zwischen einem TCP-ALE-Fluss und einem TCP-Kontrollblock (TCP Control Block, TCB).

UDP-ALE-Flow

Hinweis

Protokolle, die nicht TCP oder ICMP sind, werden wie UDP behandelt.

 

Ein ALE-Fluss für UDP-Datenverkehr wird durch das Fünf-Tupel von TCP/IP (Quell-IP-Adresse, Ziel-IP-Adresse, Quellport, Zielport und Protokoll) identifiziert.

Ein UDP-ALE-Flow wird basierend auf einem UDP-Socket erstellt und stellt den Remotepeer dar, mit dem die Anwendung kommuniziert. Ein Remotepeer wird durch ein Tupel (Ziel-IP-Adresse und Zielport) identifiziert.

Zwischen einem UDP-Socket und den Remotepeers, mit denen er kommuniziert, besteht eine 1:n-Beziehung.

Wenn der lokale UDP-Socket geschlossen wird, werden alle zugeordneten ALE-Flows gelöscht.

Ohne Socketabschluss verfügen UDP-Unicast-ALE-Flows über ein konfigurierbares Leerlauftimeout, das standardmäßig 60 Sekunden beträgt. Wenn innerhalb dieses Fensters keine Pakete gesendet oder empfangen werden, wird der ALE-Flow gelöscht. Dieses Standardtimeout wird schrittweise verkürzt, wenn die Anzahl der systemweiten ALE-Flows einen bestimmten Schwellenwert erreicht.

ICMP ALE-Flow

Ein ALE-Fluss für ICMP-Datenverkehr wird durch das Sechs-Tupel (Quell-IP-Adresse, Ziel-IP-Adresse, ICMP-Typ, ICMP-Code, Protokoll und ICMP-ID) identifiziert. Die ICMP-ID ist nur für ICMP-Echo-/Antwortdatenverkehr Teil des ALE-Flusses.

Ohne Socketschließungen weisen ICMP-Unicast-ALE-Flows ein konfigurierbares Leerlauftimeout auf, das standardmäßig 60 Sekunden beträgt. Wenn innerhalb dieses Fensters keine Pakete gesendet oder empfangen werden, wird der ALE-Flow gelöscht. Dieses Standardtimeout wird schrittweise verkürzt, wenn die Anzahl der systemweiten ALE-Flows einen bestimmten Schwellenwert erreicht.

Nur ICMP-Nicht-Fehlermeldungen werden für ALE-Ebenen angezeigt. ICMP-Fehlermeldungen können auf ICMP_ERROR Ebenen überprüft werden.

Erzwingung auf Anwendungsebene (Application Layer Enforcement, ALE)

ALE-Ebenen

ALE-Multicast-/Broadcastdatenverkehr

Erneute ALE-Autorisierung

Anpassung des ALE-Flusses

TCP-Paketflows

UDP-Paketflows

Winsock-Funktionen