Como saber qual regra de firewall do Windows está bloqueando o tráfego

16

Estou tentando configurar um computador para aceitar todo o tráfego recebido, mas apenas permitir o tráfego de saída para um IP específico. Eu defini uma regra de permissão para todas as entradas e uma regra de permissão que especifica um endereço IP como o único endereço de saída aceitável. Também configurei uma regra de negar todas as regras de saída, assumindo que a outra regra terá precedência.

O problema que estou tendo é que todo o tráfego está sendo bloqueado, até o tráfego que vai para o IP que eu especifiquei como permitido.

Estou procurando uma maneira de rastrear o tráfego através do firewall e ver exatamente qual regra está bloqueando o tráfego. O log gerado pelo monitoramento do firewall informa que o tráfego foi descartado, mas não a regra que o bloqueou.

Josh
fonte
Também sempre quis fazer isso, mas parece que o firewall interno do Windows não tem muito a oferecer nesse sentido. Eu ficaria interessado em saber se você encontra uma solução para obter logs mais detalhados.
David Woodward
O firewall do Windows é realmente para proteger seu PC da rede, não a rede do seu PC. A rede deve ter seu próprio firewall para protegê-lo.
Ron Maupin

Respostas:

20

(Nota: isso se aplica ao Windows 7 e pode ou não funcionar com versões mais recentes.)

As etapas a seguir o levarão à regra de bloquear sua conexão:

  • Abra um console do Windows (com direitos de Administração) para inserir comandos
  • Habilite a auditoria para o Windows Filtering Platform (WFP):
    • comando de execução:
      auditpol /set /subcategory:"Filtering Platform Packet Drop" /success:enable /failure:enable
    • comando de execução:
      auditpol /set /subcategory:"Filtering Platform Connection" /success:enable /failure:enable
  • (Isso pode afogá-lo nos dados do log de eventos - ativando apenas auditorias de falha e, possivelmente, apenas falhas de conexão reduzirão o número de entradas de log. Seja seletivo com relação ao que você realmente precisa)
  • Reproduzir o problema
  • Executar comando: netsh wfp show state(isso cria um arquivo XML na pasta atual)
  • Abra o visualizador de eventos: Executar ( Windows+ R)>eventvwr.msc
    • vá para "Registros do Windows"> "Segurança"
    • na lista, identifique o log de pacotes descartados (dica: use o recurso Pesquisar no menu à direita, procurando itens (IP de origem, porta de destino etc.) específicos ao seu problema)
    • nos detalhes do log, role para baixo e observe o ID do filtro usado para bloquear o pacote
  • Abra o arquivo XML gerado:
    • procure o filterID anotado e verifique o nome da regra (elemento "displayData> name" no nó XML correspondente)

Isso lhe dará um bom começo para encontrar a regra de bloqueio.

Quando terminar, não se esqueça de desativar a auditoria:

  • comando de execução:
    auditpol /set /subcategory:"Filtering Platform Packet Drop" /success:disable /failure:disable
  • comando de execução:
    auditpol /set /subcategory:"Filtering Platform Connection" /success:disable /failure:disable

Nota: dependendo da configuração de idioma do Windows, o serviço de auditoria pode usar nomes diferentes do inglês. Para localizar os nomes das subcategorias, execute o comando: auditpol /get /category:*e encontre as subcategorias que correspondem a "Filtragem de pacotes da plataforma de filtragem" e "Conexão da plataforma de filtragem" no idioma do sistema.

Prumo
fonte
1
Isso não levará a lugar algum se você tiver a filtragem de saída ativada no Firewall do Windows, pois todos os programas sem uma regra de permissão explícita serão bloqueados por padrão. Portanto, seu programa pode não estar bloqueado por uma regra de firewall.
Alexandru Dicu 9/0318
2
Isso funcionou com o Windows Server 2012 R2.
AresAvatar 15/0318
No meu caso, DisplayData-name diz Default Outbound, então pelo menos tenho certeza de que minha regra de permissão é ignorada, por isso é um bug do firewall da Microsoft.
metablaster 15/12/19