Operação WFP
A Plataforma de Filtragem do Windows (WFP) executa suas tarefas integrando as seguintes entidades básicas: Layers, Filters, Shimse Callouts.
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 subcaminhos 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 por de 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 filtragem de identificadores de camada.
Filtros
Um filtro de é 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 explicativo para inspeção de fluxo ou pacote profundo. Por exemplo, um filtro pode especificar "Bloquear o 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 que é imposto na hora de 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 hora de inicialização definindo o sinalizador de FWPM_FILTER_FLAG_BOOTTIME quando FwpmFilterAdd0 é invocado.
Um filtro de tempo de execução é um filtro que é imposto após o início do BFE. Um filtro de tempo de execução pode ser estático, dinâmico ou persistente, dependendo da forma como foi criado. Consulte de 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-se contra a camada transporte de entrada, a camada de 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 para 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.
Textos explicativos
Uma de 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 parentais 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 Parental HTTP ou o texto explicativo do IDS (Sistema de Detecção de Intrusão), podem ser fornecidos por ISVs (fornecedores de software independentes). As funções de texto explicativo são invocadas pelo mecanismo de filtro quando um filtro explicativo correspondente é correspondido em uma determinada camada.
Os textos explicativos podem ser registrados em qualquer uma das camadas WFP no 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, os 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 "Permissão" 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 de Arbitragem de Filtro de é 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
- Texto explicativo
- Permitir
- Bloquear
- Continuar
- Adiar
- Precisa de mais dados
- Remover conexão
Operação WFP
No tempo de 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 que se inscreveram usando FwpmBfeStateSubscribeChanges0. As notificações são expedidas 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 os objetos em tempo de execução sejam adicionados.
A transição do tempo de inicialização para filtros persistentes pode ser de vários segundos ou até mais longa em um computador lento. É 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. O BFE processa esses filtros e os envia para a camada de mecanismo de filtro apropriada para imposição. A BFE também aceita as configurações de autenticação e envia essas configurações para os módulos de chave IPsec (IKE/AuthIP). Consulte de 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:
- Um pacote entra na pilha de rede.
- A pilha de rede localiza e chama um shim.
- O shim invoca o processo de classificação em uma camada específica.
- Durante a classificação, os filtros são correspondidos e a ação resultante é executada. (Consulte de Arbitragem de Filtro .)
- Se algum filtro de texto explicativo for correspondido durante o processo de classificação, os textos explicativos correspondentes serão invocados.
- O shim atua na decisão de filtragem final (por exemplo, solte 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.
Tópicos relacionados