Freigeben über


Extensible Helper-Klasse der Windows-Filterplattform

Die Windows-Filterplattform (Windows Filtering Platform, WFP) enthält eine NDF-Hilfsklasse (Network Diagnostics Framework), die als Filterplattform-Hilfsklasse (Filtering Platform Helper Class, FPHC) bezeichnet wird. Die FPHC kann dabei helfen, die Ursachen von Verbindungsproblemen zu identifizieren, die durch die WFP verursacht werden. Firewallentwickler*innen von Drittanbietern können ihre eigenen NDF-Hilfsklassen implementieren. Durch die FPHC-Erweiterbarkeit können diese Hilfsklassen von Drittanbietern während der Diagnose aufgerufen werden.

In diesem Artikel wird davon ausgegangen, dass Sie mit der WFP-API vertraut sind.

Warum sollte die FPHC erweitert werden?

Alle Entwickler*innen, die Anwendungen schreiben, mit denen die WFP-API aufgerufen wird, sollten eine NDF-Hilfsklasse schreiben, die die FPHC erweitert.

Die FPHC kann die WFP als Ursache für ein Verbindungsproblem identifizieren. Wenn die FPHC verfügbar ist, kann sie auch den Anbieter identifizieren, der den Filter erstellt hat, mit dem der Netzwerkdatenverkehr blockiert wird. Die FPHC übergibt diese Informationen an das NDF, das wiederum die Benutzer*innen darüber benachrichtigen kann, dass die WFP das Verbindungsproblem verursacht. Zudem wird der Name des Anbieters genannt, der den Datenverkehr blockiert.

Die FPHC kann den Benutzer*innen jedoch keine Korrekturmaßnahmen vorschlagen, und es kann auch nicht angegeben werden, warum der Filter den Datenverkehr der Benutzer*innen blockiert. Nur eine FPHC-Erweiterung kann diese Aufgaben ausführen.

Erwägen Sie eine Firewallanwendung von Drittanbietern, die die WFP-API aufruft. Wenn die Firewall eines Drittanbieters eine FPHC-Erweiterung implementiert, können benutzerdefinierte Aktionen implementiert werden, um die vom NDF identifizierten Konnektivitätsprobleme zu behandeln. Wenn das NDF erkennt, dass eine Anwendung von der Firewall eines Drittanbieters blockiert wurde, kann die FPHC-Erweiterung das Blockierungsereignis verarbeiten. Eine Möglichkeit, wie die FPHC-Erweiterung ein Ereignis behandeln kann, besteht darin, den Benutzer*innen eine Aufforderung zum Aufheben der Blockierung eines Programms mithilfe der Firewall anzuzeigen und dann die Blockierung des Programms nach der Benutzerbestätigung aufzuheben. Alternativ kann die FPHC-Erweiterung ein Ereignis behandeln, indem die Benutzer*innen über den Grund informiert werden, warum die Anwendung blockiert wurde (beispielsweise wenn eine Anwendung blockiert wurde, da sie von der Firewall als Schadsoftware eingestuft wurde).

Informationen zur WFP-Diagnose

Wenn das NDF aufgerufen wird, um ein Netzwerkproblem zu diagnostizieren, werden Hilfsklassen verwendet, um die Ursache des Problems zu ermitteln. Wenn eine Hilfsklasse auf höherer Ebene feststellt, dass ein Netzwerkfehler möglicherweise durch die WFP verursacht wird, generiert sie basierend auf verfügbaren Informationen eine Hypothese für die FPHC. Das NDF übergibt diese Hypothese in Form mehrerer Ereignisattribute an die FPHC. Diese Attribute werden im Abschnitt FPHC-Ereignisattribute unten ausführlich beschrieben.

Ein Netzwerkproblem kann als Verbindungsproblem beschrieben werden, das sich auf einen bestimmten Verbindungsversuch auswirkt. Beispielsweise haben die Benutzer*innen versehentlich eine Anwendung blockiert, indem sie Nicht zulassen ausgewählt haben. Die Firewall blockiert dann die Bindung der Anwendung an einen beliebigen Port. Die Benutzer*innen, die nicht wissen, warum die Anwendung blockiert wird, können versuchen, das Problem über einen Einstiegspunkt zu diagnostizieren, der von der Anwendung angeboten wird. Die FPHC untersucht die Protokolle, und wenn eine Übereinstimmung gefunden wird, ruft sie die Filter-ID und die Anbieter-ID dieses bestimmten Filters ab. An diesem Punkt weiß die FPHC, wer die Besitzer*innen dieses Filters sind, und sie übergibt den Diagnoseprozess an die entsprechende Hilfsklasse zur weiteren Diagnose.

