Operação WFP

O WFP (Windows Filtering Platform) executa suas tarefas integrando as seguintes entidades básicas: Camadas, Filtros, Shims e Textos Explicativos.

Camadas

Uma camada é um contêiner gerenciado pelo mecanismo de filtro cuja função é organizar filtros em conjuntos. Uma camada não é um módulo na pilha de rede. Cada camada tem um esquema que define o tipo de filtros que podem ser adicionados a ela. Consulte Condições de filtragem disponíveis em cada camada de filtragem para obter mais informações.

As camadas podem conter subcamada para gerenciar requisitos de filtro conflitantes, como "Bloquear portas TCP acima de 1024" e "Abrir porta 1080". As regras para gerenciar conflitos de filtragem são determinadas pela Arbitragem de Filtro.

O WFP contém um conjunto de subcaminhos internos. Cada camada herda todas as subcamadas internas. Os usuários também podem adicionar suas próprias subcaminhos.

A lista de camadas do mecanismo de filtro é fornecida no tópico da seção de referência Filtrando identificadores de camada.

Filtros

Um filtro é uma regra que corresponde a pacotes de entrada ou saída. A regra informa ao mecanismo de filtragem o que fazer com o pacote, incluindo chamar um módulo de texto explicativo para inspeção profunda de pacotes ou fluxos. Por exemplo, um filtro pode especificar "Bloquear tráfego com uma porta TCP maior que 1024" ou "Chamar para IDS para todo o tráfego que não está protegido".

Um filtro de tempo de inicialização é um filtro imposto no momento da inicialização assim que o driver de pilha TCP/IP (tcpip.sys) é iniciado. Um filtro de tempo de inicialização é desabilitado quando o BFE é iniciado. Um filtro é marcado como tempo de inicialização definindo o sinalizador FWPM_FILTER_FLAG_BOOTTIME quando FwpmFilterAdd0 é invocado.

Um filtro em tempo de execução é um filtro imposto após o início do BFE. Um filtro em tempo de execução pode ser estático, dinâmico ou persistente, dependendo da maneira como foi criado. Consulte Gerenciamento de Objetos para obter mais informações sobre os diferentes tipos de filtros de tempo de execução e seu tempo de vida.

Calços

Um shim é um componente do modo kernel que toma decisões de filtragem classificando-se em relação às camadas do mecanismo de filtro. Cada shim classifica em uma ou mais camadas. Por exemplo, o shim módulo de camada de transporte classifica contra a camada transporte de entrada, a camada transporte de saída e as camadas ALE Connect e Receive-Accept para o primeiro pacote de um fluxo.

À medida que pacotes, fluxos e eventos atravessam a pilha de rede, os shims os analisam para extrair as condições e os valores classificáveis e, em seguida, chamam o mecanismo de filtro para avaliá-los em relação aos filtros em uma determinada camada. O mecanismo de filtro pode invocar um ou mais textos explicativos como parte da classificação. Os shims fazem a remoção real de pacotes, fluxos e eventos com base no resultado da classificação executada pelo mecanismo de filtro.

Chamadas

Um texto explicativo é um conjunto de funções expostas por um driver e usadas para filtragem especializada. Eles são usados para executar a análise e a manipulação dos pacotes, como verificação de vírus, verificação de controles dos pais para conteúdo inadequado, análise de dados de pacotes para ferramentas de monitoramento. Alguns textos explicativos, como o driver NAT (Conversão de Endereços de Rede), são integrados ao sistema operacional. Outros, como um texto explicativo de Controle dos Pais HTTP ou o texto explicativo do IDS (Sistema de Detecção de Intrusão), podem ser fornecidos por ISVs (fornecedores independentes de software). As funções de texto explicativo são invocadas pelo mecanismo de filtro quando um filtro de texto explicativo correspondente é correspondido em uma determinada camada.

Os textos explicativos podem ser registrados em qualquer uma das camadas WFP do modo kernel. Os textos explicativos podem retornar uma ação ("Bloquear", "Permitir" e, ao executar a inspeção de fluxo, "Adiar", "Precisar de mais dados", "Remover conexão") e podem modificar e proteger o tráfego de rede de entrada e saída.

Depois que um texto explicativo é registrado com o mecanismo de filtro, ele pode receber tráfego de rede para processar. O tráfego pode ser pacotes, fluxos ou eventos, dependendo da camada. Um aplicativo ou agente de firewall faz com que o tráfego seja passado para um texto explicativo adicionando um filtro cuja ação é "Texto explicativo" e cuja ID de texto explicativo é o identificador do texto explicativo. Os textos explicativos podem instruir o mecanismo de filtro a retornar "Bloquear" ou "Permitir" ao shim. Os textos explicativos também podem retornar "Continuar" para permitir que outros filtros processem o pacote.

