Configuração do Windows Firewall

Visão geral

Este artigo explica como configurar o Windows Defender Firewall (antigo Windows Firewall) no Windows Server. Cobrimos diretrizes de design para os perfis Domínio, Privado e Público, otimização de políticas de entrada/saída, coleta e análise de logs e administração centralizada por GPO e scripts para operação prática.

Convenções de variáveis

Variável Exemplo Descrição
<<SERVER_NAME>> SRV-CORE01 Nome do servidor alvo
<<LOG_PATH>> C:\FirewallLogs\pfirewall.log Caminho do arquivo de log do firewall
<<OU_NAME>> Servers Nome da OU

Etapa 1: Entender os perfis e o plano de aplicação

O Windows Defender Firewall possui três perfis:

Perfil Uso Ambiente típico
Domínio Redes ingressadas no Active Directory LAN corporativa, VPN
Privado Rede confiável e isolada Testes, redes fechadas
Público Rede não confiável Wi-Fi público, ambientes de laboratório/VM

Cada perfil pode ser configurado individualmente e alterna automaticamente conforme o identificador de rede.

Comando de verificação:

# Verificar estado e políticas padrão de cada perfil
Get-NetFirewallProfile | Select-Object Name, Enabled, DefaultInboundAction, DefaultOutboundAction

Etapa 2: Definir políticas básicas (comportamento padrão)

Por padrão, o Windows Defender Firewall bloqueia entrada e permite saída.
Mantenha isso ou introduza controle explícito de saída conforme a necessidade.

# Definir explicitamente a política padrão
Set-NetFirewallProfile -Profile Domain,Private,Public `
  -DefaultInboundAction Block `
  -DefaultOutboundAction Allow `
  -NotifyOnListen True

Nota: Em ambientes de alta segurança, use -DefaultOutboundAction Block e permita apenas o tráfego de saída necessário (ex.: DNS, NTP, WSUS) — abordagem de lista branca.


Etapa 3: Operar e gerenciar regras do firewall

Listar e filtrar regras

# Todas as regras
Get-NetFirewallRule

# Procurar regras cujo nome contenha "RDP"
Get-NetFirewallRule | Where-Object DisplayName -Like "*RDP*"

# Apenas regras habilitadas
Get-NetFirewallRule | Where-Object Enabled -eq "True"

Criar novas regras

# Permitir entrada RDP (TCP/3389) apenas no perfil de Domínio
New-NetFirewallRule -DisplayName "Allow RDP (Domain)" `
  -Direction Inbound -Protocol TCP -LocalPort 3389 `
  -Action Allow -Profile Domain

# Permitir saída NTP (UDP/123)
New-NetFirewallRule -DisplayName "Allow NTP Outbound" `
  -Direction Outbound -Protocol UDP -LocalPort 123 `
  -Action Allow -Profile Domain,Private,Public

Tabela de parâmetros (exemplos e formatos)

Item Parâmetro Exemplo Formatos/valores aceitos
Direção -Direction Inbound / Outbound Inbound ou Outbound
Ação -Action Allow / Block Allow, Block
Protocolo -Protocol TCP / UDP / ICMPv4 / ICMPv6 / Any TCP, UDP, ICMPv4, ICMPv6, Any (detalhar ICMP com -IcmpType quando necessário)
Porta local -LocalPort 80 / 1024-2048 / 80,443,8080 Porta única, intervalo (ex.: 1024-2048), lista separada por vírgulas
Porta remota -RemotePort 53 / 1000-2000 / 53,67,68 Porta única, intervalo, ou lista
Endereço remoto -RemoteAddress 192.168.1.1 / 192.168.0.0/24 / 192.168.1.1-192.168.1.255 / 192.168.1.1,10.0.0.1 / Any IP único, CIDR, intervalo, lista, Any
Endereço local -LocalAddress 10.0.0.1 / 10.0.0.0/16 / 10.0.0.1-10.0.0.255 / Any IP único, CIDR, intervalo, lista, palavras-chave especiais, Any
Programa -Program C:\Program Files\App\App.exe Caminho completo do executável
Serviço -Service W32Time Nome do serviço do Windows
Perfil -Profile Domain,Private Combinações de Domain, Private, Public
Tipo de interface -InterfaceType Ethernet / Wireless / RemoteAccess Tipos suportados

Ex.: permitir HTTP apenas de um IP confiável

New-NetFirewallRule -DisplayName "Allow HTTP from Trusted IP" `
  -Direction Inbound -Protocol TCP -LocalPort 80 `
  -RemoteAddress 192.168.1.100 `
  -Action Allow -Profile Domain,Private

Ex.: permitir saída para um programa específico

New-NetFirewallRule -DisplayName "Allow Outbound for App.exe" `
  -Direction Outbound -Program "C:\Program Files\App\App.exe" `
  -Action Allow -Profile Domain,Private,Public

