Como posso impor uma política de frase-senha nas frases-senha que são utilizadas para criptografar a chave privada SSH?
Gostei de utilizar o pam_pwquality
módulo PAM para impor a complexidade da senha da conta de usuário, mas não acho que posso utilizá-lo com frases-senha de chave SSH.
relate perguntas
-
O OpenVPN pode conectar, o tráfego funciona, mas não estou na rede local
-
Como acessar remotamente o console do EC2 usando GUI
-
Exigir autenticação LDAP *e* autenticação ssh
-
Carregar chave “ec256.pem”: formato inválido é lançado ao tentar gerar chave pública a partir de chave privada
-
Por que chown 600 id_rsa corrige problemas de permissões?
Em termos gerais, você não pode. A criptografia de chave privada é uma questão do lado do cliente, e a maioria dos clientes SSH comumente usados não tem esse recurso (ou seja, nada como integração de Política de Grupo), especialmente porque é muito fácil contornar essas restrições usando um cliente SSH diferente para criptografar novamente a chave.
Uma abordagem melhor pode ser armazenar as chaves privadas em hardware (por exemplo, um chip TPM2 ou seu equivalente da Apple, ou um Yubikey no modo PIV/CCID) para que não haja nenhum arquivo que possa ser roubado ou copiado de outra forma. Esses tokens de hardware podem impor limites em tentativas de PIN e, portanto, podem usar com segurança um PIN mais fraco (ou seja, não tornando a vida de sua equipe uma dor de cabeça).
Para Linux, dê uma olhada em ssh-tpm-agent ou tpm2_pkcs11 . (Se todas as suas máquinas têm TPM2 consistentemente, então o ssh-agent especial é mais fácil de trabalhar. Por outro lado, se você tem uma mistura de TPM2 e Yubikey ou outros smartcards, você estará lidando muito com PKCS#11.) Para Windows, infelizmente seu próprio OpenSSH não se integra com CryptoAPI, mas PuTTY-CAC deve funcionar bem com o "Platform Key Storage Provider", e pode ser possível conectar OpenSSH ao Pageant-CAC no lugar do ssh-agent.
Como alternativa, use um desses sistemas de "Autoridade de Certificação SSH" que emitem pares de chaves de curtíssimo prazo com base em algum outro tipo de autenticação – os funcionários fazem login pela manhã e recebem um certificado SSH utilizável somente naquele dia (ou seja, semelhante a como o Kerberos funciona). Isso não é exatamente certificados X.509 como em TLS, mas conceitualmente semelhante – você cria uma CA e emite certificados para usuários usando ssh-keygen.
Acredito que a versão mais recente do PuTTY suporta certificados SSH, então esse método não está mais limitado somente ao OpenSSH. Várias empresas escreveram tais sistemas internamente e os publicaram no GitHub, geralmente específicos para seus próprios fluxos de trabalho; o software step-CA pode funcionar para configurar isso.
Por fim, se você estiver fazendo isso em uma rede do Active Directory, você pode muito bem usar o Kerberos real que o AD já tem, em vez de chaves públicas. O recurso é chamado de "autenticação GSSAPI" no SSH; ele requer que cada servidor tenha uma conta de máquina e um keytab. Dessa forma, a única senha ou frase-senha seria a mesma senha do AD que já está sujeita à complexidade da senha. (Ele também pode ser configurado sem o AD.)