O controle de postura da VPN não bloqueia? Siga primeiro o relatório
Seu agente de endpoint relata um estado saudável, mas o aplicativo interno continua abrindo. Percorra o coletor, o veredicto e o bloqueio, e depois prove a negação com uma única requisição.
Se um notebook cujas assinaturas de antivírus pararam de atualizar semanas atrás ainda consegue abrir seu aplicativo interno, raramente o documento de política é o que está errado. Três sistemas separados precisam concordar antes de o acesso ser negado: algo mede o endpoint, algo converte essa medição em um veredicto de permitir ou negar, e algo realmente descarta o tráfego. Quando um dispositivo não conforme entra assim mesmo, exatamente um desses elos está ausente ou confia em evidências que não deveria. As verificações abaixo seguem essa ordem, e cada uma tem um ponto de parada.
O bloqueio é o último passo, não o primeiro
Autenticação e postura respondem a perguntas diferentes. Um login bem-sucedido prova que uma credencial foi apresentada; não diz nada sobre o software que roda na máquina que a apresentou. É justamente essa lacuna que permite a um perfil de cliente copiado levar uma sessão de aparência saudável para um host não saudável.
O trabalho de conformidade de endpoint já tem vocabulário para essa cadeia. O modelo de referência NEA da RFC 5209 divide a tarefa em um coletor, uma etapa de avaliação e um ponto de aplicação, e diz claramente que um cliente que mente sobre seu próprio estado fica fora do modelo. Essa ressalva importa mais que o diagrama: um módulo de plataforma confiável não transforma uma medição autorrelatada em fato.
Mantenha o coletor honesto quanto ao escopo. Ele deve relatar os atributos que sua política nomeia, no dispositivo que pede acesso, e pouco mais. Um agente de inventário que lista cada pacote instalado é uma ferramenta diferente de um coletor de postura, e a diferença é ao mesmo tempo um problema de retenção e de precisão. Se o relatório não puder ser vinculado a uma identidade de dispositivo, o avaliador está adivinhando qual máquina acabou de liberar.
Um painel que mostra status vermelho não é um controle. Pergunte a que um usuário negado ainda consegue chegar: o wiki, o compartilhamento de arquivos, a porta do banco de dados? A remediação precisa de uma única superfície estreita, e todo o resto pertence atrás do bloqueio.
Leia o relatório antes de ler a regra
Comece pela fonte em vez do tique verde do cliente. No Windows a medição local vem do Defender ou do produto que se registrou no Security Center, e ambos podem ser lidos sem console do fornecedor:
Get-MpComputerStatus | Select-Object AMServiceEnabled, RealTimeProtectionEnabled, AntivirusSignatureLastUpdated
Get-CimInstance -Namespace root/SecurityCenter2 -ClassName AntiVirusProduct | Select-Object displayName, productState
O segundo comando retorna um inteiro chamado productState. Seus bits são documentados de forma frouxa e os fornecedores empacotam as sinalizações de ativação e de atualidade de maneiras diferentes, então confirme em vez de analisar. Pacotes de terceiros também deixam a entrada do Security Center após a desinstalação, e ela relata software que não está mais no disco.
A idade é o campo que as pessoas pulam. Um carimbo de tempo de assinatura só significa algo em relação ao relógio da máquina que faz a avaliação, então converta-o em um intervalo em vez de estimá-lo a olho:
$sig = (Get-MpComputerStatus).AntivirusSignatureLastUpdated
[int](New-TimeSpan -Start $sig -End (Get-Date)).TotalHours
Agora a política tem um número para ler. Se sua regra diz 72 horas, é o número que ela usa, e um notebook que dorme uma semana falha sem que ninguém interprete um rótulo. Anote o limite ao lado do comando, porque os dois se desalinham quando a ferramenta de endpoint é substituída.
Converta cada estado de dispositivo em veredicto escrito
A maioria das disputas sobre postura é, na verdade, disputa sobre a linha desconhecida. Decida antes do primeiro incidente, numa tabela que nomeia a evidência, o veredicto e o responsável, para que ninguém improvise no console do gateway.
| Evidence the assessor has | Verdict | What it protects against |
|---|---|---|
| Timestamp inside the policy window, protective service running | Admit to normal applications | Nothing yet; the other checks still apply |
| Timestamp older than the window | Deny, admit remediation page only | Signature rollback and dormant laptops |
| Service disabled or reporting off | Deny, escalate to the endpoint owner | An agent reporting stale success |
| No report at all for this session | Treat as deny, never as healthy | Agents that fail open under load |
A linha de baixo é onde os produtos diferem. Alguns gateways recusam a conexão e explicam por quê; outros deixam o túnel subir e aplicam uma política restrita; poucos voltam ao último relatório bom conhecido. Apenas os dois primeiros são defensáveis, e vale a pena testar qual o seu faz.
Mantenha identidade e permissão em faixas próprias. Um notebook que passa em todos os testes de postura ainda precisa da autorização humana correta para a aplicação, e um certificado de dispositivo prova a posse de uma chave, não o estado do sistema de arquivos. Esmagar os três em um único booleano é como uma conta de helpdesk acaba com acesso permanente à produção.
Verifique o caminho de aplicação com uma requisição, não com um painel
A aplicação é uma propriedade de uma requisição, então meça-a com uma. Coloque uma máquina não conforme no túnel e faça a chamada que um usuário real faria:
curl -sS -o /dev/null -w '%{http_code}
' --max-time 5 https://app.internal.example/health
Um 200 vindo de um dispositivo que deveria estar bloqueado significa que a decisão nunca chegou ao caminho de dados. Duas causas comuns: a política está ligada a um grupo ao qual a conta de teste nunca se juntou, ou a aplicação é alcançável por uma rota que a VPN não possui.
Verifique primeiro a suposição de roteamento. Se o nome interno resolve para um endereço que o cliente já alcança pela LAN local, o túnel é irrelevante e nenhuma política será aplicada. Compare esse endereço com a rota que o gateway empurra. No OpenVPN a política por cliente vive em arquivos com chave pelo nome comum, então é fácil inspecionar:
ls /etc/openvpn/ccd/
cat /etc/openvpn/ccd/laptop-17
Um arquivo que contém disable desconecta aquele cliente por completo, enquanto uma linha push "route ..." estreita o que ele pode alcançar. Ambos são aplicação, e ambos são visíveis para quem estiver depurando o relatório.
Teste os quatro casos em uma única conta de teste
A verificação final é uma matriz pequena, não um caminho feliz. Conduza uma conta de teste por quatro estados: atual, assinatura expirada, proteção desativada, agente não instalado. Para cada um, registre o veredicto no log de avaliação, o status HTTP que a aplicação retorna e se a página de remediação carregou.
foreach ($case in 'current', 'stale', 'disabled', 'absent') {
Get-MpComputerStatus | Select-Object AMServiceEnabled, AntivirusSignatureLastUpdated
curl.exe -sS -o NUL -w "%{http_code}
" --max-time 5 https://app.internal.example/health
}
Dois detalhes são fáceis de perder. Primeiro a repetição: um relatório capturado enquanto a máquina estava saudável não deve ser aceito para uma sessão posterior no mesmo dispositivo, então procure um carimbo de tempo vinculado à conexão atual. Depois a remoção: desinstalar o agente deve produzir a mesma negação de um relatório desatualizado, não uma passagem limpa, e esse é o caso que mais frequentemente nunca é testado.
Quando a matriz coincidir com a tabela, entregue três itens a quem for operar o gateway em seguida: os comandos, o limite e os quatro resultados esperados. Essa entrega é o entregável real, porque um desenho de postura que vive apenas em um documento de política deriva na primeira vez que a ferramenta de endpoint muda seu campo de relatório.