Das neueste Ereignis in den WFP-Ereignisprotokollen, das mit den Attributen übereinstimmt, wird als relevant für das Netzwerkproblem ausgewählt. Wenn keine übereinstimmenden Ereignisse gefunden werden und der Zeitpunkt, zu dem das Ereignis aufgetreten ist, im WFP-Protokoll enthalten ist, gibt die FPHC für das NDF an, dass es fehlerfrei ist. Wenn keine übereinstimmenden Ereignisse gefunden werden und die WFP-Protokolle keine Informationen zum Zeitpunkt enthalten, zu dem das Ereignis aufgetreten ist, gibt die FPHC einen unbestimmten Status an das NDF zurück.

Wenn ein übereinstimmendes Ereignis gefunden wird, verwendet die FPHC die Anbieter-ID des Filters, der das Ereignis ausgelöst hat, um den Anbieter der Sicherheitsregel zu identifizieren, die die Verbindung blockiert hat. Die FPHC überprüft dann, ob eine Hilfsklassenerweiterung für diesen Anbieter vorhanden ist. Wenn eine gefunden wird, generiert die FPHC eine Hypothese für diesen Anbieter, und das NDF ruft dann die Erweiterung auf. Die Erweiterung sollte hilfreiche Diagnose- und Reparaturinformationen an die Benutzer*innen zurückgeben.

Hilfsklassenregistrierung

Eine FPHC-Erweiterung muss wie unter Registrieren von NDF-Hilfsklassenerweiterungen beschrieben registriert werden. Entwickler*innen, die eine Hilfsklasse implementieren, müssen ihre Erweiterungen registrieren, um sicherzustellen, dass die Erweiterung bei Bedarf vom NDF aufgerufen wird. Das unten beschriebene übereinstimmende Attribut muss in der Registrierung unter HKLM\System\CurrentControlSet\Control\NetDiagFx\VendorName\HostDLLs\Helper Class DLL\HelperClasses\Helper Class Name\MatchAttributes gespeichert werden.

Die folgende Tabelle zeigt das übereinstimmende Attribut, das verwendet wird, um die Hypothese zu identifizieren, die für die Diagnose im WFP-Ereignisprotokoll verwendet werden soll.

Name Typ Beschreibung
ProviderID REG_SZ Dies ist die GUID der FPHC-Erweiterung. Dieser Wert muss mit der WFP-Anbieter-GUID identisch sein.
Bei dieser Zeichenfolge wird die Groß-/Kleinschreibung beachtet. Sie sollte in der Registrierung in Großbuchstaben mit einschließenden geschweiften Klammern und Bindestrichen gespeichert werden. „{C200E360-38C5-11CE-AE62-08002B2B79EF}“ ist beispielsweise eine gültige ProviderID.

Wenn die ProviderID eines Blockierungsfilters mit der einer registrierten Hilfsklasse übereinstimmt, informiert die FPHC das NDF darüber, dass diese Hilfsklasse aufgerufen werden soll. Auf diese Weise wird die Diagnosefunktion der FPHC erweitert.

FPHC-Ereignisattribute

In der folgenden Tabelle sind die Ereignisattribute aufgeführt, die den einzelnen übereinstimmenden Ereignissen zugeordnet sind. Jedes Ereignisattribute wird in einer HELPER_ATTRIBUTE-Struktur gespeichert. Diese Attribute werden vom NDF an die FPHC übergeben, wenn ein übereinstimmende Ereignis gefunden wird. Diese können wiederum an FPHC-Erweiterungen übergeben werden.

