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 hasVerdictWhat it protects against
Timestamp inside the policy window, protective service runningAdmit to normal applicationsNothing yet; the other checks still apply
Timestamp older than the windowDeny, admit remediation page onlySignature rollback and dormant laptops
Service disabled or reporting offDeny, escalate to the endpoint ownerAn agent reporting stale success
No report at all for this sessionTreat as deny, never as healthyAgents 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.

Artigos relacionados