Vários textos explicativos podem ser expostos por um driver de texto explicativo.

Um texto explicativo precisa ser adicionado (com FwpmCalloutAdd0) e registrado (com FwpsCalloutRegister) antes que possa ser usado. Uma chamada para FwpmCalloutAdd0 é necessária antes da criação de filtros que fazem referência ao texto explicativo. Uma chamada para FwpsCalloutRegister é necessária antes que o WFP possa invocar o texto explicativo quando os filtros de texto explicativo forem correspondidos. Por padrão, filtros que fazem referência a textos explicativos que foram adicionados, mas que ainda não foram registrados com o mecanismo de filtro, são tratados como filtros "Bloquear". A ordem de chamar FwpmCalloutAdd0 e FwpsCalloutRegister não importa. Um texto explicativo persistente precisa ser adicionado apenas uma vez e precisa ser registrado sempre que o driver que implementa o texto explicativo for iniciado (por exemplo, após uma reinicialização).

classificação

A classificação é o processo de aplicação de filtros ao tráfego de rede (pacote, fluxo ou evento) para determinar o resultado de "Permitir" ou "Bloquear" para esse tráfego. Para um pacote, fluxo ou evento, há uma chamada de classificação por camada.

Durante a classificação, as propriedades (por exemplo, endereço de origem) do pacote, fluxo ou evento são comparadas com as condições de filtro definidas em filtros na camada em que a classificação é invocada. Quando as correspondências são encontradas, o algoritmo Filtrar Arbitragem é usado para determinar o resultado do processo de classificação.

Uma solicitação de classificação é disparada por um shim.

As ações de classificação podem ser:

  • Permitir
  • Bloquear
  • Balão
    • Permitir
    • Bloquear
    • Continuar
    • Adiar
    • Precisa de mais dados
    • Remover conexão

Operação WFP

No momento da inicialização, assim que o driver de pilha TCP/IP (tcpip.sys) é iniciado, o mecanismo de filtro do modo kernel impõe a política de segurança do sistema por meio de filtros de tempo de inicialização.

Depois que o BFE (Mecanismo de Filtragem Base) é iniciado no modo de usuário, os filtros persistentes são adicionados à plataforma, os filtros de tempo de inicialização são desabilitados e as notificações são enviadas para os drivers de texto explicativo assinados usando FwpmBfeStateSubscribeChanges0. As notificações são enviadas imediatamente após a conclusão da inicialização do BFE. A plataforma agora está pronta para que os textos explicativos sejam registrados e que objetos em tempo de execução sejam adicionados.

A transição do tempo de inicialização para os filtros persistentes pode ser de vários segundos ou até mais longa em um computador lento. Ele é atômico, portanto, se um provedor tiver um tempo de inicialização e um filtro persistente, nunca haverá uma janela quando nenhum dos dois estiver em vigor.

Após o início do BFE, os filtros em tempo de execução podem ser adicionados por agentes de firewall ou por soluções de firewall personalizadas. A BFE processa esses filtros e os envia para a camada de mecanismo de filtro apropriada para imposição. O BFE também aceita as configurações de autenticação e envia essas configurações para os módulos de chave IPsec (IKE/AuthIP). Confira Configuração do IPsec para obter mais informações.

A qualquer momento, os filtros e as configurações de autenticação podem ser adicionados, removidos ou alterados no sistema por meio da interface RPC exposta pelo BFE. As subcaminhos e os módulos de texto explicativo também podem ser adicionados ou removidos.

Fluxo de dados:

  1. Um pacote entra na pilha de rede.
  2. A pilha de rede localiza e chama um shim.
  3. O shim invoca o processo de classificação em uma camada específica.
  4. Durante a classificação, os filtros são correspondidos e a ação resultante é tomada. (Consulte Filtrar Arbitragem.)
  5. Se algum filtro de texto explicativo for correspondido durante o processo de classificação, os textos explicativos correspondentes serão invocados.
  6. O shim atua na decisão final de filtragem (por exemplo, descartar o pacote).

O fluxo de dados de saída segue um padrão semelhante.

Os tópicos a seguir descrevem ainda mais a operação do WFP.

Modelo de objeto

Gerenciamento de Objetos