Hardening Windows — GPO, UAC, AppLocker e serviços desnecessários
Windows é o alvo mais comum em ambientes corporativos. Uma configuração padrão expõe serviços, permite execução irrestrita de programas e facilita escalada de privilégios. Hardening reduz esse risco sem comprometer a usabilidade.
Group Policy Object (GPO)
GPO permite aplicar configurações de segurança em toda a rede de forma centralizada via Active Directory — ou localmente com gpedit.msc.
Configurações críticas:
Configuração do Computador > Políticas > Configurações do Windows > Configurações de Segurança:
- Política de senha:
Comprimento mínimo: 12 caracteres
Histórico: 10 senhas
Expiração: 90 dias
- Política de bloqueio de conta:
Tentativas: 5
Duração do bloqueio: 15 minutos
- Auditoria:
Logon de conta: Sucesso e Falha
Acesso a objetos: Falha
Uso de privilégio: Falha
UAC — User Account Control
UAC impede que processos elevem privilégios silenciosamente. Configure para o nível máximo que não interfira no fluxo de trabalho:
Painel de Controle > Contas de Usuário > Alterar configurações do Controle de Conta de Usuário
→ "Sempre notificar"
GPO equivalente:
Computer Configuration > Windows Settings > Security Settings > Local Policies > Security Options
→ User Account Control: Behavior of the elevation prompt for administrators
Valor: Prompt for credentials on the secure desktop
Nunca desative o UAC em estações de trabalho. Em servidores, avalie caso a caso.
AppLocker — controle de execução
AppLocker permite definir quais executáveis, scripts e DLLs podem rodar:
GPO: Computer Configuration > Windows Settings > Security Settings > Application Control Policies > AppLocker
Regra de exemplo (modo Whitelist):
Tipo: Executável
Ação: Permitir
Condição: Caminho = %PROGRAMFILES%\*
Exceção: bloquear C:\Temp\*, C:\Users\*\Downloads\*
Habilite o serviço Application Identity para o AppLocker funcionar:
Set-Service -Name AppIDSvc -StartupType Automatic
Start-Service AppIDSvc
Serviços desnecessários — reduza a superfície
Desative serviços que não são usados no ambiente:
# Listar serviços em execução
Get-Service | Where-Object { $_.Status -eq 'Running' } | Select-Object Name, DisplayName
# Desativar serviços comuns desnecessários
$unneeded = @('Fax','XblGameSave','XboxNetApiSvc','RemoteRegistry','Telnet')
foreach ($svc in $unneeded) {
Set-Service -Name $svc -StartupType Disabled -ErrorAction SilentlyContinue
Stop-Service -Name $svc -Force -ErrorAction SilentlyContinue
}
Windows Firewall
# Habilitar em todos os perfis
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True
# Bloquear entrada por padrão
Set-NetFirewallProfile -DefaultInboundAction Block -DefaultOutboundAction Allow
# Permitir só o necessário
New-NetFirewallRule -DisplayName "Allow RDP" -Direction Inbound -Protocol TCP -LocalPort 3389 -Action Allow
Checklist rápido
- Windows Update habilitado e automático
- SMBv1 desabilitado (
Set-SmbServerConfiguration -EnableSMB1Protocol $false) - PowerShell com Constrained Language Mode
- LAPS instalado para senhas de admin local
- Defender com proteção em tempo real ativo
- Credential Guard habilitado (Windows 10/11 Enterprise)