Partilhar via


Operação do PAM

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 subcamadas 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 pelo Filter Arbitration.

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

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

Filtros

Um filtro é uma regra que é combinada com 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 que é imposto no momento da inicialização assim que o driver de pilha TCP/IP (tcpip.sys) é iniciado. Um filtro de tempo de inicialização é desativado quando o BFE é iniciado. Um filtro é marcado como tempo de inicialização definindo o sinalizador 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 sua vida útil.

Calços

Um shim é um componente de modo kernel que toma decisões de filtragem classificando em relação às camadas do mecanismo de filtro. Cada calço classifica-se contra uma ou mais camadas. Por exemplo, o shim do Módulo de Camada de Transporte classifica em relação à camada Transporte de Entrada, à camada Transporte de Saída e às 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 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 calços fazem a queda real de pacotes, fluxos e eventos com base no resultado da classificação realizada pelo mecanismo de filtro.

Textos explicativos

Um de texto explicativo é um conjunto de funções expostas por um driver e usadas para filtragem especializada. Eles são usados para realizar a análise e 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 (Network Address Translation), são incorporados ao sistema operacional. Outros, como um texto explicativo do Controle Parental HTTP ou o texto explicativo do Sistema de Deteção de Intrusão (IDS), podem ser fornecidos por fornecedores independentes de software (ISVs). 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", "Soltar 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 de pacotes, fluxos ou eventos, dependendo da camada. Um agente de aplicativo ou firewall faz com que o tráfego seja passado para um texto explicativo adicionando um filtro cuja ação é "Texto explicativo" e cujo ID do texto explicativo é o identificador desse texto explicativo. Os textos explicativos podem instruir o mecanismo de filtro a retornar "Bloquear" ou "Permitir" para o calço. 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 de poder 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 ainda não foram registrados no mecanismo de filtro, são tratados como filtros "Bloquear". A ordem de chamada 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 um 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 nos filtros na camada em que a classificação é invocada. Quando as correspondências são encontradas, o algoritmo Filter Arbitration é usado para determinar o resultado do processo de classificação.

Um pedido de classificação é acionado por um shim.

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

  • Licença
  • Bloquear
  • Texto explicativo
    • Licença
    • Bloquear
    • Continuar
    • Adiar
    • Precisa de mais dados
    • Queda de conexão

Operação do PAM

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

Quando o BFE (Mecanismo de Filtragem de Base) é iniciado no modo de usuário, filtros persistentes são adicionados à plataforma, filtros de tempo de inicialização são desativados e notificações são enviadas para os drivers de texto explicativo que se inscreveram 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 textos explicativos sejam registrados e para objetos de 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 uma máquina lenta. É atómico, por isso, se um fornecedor tiver um filtro de arranque e um filtro persistente, nunca haverá uma janela quando nenhum deles estiver em vigor.

Depois que o BFE é iniciado, os filtros de 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 apropriada do mecanismo de filtro para aplicação. O BFE também aceita configurações de autenticação e envia essas configurações para os módulos de chaveamento IPsec (IKE/AuthIP). Consulte de configuração IPsec para obter mais informações.

A qualquer momento, filtros e configurações de autenticação podem ser adicionados, removidos ou alterados no sistema através da interface RPC exposta pelo BFE. Subcamadas e 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 encontra e chama um shim.
  3. O shim invoca o processo de classificação em uma determinada camada.
  4. Durante a classificação, os filtros são combinados 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 calço atua na decisão final de filtragem (por exemplo, soltar o pacote).

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

Os tópicos a seguir descrevem melhor o funcionamento do PAM.

Modelo de objeto

de gerenciamento de objetos