Ler em inglês

Partilhar via


Classe auxiliar extensível da plataforma de filtragem do Windows

A Plataforma de Filtragem do Windows (WFP) inclui uma classe auxiliar do Network Diagnostics Framework (NDF), chamada classe auxiliar da Plataforma de Filtragem (FPHC). O FPHC pode ajudar a identificar as causas dos problemas de conectividade causados pelo PAM. Os desenvolvedores de firewall de terceiros podem implementar suas próprias classes auxiliares de NDF. A extensibilidade FPHC permite que essas classes auxiliares de terceiros sejam invocadas durante o diagnóstico.

Este tópico pressupõe familiaridade com a API do WFP.

Porquê alargar a FPHC?

Todos os desenvolvedores que escrevem aplicativos que chamam a API do WFP devem escrever uma classe auxiliar NDF que estenda o FPHC.

A FPHC pode identificar o PAM como a causa de um problema de conectividade. Se disponível, o FPHC também pode identificar o provedor que criou o filtro que está bloqueando o tráfego de rede. O FPHC passa essas informações para a NDF, que por sua vez pode notificar o usuário de que o WFP está causando o problema de conectividade e fornecer o nome do provedor que bloqueia o tráfego.

No entanto, o FPHC não pode sugerir uma ação corretiva ao usuário, nem pode fornecer o motivo pelo qual o filtro está bloqueando o tráfego para o usuário. Apenas uma extensão FPHC pode executar essas tarefas.

Considere um aplicativo de firewall de terceiros que chame a API do WFP. Se o firewall de terceiros implementar uma extensão FPHC, ações personalizadas poderão ser implementadas para lidar com problemas de conectividade identificados pelo NDF. Quando o NDF diagnostica que um aplicativo foi bloqueado pelo firewall de terceiros, a extensão FPHC pode manipular o evento de bloqueio. Uma maneira que a extensão FPHC poderia lidar com um evento é apresentar ao usuário um prompt para desbloquear um programa usando o firewall e, em seguida, desbloquear o programa após a confirmação do usuário. Como alternativa, a extensão FPHC poderia lidar com um evento notificando o usuário do motivo pelo qual o aplicativo foi bloqueado, como um aplicativo foi bloqueado porque foi considerado malware pelo firewall.

Sobre o diagnóstico do PAM

Quando o NDF é invocado para diagnosticar um problema de rede, as classes auxiliares são contatadas para determinar a causa do problema. Se uma classe auxiliar de nível superior determinar que uma falha de rede pode ser causada pelo WFP, ela gerará uma hipótese para FPHC com base nas informações disponíveis. A FDN transmite esta hipótese, na forma de diversos atributos de evento, para a FPHC. Esses atributos são descritos em detalhes na seção FPHC Event Attributes abaixo.

Um problema de rede pode ser descrito como um problema de conectividade que afeta uma tentativa de conexão específica. Por exemplo, o usuário pode ter bloqueado acidentalmente um aplicativo clicando inadvertidamente em Não permitir. O firewall bloqueará a vinculação do aplicativo a qualquer porta. O usuário, sem saber por que o aplicativo está bloqueado, pode tentar diagnosticar o problema através de um ponto de entrada oferecido pelo aplicativo. O FPHC examinará os logs e, se encontrar uma correspondência, recuperará o ID do filtro e o ID do provedor desse filtro específico. Neste ponto, a FPHC sabe quem é o proprietário desse filtro e entregará o processo de diagnóstico à classe auxiliar apropriada para um diagnóstico mais aprofundado.

O evento mais recente nos logs de eventos do WFP para corresponder aos atributos é selecionado como relevante para o problema de rede. Se não forem encontrados eventos correspondentes e a hora em que o evento aconteceu estiver coberta no registo do WFP, o FPHC indica ao NDF que está saudável. Se nenhum evento correspondente for encontrado e os logs do WFP não incluírem a hora em que o evento ocorreu, o FPHC retornará um status indeterminado para NDF.

Se um evento correspondente for encontrado, o FPHC usará a ID do provedor do filtro que causou o evento para identificar o provedor da regra de segurança que bloqueou a conectividade. Em seguida, o FPHC verifica se existe uma extensão de classe auxiliar para esse provedor. Se um for encontrado, o FPHC gera uma hipótese para esse provedor e, em seguida, o NDF invoca a extensão. A extensão deve retornar informações úteis de diagnóstico e reparo para o usuário.

Registo de Classe Auxiliar

Uma extensão FPHC deve ser registrada conforme descrito em Registrando extensões de classe auxiliar NDF. Os desenvolvedores que implementam uma classe auxiliar devem registrar suas extensões para garantir que a extensão seja chamada pelo NDF quando apropriado. O atributo correspondente descrito abaixo deve ser armazenado no registo em HKLM\System\CurrentControlSet\Control\NetDiagFx\VendorName\HostDLLs\Helper Class DLL\HelperClasses\Helper Class Name\MatchAttributes.

