Forçar autenticação de chave pública SSH para usuários específicos

9

É possível forçar usuários específicos a efetuar login com chave pública, permitindo que outros usuários façam login com senha? Como a autenticação de chave pública (com senha) é mais strong que a autenticação somente por senha, gostaríamos de exigir que os sudoers façam login com a chave pública. No entanto, é menos conveniente forçar usuários normais a fazer isso. Em sshd_config , não vejo nenhuma configuração relacionada à política.

    
por Crend King 22.02.2011 / 09:52

2 respostas

9

Você tem algumas opções. Nesta resposta, suponho que você tenha um grupo sudoers definido.

Dê uma olhada na página sshd_config man e procure pela diretiva Match . Isso permite especificar blocos de configuração que se aplicam apenas a um subconjunto de suas conexões ssh. Você poderia fazer algo assim:

Match Group sudoers
PasswordAuthentication no
ChallengeResponseAuthentication no

Você poderia, em teoria, realizar algo semelhante com uma configuração do PAM que simplesmente falharia nas tentativas de autenticação de pessoas no grupo sudoers . Isso provavelmente envolveria o módulo pam_succeed_if ... você poderia adicionar algo assim ao seu auth config para sshd:

auth        requisite     pam_succeed_if.so user notingroup sudoers quiet

Isso significa que apenas pessoas que não estão no grupo sudoers podem fazer autenticação via PAM. Note que isso não foi testado. Você também pode usar o Módulo pam_listfile para fazer algo semelhante.

    
por 22.02.2011 / 17:37
2

Outra resposta possível, como @larsks, answer não funcionou para minha versão de ssh_d , já que minha versão parece estar usando a documentação encontrada aqui que indica:

Only a subset of keywords may be used on the lines following a Match keyword. Available keywords are . . .

Essa lista de palavras-chave não inclui: ChallengeResponseAuthentication .

Uma maneira divertida que encontrei foi usar AuthenticationMethods , que no seu caso funcionaria assim:

Match Group sudoers
AuthenticationMethods 'publickey'

AuthenticationMethods obtém uma lista de valores separados por vírgulas que representam uma série de métodos que um usuário deve passar antes de acessar o servidor.

AuthenticationMethods 'publickey,password' forçaria o usuário a passar com uma chave pública e depois com uma senha.

Para ler mais man sshd_config .

    
por 17.09.2016 / 19:45