Ex.: permitir entrada para um serviço específico

New-NetFirewallRule -DisplayName "Allow Service XYZ Inbound" `
  -Direction Inbound -Service "W32Time" `
  -Action Allow -Profile Domain,Private

Ex.: bloquear saída via interface sem fio

New-NetFirewallRule -DisplayName "Block Outbound on Wireless" `
  -Direction Outbound -InterfaceType Wireless `
  -Action Block -Profile Public

Alterar, desabilitar/habilitar regras

# Desabilitar regra
Disable-NetFirewallRule -DisplayName "Allow RDP (Domain)"

# Habilitar regra
Enable-NetFirewallRule -DisplayName "Allow RDP (Domain)"

# Alterar (ex.: limitar a Domain e Private)
Set-NetFirewallRule -DisplayName "Allow RDP (Domain)" -Profile Domain,Private

Remover regras

Remove-NetFirewallRule -DisplayName "Allow RDP (Domain)"

Exportar/Importar conjunto de regras

# Exportar política do firewall
netsh advfirewall export "C:\Backup\FirewallPolicy.wfw"

# Importar política do firewall
netsh advfirewall import "C:\Backup\FirewallPolicy.wfw"

Etapa 4: Coleta de logs e auditoria

Registrar permissões/negações e monitorar anomalias.

# Registrar allow e block, limite de 32 MB
Set-NetFirewallProfile -Profile Domain,Private,Public `
  -LogAllowed True -LogBlocked True `
  -LogFileName "<<LOG_PATH>>" -LogMaxSizeKilobytes 32767

Verificação de logs:

Get-Content "<<LOG_PATH>>" -Tail 20 -Wait

Atenção: LogAllowed=True aumenta o volume de logs. Em produção, considere ativar apenas em perfis críticos (ex.: Público) e implemente rotação/arquivamento.
O parâmetro -LogMaxSizeKilobytes tem limite de 32767 KB; valores acima geram erro.


Etapa 5: Gerenciamento central via GPO

É possível editar e automatizar as configurações do firewall por GPO usando os cmdlets do módulo GroupPolicy.
Principais cmdlets: Set-GPRegistryValue, Get-GPO, New-GPO, New-GPLink, Set-GPInheritance.

Criar um GPO e aplicar configurações de log do perfil de Domínio

  1. Criar ou obter o GPO

    $gpo = New-GPO -Name "Firewall-Policy-Domain"
    

    Para editar GPO existente: Get-GPO -Name "<NOME_DO_GPO>".

  2. Aplicar valores via chaves de registro do GPO

    # Ativar logging no perfil de Domínio
    Set-GPRegistryValue -Name $gpo.DisplayName `
      -Key "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile" `
      -ValueName "EnableLogging" -Type DWord -Value 1
    
    # Caminho e tamanho do log
    Set-GPRegistryValue -Name $gpo.DisplayName `
      -Key "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\Logging" `
      -ValueName "LogFilePath" -Type String -Value "%systemroot%\system32\logfiles\firewall\pfirewall.log"
    
    Set-GPRegistryValue -Name $gpo.DisplayName `
      -Key "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\Logging" `
      -ValueName "LogFileSize" -Type DWord -Value 32767
    

Essas definições terão efeito quando o GPO for vinculado a uma OU com New-GPLink.

Vincular à OU (New-GPLink)

Forneça o DN da OU (ou o DN do domínio) em -Target.

Import-Module ActiveDirectory

$gpo = Get-GPO -Name "Firewall-Policy-Domain"

# Localizar a OU por nome e obter o DN
$ou = Get-ADOrganizationalUnit -LDAPFilter '(name=<<OU_NAME>>)' `
      -SearchBase (Get-ADDomain).DistinguishedName -SearchScope Subtree |
      Select-Object -First 1
$ouDn = $ou.DistinguishedName

# Vincular o GPO à OU (habilitado; Enforced opcional)
New-GPLink -Name $gpo.DisplayName -Target $ouDn -LinkEnabled Yes -Enforced No

Requisitos: módulos ActiveDirectory e GroupPolicy (RSAT) instalados na estação de administração.


Etapa 6: Verificações periódicas e troubleshooting

# Regras efetivamente ativas
Get-NetFirewallRule | Where-Object {$_.Enabled -eq "True"} |
  Select-Object DisplayName, Direction, Action, Profile

# Teste de conectividade de porta
Test-NetConnection -ComputerName <<SERVER_NAME>> -Port 3389

Conclusão

O Windows Defender Firewall oferece defesa robusta no Windows Server. Ao combinar controle explícito de tráfego de entrada/saída, análise de logs e gestão central/automatizada via GPO e PowerShell, você obtém visibilidade e segurança alinhadas ao hardening para a era zero-trust.