ALE-Ebenen
Die Anwendungsebenenerzwingung (Application Layer Enforcement, ALE) besteht aus mehreren Filterebenen und vielen übereinstimmenden Verwerfensebenen. Alle WFP-Filtermodulebenen (Windows Filtering Platform), einschließlich ALE, werden unter Filterebenenbezeichner beschrieben. Dieses Thema enthält eine ausführlichere Beschreibung der Filterebenen, die Teil von ALE sind.
Ein Filter auf der FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V{4|6}- Ebene wird für explizite oder implizite Netzwerkbindungsvorgänge abgeglichen.
Wenn ein Filter auf dieser Ebene abgeglichen wird, um die Erstellung unformatierter Sockets zu autorisieren, wird das flag FWP_CONDITION_FLAG_IS_RAW_ENDPOINT festgelegt.
Wenn ein Filter auf dieser Ebene abgeglichen wird, um den Empfang im promiskenden Modus zu autorisieren, wird das Feld FWP_CONDITION_ALE_PROMISCUOUS_MODE auf SIO_RCVALL festgelegt. Eine Beschreibung der SIO_RCVALL finden Sie unter WSAIoctl.
Hinweis
Dies ist die einzige Ebene, in der der promiskuous Modus gefiltert werden kann.
Wenn während bind() kein Port angegeben wird, d. s. Port auf 0 (Null) festgelegt ist, wählt der TCP/IP-Stapel einen Port aus dem dynamischen Portbereich (19152–65535) aus. Der ausgewählte Port wird auf dieser Ebene zusammen mit dem flag FWP_CONDITION_FLAG_IS_WILDCARD_BIND klassifiziert.
Wenn die lokale Adresse im bind() -Aufruf nicht angegeben wird, wird das Feld für lokale Adressen auf FWP_EMPTY festgelegt.
Ein Filter auf der FWPM_LAYER_ALE_AUTH_LISTEN_V{4|6}- Ebene wird für TCP-Listen() -Aufrufe abgeglichen.
Ein Filter auf der FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V{4|6} -Ebene wird für TCP accept() -Aufrufe, für die ersten UDP-Pakete (Unicast) von einem eindeutigen Remoteadressen-/Porttupel und für die ersten eingehenden nicht fehlerfreien ICMP-Nachrichten (Unicast) mit einem eindeutigen ICMP-Typ, Code und id abgeglichen.
Hinweis
Protokolle, die nicht TCP oder ICMP sind, werden wie UDP behandelt.
TCP-Pakete, die von unformatierten Sockets empfangen werden, werden ähnlich wie UDP-Datenverkehr behandelt. Das heißt, nur der erste TCP send() und der erste TCP recv() über Unformatierten Sockets werden gefiltert.
Ein Filter auf der FWPM_LAYER_ALE_AUTH_CONNECT_V{4|6}- Ebene wird für TCP connect() -Aufrufe, für die ersten UDP-Pakete, die an eine eindeutige Remoteadresse und ein Porttupel gesendet werden, und für die ersten ausgehenden nicht fehlerrelevanten ICMP-Nachrichten mit einem eindeutigen ICMP-Typ, Code und id abgeglichen.
Hinweis
Protokolle, die nicht TCP oder ICMP sind, werden wie UDP behandelt.
TCP-Pakete, die von unformatierten Sockets gesendet werden, werden ähnlich wie UDP-Datenverkehr behandelt. Das heißt, nur der erste TCP send() und der erste TCP recv() über Unformatierten Sockets werden gefiltert.
Ein Filter auf der FWPM_LAYER_ALE_FLOW_ESTABLISHED_V{4|6} -Ebene wird abgeglichen, nachdem ein TCP-Drei-Wege-Handshake erfolgreich abgeschlossen wurde. Bei Nicht-TCP-Datenverkehr wird der Filter sofort abgeglichen, nachdem Filter aus AUTH_RECV_ACCEPT oder AUTH_CONNECT Ebenen abgeglichen wurden.
Ein Filter auf dieser Ebene sollte weder Block noch Permit zurückgeben.
Diese Ebene wird von Beschriftungstreibern verwendet, um den Verbindungsstatus nachzuverfolgen. Dies wird in der Dokumentation zum Windows Driver Kit ausführlich beschrieben.
Ein Filter auf der Ebene FWPM_LAYER_ALE_RESOURCE_RELEASE_V{4|6} wird abgeglichen, nachdem Ressourcen, die über RESOURCE_ASSIGNMENT zugeordnet wurden, freigegeben wurden.
Ein Filter auf der FWPM_LAYER_ALE_ENDPOINT_CLOSURE_V{4|6}- Ebene wird abgeglichen, wenn ein verbundener TCP-Flow oder UDP-Sockets-Endpunkt geschlossen wird.
Ein Filter auf der FWPM_LAYER_ALE_CONNECT_REDIRECT_V{4|6}- Ebene ermöglicht die Änderung von Remoteadressen und -ports. Die ausgehende Verbindung wird für die Dauer dieser Verbindung umgeleitet.
Ein Filter auf der FWPM_LAYER_ALE_BIND_REDIRECT_V{4|6}- Ebene ermöglicht die Änderung der lokalen Adresse und ports des zugrunde liegenden Sockets. Der lokale Socket wird für die Lebensdauer des Sockets umgeleitet.
Für jede der oben beschriebenen ALE-Ebenen enthält die Filter-Engine eine entsprechende Verwerfensebene. Die ALE-Verwerfensebenen werden von Legenden zu Protokollierungszwecken verwendet. Pakete und Hinweise, die auf einer der ALE-Filterebenen verworfen wurden, werden der entsprechenden ALE-Verwerfensebene angezeigt.