Filtragem com estado do ALE
Os filtros instalados nas camadas ALE (Application Layer Enforcement) do WFP (Windows Filtering Platform) executam filtragem de rede com estado. Um fluxo ALE é usado como base para filtragem com estado ALE.
Um fluxo ALE é uma maneira de classificar o tráfego de rede agrupando-o com base em um endereço IP de origem, um endereço IP de destino, uma porta de origem, uma porta de destino e um protocolo. Um fluxo ALE pode ser genérico, ou seja, um ou mais dos descritores podem estar correspondendo a tudo (ou curinga *). Por exemplo, um fluxo ALE UDP genérico seria descrito como Endereço IP de Origem = *, Endereço IP de Destino = *, Porta de Origem = *, Porta de Destino = *e Protocolo = UDP.
Depois que uma conexão é autorizada (conexões de entrada são autorizadas na camada FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V{4|6} e conexões de saída na camada FWPM_LAYER_ALE_AUTH_CONNECT_V{4|6} ), um fluxo ALE é criado de modo que, com exceção de uma alteração de política, todos os pacotes, entrada e saída, que pertencem ao mesmo fluxo ALE são permitidos automaticamente. Como uma alteração de política pode exigir o bloqueio de conexões permitidas anteriormente, os fluxos ALE precisam ser reautorizados quando ocorre uma alteração de política.
A filtragem com estado ALE reduz drasticamente o número de classificações necessárias classificando apenas o primeiro pacote que pertence a um fluxo ALE. Em comparação, a filtragem não com estado requer a classificação de cada pacote que atravessa a rede.
Um fluxo ALE tem uma direção associada, que é a direção do primeiro pacote do fluxo. Isso permite políticas mais flexíveis, permitindo que conexões iniciadas de entrada tenham políticas diferentes de conexões iniciadas de saída.
TCP ALE Flow
Um fluxo ALE para tráfego TCP é identificado pela tupla de cinco tuplas de TCP/IP (endereço IP de origem, endereço IP de destino, porta de origem, porta de destino e protocolo).
Um fluxo ALE TCP tem o mesmo tempo de vida que um soquete TCP conectado. Um soquete TCP conectado pode ser um soquete criado usando connect() ou um soquete criado como resultado de uma chamada accept( ).
A ALE mantém uma relação um-para-um entre um fluxo TCP ALE e um TCB (Bloco de Controle TCP).
UDP ALE Flow
Observação
Os protocolos que não são TCP ou ICMP são tratados como UDP.
Um fluxo ALE para tráfego UDP é identificado pela tupla de cinco tuplas de TCP/IP (endereço IP de origem, endereço IP de destino, porta de origem, porta de destino e protocolo).
Um fluxo ALE UDP é criado com base em um soquete UDP e representa o par remoto com o qual o aplicativo está se comunicando. Um par remoto é identificado por uma tupla (Endereço IP de Destino e Porta de Destino).
Há uma relação um-para-muitos entre um soquete UDP e os pares remotos com os quais ele conversa.
Quando o soquete UDP local for fechado, todos os fluxos ALE associados a ele serão excluídos.
Na ausência de fechamentos de soquete, os fluxos de ALE unicast UDP têm um tempo limite ocioso configurável que é padrão para 60 segundos. Se nenhum pacote for enviado ou recebido nesta janela, o fluxo ALE será excluído. Esse tempo limite padrão é reduzido progressivamente quando o número de fluxos ALE em todo o sistema atinge um determinado limite.
ICMP ALE Flow
Um fluxo ALE para o tráfego ICMP é identificado pelas seis tuplas (Endereço IP de origem, endereço IP de destino, tipo ICMP, código ICMP, protocolo e ID ICMP). A ID do ICMP faz parte do fluxo ALE somente para tráfego de eco/resposta do ICMP.
Na ausência de fechamentos de soquete, os fluxos ALE unicast do ICMP têm um tempo limite ocioso configurável que é padrão para 60 segundos. Se nenhum pacote for enviado ou recebido nesta janela, o fluxo ALE será excluído. Esse tempo limite padrão é reduzido progressivamente quando o número de fluxos ALE em todo o sistema atinge um determinado limite.
Somente mensagens de não erro do ICMP são indicadas para camadas ALE. Mensagens de erro ICMP podem ser inspecionadas em camadas ICMP_ERROR.
Tópicos relacionados