attribute ATTRIBUTE_TYPE-Wert Beschreibung
Anbieter-GUID AT_GUID Dies ist die GUID des Anbieters, der dem Filter zugeordnet ist.
Timestamp AT_OCTET_STRING Dies ist ein Puffer vom Typ „FILETIME“, der die Uhrzeit angibt, zu der das Ereignis aufgetreten ist. Dieser Zeitstempel kann verwendet werden, um ein Ereignis eindeutig zu identifizieren.
ipProtocol AT_UINT32 Dies ist das Transportschichtprotokoll im UINT8-Format.
LocalAddr AT_SOCKADDR Dies entspricht der lokalen IP-Adresse und dem Port, die in einer DIAG_SOCKADDR-Struktur gespeichert sind.
RemoteAddr AT_SOCKADDR Dies entspricht der Remote-IP-Adresse und dem Port, die in einer DIAG_SOCKADDR-Struktur gespeichert sind.
userId AT_OCTET_STRING Dies ist ein Puffer vom Typ „SID“, der die Benutzer-ID (userId) darstellt. Wenn „userId“ die Länge 0 hat, ist die SID nicht verfügbar.
appId AT_STRING Dies ist ein Puffer, der den abgerufenen Anwendungsbezeichner speichert. Wenn „appId“ den Wert „L“ aufweist, ist der Anwendungsbezeichner nicht verfügbar.

Behandeln von FPHC-Ereignissen

Vor dem Vorschlagen von Diagnose- und Reparaturinformationen für die Benutzer*innen sollte eine FPHC-Erweiterung mehr Daten sammeln, als von den FPHC-Benachrichtigungen bereitgestellt werden. Diese Daten können von den WFP-Ereignisverwaltungsfunktionen abgerufen werden. Diese Funktionen werden im Beispiel Anzeigen von NetEvents veranschaulicht.

Ein detaillierteres Beispiel für die Ereignisverwaltung ist im SDK enthalten. Der Quellcode für das Beispiel befindet sich im SDK-Installationsspeicherort unter „C:\Program Files\Microsoft SDKs\Windows\<Versionsnummer>\Samples\NetDs\WFP\DiagEvents“. Das Windows Vista-SDK ist im Download Center verfügbar.

Integrierte FPHC-Diagnose

Wenn keine FPHC-Erweiterung vorhanden ist, kann die FPHC die unten aufgeführten Szenarios diagnostizieren. Die meisten der von der FPHC diagnostizierten Konnektivitätsfehler treten auf, da Firewalls Datenverkehr blockieren. Die IPsec-Szenarios treten seltener auf.

In der folgenden Tabelle sind einige Szenarios aufgeführt, die zu Verbindungsfehlern führen, die von der FPHC diagnostiziert werden können (zusammen mit den Beschreibungs- und Reparaturinformationen, die an das NDF übergeben werden).

Szenario Beschreibung der niedrigen Integrität Reparaturinformationen
Durch Firewall verworfen Die Firewalleinstellungen auf diesem Computer blockieren die Verbindung. Überprüfen Sie Ihre Firewalleinstellungen.
Hauptmodusfehler Sie können keine Verbindung herstellen, da eine IPsec-Sicherheitsrichtlinie nicht übereinstimmt. Wenden Sie sich an den IPsec-Richtlinienbesitzer.
Schnellmodusfehler Sie können keine Verbindung herstellen, da eine IPsec-Sicherheitsrichtlinie nicht übereinstimmt. Wenden Sie sich an den IPsec-Richtlinienbesitzer.
Benutzermodusfehler Sie können keine Verbindung herstellen, da eine IPsec-Sicherheitsrichtlinie nicht übereinstimmt. Wenden Sie sich an den IPsec-Richtlinienbesitzer.
Fehler bei Anmeldeinformationen Sie können keine Verbindung herstellen, da die Stammzertifizierungsstelle (Root Certification Authority, CA) auf diesem Computer nicht mit der Stammzertifizierungsstelle auf dem Remotecomputer übereinstimmt. Aktualisieren Sie das vertrauenswürdige Stammzertifikat.
Abgelaufenes Zertifikat Das für die IPsec-Authentifizierung verwendete Zertifikat ist abgelaufen. Fordern Sie ein Zertifikat an.
Andere Zertifikatfehler Für die IPsec-Authentifizierung wurde kein gültiges Zertifikat gefunden. Fordern Sie ein Zertifikat an.
Kerberos-Fehler Der Computer ist nicht Teil dieser Domäne. Binden Sie diesen Computer in eine Domäne ein.
Vorinstallierter Schlüssel Setzen Sie die vorinstallierten Schlüssel zurück. Setzen Sie die vorinstallierten Schlüssel zurück.

Windows-Filterplattform

Entwerfen von NDF-Hilfsklassenerweiterungen

Registrieren von NDF-Hilfsklassenerweiterungen

Beispiele für NDF-Hilfsklassen