Recebo muitos ataques de login ssh e quero reduzi-los. existe alguma maneira de especificar um comando para o openssh executar e verificar seu valor de retorno e permitir apenas a tentativa de login se este comando retornar 0?
a razão por trás disso é que eu gostaria de poder ter regras de login mais complexas que possam ser expressas em um script, em vez de regras simples baseadas em filewall/ip.
Responder1
Sim, com um openssh suficientemente moderno existe um truque: use o AuthorizedKeysCommand. Esta opção de configuração permite especificar um comando externo para recuperar chaves SSH. Aqui você pode colocar lógica como recuperar chaves SSH do LDAP, mas também qualquer outra lógica que desejar. Contanto que você aceite apenas a autenticação baseada em chave, não retornar nenhuma chave fará com que a autenticação falhe.
Em versões mais antigas do openssh você pode usar o ForceCommand, mas esse é um comando forçadodepoisautenticação, não um comando que é executadoantesautenticação. No entanto, ele funciona com autenticação baseada em senha e chave.
Se quiser oferecer suporte à autenticação baseada em senha e conectar-se à fase de autenticação, você precisará escrever seu próprio módulo PAM e torná-lo necessário para autenticação SSH. Esta não é a maneira mais trivial e não é chamada para autenticação baseada em chave.
Se tudo o que você deseja fazer é bloquear endereços IP que apresentam muitas falhas de autenticação, o fail2ban também pode ajudá-lo, sem exigir alterações na configuração do SSH.