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.

Artigos relacionados