Gostaria de habilitar o seguinte: Instâncias ec2 do Linux na AWS que executam autenticação LDAP de usuários que não possuem diretório inicial atualmente na caixa. Eu tenho um openLDAP funcionando na AWS para a tarefa
Uma vez autenticado pelo LDAP:
- O diretório inicial do usuário será criado
- A chave ssh pública do usuário é recuperada de seu
sshPublicKey
atributo no LDAP e eles só podem fazer logon se o sshPrivateKey local corresponder
Eu sei como fazer autenticação LDAP OU recuperação de chave pública por meio de um ldapsearch
, mas quero fazer as duas coisas.
O cenário que estou tentando mitigar é quando um funcionário sai da empresa: posso simplesmente desabilitar sua conta no openLDAP e mesmo que sua chave pública exista nas máquinas, eles não poderão usá-los porque também falharão na autenticação ldap .
Procurei no StackExchanges e acho que não encontrei o que estava procurando. O mais perto que cheguei é
https://serverfault.com/questions/653792/ssh-key-authentication-using-ldap
https://serverfault.com/questions/579341/combination-of-ssh-key-auth-and-two-factor-authentication
Em primeiro lugar, as chaves autorizadas não devem ser armazenadas no diretório inicial do usuário por dois motivos:
Você deve definir AuthorizedKeysFile assim para permitir que o sshd leia as chaves autorizadas de um diretório bloqueado onde você coloca as chaves por meio de um script de sincronização auxiliar:
Uma variante disso é usar AuthorizedKeysCommand para acionar alguma recuperação dinâmica de chaves autorizadas. Lembre-se de que a rede pode estar inativa ou um sistema inacessível no momento em que você precisa fazer o login.
Caso o funcionário saia você também retire as chaves autorizadas.
Se você ainda deseja impor o uso de autenticação baseada em chave e senha, pode definir AuthenticationMethods como este:
Observe a vírgula usada como separador em vez de um espaço.
(Se você não quiser lidar com todos os detalhes sozinho, pode configurar uma solução pronta para uso como FreeIPA com sssd como cliente NSS/PAM ou meu Æ-DIR com aehostd usado como cliente NSS/PAM.)