A tabela a seguir mostra o atributo de correspondência usado para identificar a hipótese a ser usada no diagnóstico no log de eventos do WFP.

Nome Tipo Descrição
ID do provedor REG_SZ O GUID (Identificador Global Único) da extensão FPHC. Esse valor deve ser o mesmo que o GUID do provedor WFP.
Essa cadeia de caracteres diferencia maiúsculas de minúsculas. Deve ser armazenado no registo em maiúsculas com suportes e hífenes. Por exemplo, {C200E360-38C5-11CE-AE62-08002B2B79EF} é um ProviderID válido.

Quando o ProviderID de um filtro de bloqueio corresponde ao de uma classe auxiliar registrada, a FPHC informa a NDF para invocar essa classe auxiliar, estendendo assim a capacidade de diagnóstico da FPHC.

Atributos do Evento FPHC

A tabela a seguir lista os atributos de evento associados a cada evento correspondente. Cada atributo de evento é armazenado em uma estrutura HELPER_ATTRIBUTE. Esses atributos são passados pelo NDF para o FPHC quando um evento correspondente é encontrado. Estes, por sua vez, podem ser passados para extensões FPHC.

Atributo ATTRIBUTE_TYPE valor Descrição
GUID do provedor AT_GUID O GUID do provedor associado ao filtro.
Carimbo de data/hora AT_OCTET_STRING Um buffer do tipo FILETIME que especifica a hora em que o evento ocorreu. Esse carimbo de data/hora pode ser usado para identificar exclusivamente um evento.
Protocolo IP AT_UINT32 O protocolo da camada de transporte, no formato UINT8.
LocalAddr AT_SOCKADDR O endereço IP local e a porta, armazenados em uma estrutura DIAG_SOCKADDR.
RemoteAddr AT_SOCKADDR O endereço IP remoto e a porta, armazenados em uma estrutura DIAG_SOCKADDR.
userId AT_OCTET_STRING Um buffer do tipo SID que representa o userid. Se userId tiver o comprimento 0, o SID não estará disponível.
ID da aplicação AT_STRING Um buffer que armazena o identificador de aplicativo recuperado. Se appId tiver um valor de L"", o identificador do aplicativo não estará disponível.

Gestão de eventos FPHC

Antes de sugerir informações de diagnóstico e reparo ao usuário, uma extensão FPHC deve reunir mais dados do que os fornecidos pelas notificações FPHC. Esses dados podem ser adquiridos no Funções de Gerenciamento de Eventos do WFP. Essas funções são demonstradas no Exibindo eventos de rede exemplo.

Um exemplo de gerenciamento de eventos mais detalhado está incluído no SDK. O código-fonte do exemplo pode ser encontrado no local de instalação do SDK em C:\Program Files\Microsoft SDKs\Windows\<número de versão>\Samples\NetDs\WFP\DiagEvents. O SDK do Windows Vista está disponível no Centro de Download .

Diagnóstico FPHC integrado

Na ausência de uma extensão FPHC, FPHC pode diagnosticar os cenários listados abaixo. A maioria das falhas de conectividade diagnosticadas pelo FPHC ocorre porque os firewalls bloqueiam o tráfego. Os cenários IPsec são menos comuns.

A tabela a seguir mostra alguns cenários que causam falhas de conectividade que podem ser diagnosticadas pelo FPHC, juntamente com a descrição e as informações de reparo passadas para o NDF.

Cenário Descrição de saúde debilitada Informações sobre a reparação
Queda do firewall As configurações de firewall neste computador estão bloqueando a conexão. Verifique as configurações do firewall.
Falha no modo principal Você não pode se conectar devido a uma incompatibilidade de diretiva de segurança IPsec. Entre em contato com o proprietário da política IPsec.
Falha do Modo Rápido Você não pode se conectar devido a uma incompatibilidade de diretiva de segurança IPsec. Entre em contato com o proprietário da política IPsec.
Falha do modo de usuário Você não pode se conectar devido a uma incompatibilidade de diretiva de segurança IPsec. Entre em contato com o proprietário da política IPsec.
Falha de credenciais Não é possível ligar porque a autoridade de certificação (AC) raiz neste computador não corresponde à autoridade de certificação raiz no computador remoto. Atualize o certificado raiz confiável.
Certificado expirado O certificado usado para autenticação IPsec expirou. Solicite uma certidão.
Outras falhas de certificado Não foi encontrado um certificado válido para autenticação IPsec. Solicite uma certidão.
Falha de Kerberos O computador não faz parte deste domínio. Junte este computador a um domínio.
Chave pré-partilhada Redefina as chaves pré-compartilhadas. Redefina as chaves pré-compartilhadas.

Plataforma de Filtragem do Windows

Projetando extensões de classe auxiliar NDF

Registar extensões da classe auxiliar NDF

Exemplos de classe auxiliar NDF