Bloqueio de conta versus proibição de endereço: onde o OpenVPN realmente conta
Uma proibição de origem e um bloqueio de conta contam coisas diferentes. Encontre o armazenamento que possui o contador de falhas antes de escolher um limite para uma VPN baseada em PAM.
Bloquear um endereço e bloquear uma conta são dois mecanismos diferentes, e falham em direções opostas. Uma proibição de endereço para uma única origem e a conta alvo continua acessível de outro lugar; um bloqueio de conta para essa identidade em todo o lado, incluindo no portátil do próprio utilizador.
Para uma VPN que delega a autenticação ao PAM, o contador é aquilo a que a pilha PAM chega, não o que o ouvinte registou.
Dois contadores, duas vítimas diferentes
Um limitador de taxa observa uma origem e pergunta quantas tentativas vieram dela recentemente. Um bloqueio observa uma identidade e pergunta quantas falhas essa conta acumulou. O primeiro protege a disponibilidade, o segundo a credencial; nenhum substitui o outro.
Por isso a frase bloqueamos o IP após cinco falhas não é resposta a um relatório de preenchimento de credenciais. O atacante roda origens, cada uma recebe poucas tentativas, e a conta nunca é contada. Inversamente, um bloqueio sem controlo de origem permite ao atacante manter a conta bloqueada indefinidamente ao falhar de propósito.
Os dois controlos também têm histórias de recuperação diferentes. Uma proibição de endereço expira com um temporizador em que ninguém tem de pensar; um bloqueio de conta pode exigir um administrador, um período de espera documentado ou um restabelecimento de autosserviço.
Encontre o armazenamento que já possui a contagem
Antes de acrescentar seja o que for, descubra se já existe um armazenamento de falhas. Uma conta local de Linux, um serviço de diretório e um fornecedor de identidade externo mantêm cada um o seu próprio contador, e um módulo PAM à frente deles cria um segundo em vez de estender o primeiro.
grep -rnE 'faillock|pam_tally|pam_unix' /etc/pam.d/
ls -l /etc/pam.d/ | head -20
Leia o ficheiro de serviço que a VPN realmente nomeia e siga as suas linhas de inclusão. Em muitas distribuições o serviço de VPN inclui um ficheiro comum, o que significa que o contador que está a ajustar também se aplica a SSH e a inícios de sessão locais.
Se o diretório já impõe um bloqueio, a pergunta útil é como a conversa PAM chega a essa decisão e como a VPN a comunica. Um contador local por cima não se torna o contador do diretório, e as duas políticas podem discordar sobre quando a conta é desbloqueada.
O pam_faillock tem três posições de chamada, não uma
O módulo separa três operações que uma linha copiada costuma esbater: verificar se a conta já está bloqueada, registar uma falha e limpar o histórico após um sucesso.
É aqui que a migração de um módulo de contagem mais antigo costuma falhar. Copiar uma linha de um exemplo pam_tally2 que funciona para uma pilha pam_faillock não é renomear; a configuração documentada é diferente, e uma chamada mal colocada pode registar falhas sem nunca as verificar.
faillock --user alice
faillock --user alice --reset
O utilitário de inspeção é a forma mais rápida de ver se o contador é real: mostra as falhas registadas de uma conta e pode apagá-las. Se uma falha controlada não alterar essa saída, a posição da chamada está errada.
Um nome de serviço dedicado não é isolamento
Dar à VPN o seu próprio ficheiro de serviço PAM torna a política pretendida visível, mas não limita o efeito. Qualquer inclusão de um ficheiro comum traz o que esse ficheiro faz, incluindo contadores para todo o sistema.
Decida explicitamente se o bloqueio deve cobrir apenas o acesso VPN ou cada serviço que autentica a mesma conta. Ambas as respostas são defensáveis; a falha é acreditar que escolheu uma enquanto a pilha implementa a outra.
Depois tenha em conta o custo. Um atacante pode provocar o bloqueio, e o utilizador que sofre é o dono da conta. O limite, o período de espera e o caminho de recuperação administrativa fazem parte da política, e a recuperação não deve depender de reconfigurar a VPN durante um incidente.
Aceite a sequência, não uma única rejeição
Teste com identidades designadas segundo um plano aprovado, e teste uma cadeia em vez de um único evento: uma conta válida autentica-se, uma palavra-passe deliberadamente errada move o contador, o bloqueio configurado entra em vigor e a recuperação documentada devolve o acesso.
faillock --user test-vpn-01
journalctl -u openvpn-server@lab -n 30 --no-pager | grep -i 'auth\|pam'
Observe o comportamento de sucesso com o mesmo cuidado que o de falha. Se um início de sessão bem-sucedido não limpar o histórico, a conta bloquear-se-á após uma acumulação lenta de erros comuns. Se limpar tudo de todos os serviços, o contador é mais fraco do que a política afirma.
Por fim, pare os clientes sem supervisão antes de declarar vitória. Uma credencial guardada que tenta novamente em segundo plano recria as falhas minutos após uma recuperação e volta a bloquear a conta. A limitação de taxa por origem pode ficar como controlo adicional, mas não é a política da conta.