sudo sem senha quando conectado com chaves privadas SSH

23

É possível fazer o comando sudo suportar chaves privadas SSH, para que, quando o usuário efetue login usando uma chave privada, ele possa sudo sem digitar uma senha.

Isso permitiria o armazenamento das senhas sysadmin do UNIX em um armazenamento a frio criptografado e nunca seria necessário acessá-las, supondo que os usuários usem chaves SSH privadas seguras sempre para efetuar login no servidor.

Mikko Ohtamaa
fonte
askubuntu.com/a/135838 Se você colocar esses usuários em um grupo, com certeza poderá!
24412 Rob
tente sudo visudoalterar sua senha para NOPASSWD: ALLver se isso funciona
pneumática
3
@AlanTuring Isso também funcionaria para usuários desse grupo que se identificassem por meio de uma senha.
Xyon 24/10/12
@AlanTuring que efetivamente diminuir a segurança do servidor - Quero apenas determinados usuários, não todos, sudo
Mikko Ohtamaa
É possível conceder privilégios a usuários específicos. Veja minha resposta.
Isaac Rabinovitch

Respostas:

10

A opção para isso existe desde (pelo menos) abril de 2014 .

Você precisará instalar um pacote chamado pam_ssh_agent_auth(disponível para o Centos 7 /etc/pam.d/sudoimediatamente , YMMV) e, em seguida, configurar para aceitá-lo como um método de autorização. Por fim, pode ser necessário adicionar SSH_AUTH_SOCKà lista de variáveis ​​de ambiente que persistem durante sudo.

O wiki do Gentoo tem detalhes para essas etapas.

Liam Dawson
fonte
11
Adorável, obrigado Liam. Pena que eu não entro no sysadmin há muitos anos!
Mikko Ohtamaa
1

Isso não é possível sem algumas alterações sérias no código para sudo e sshd. O Sudo não conhece os métodos de login e o ssh não publica em outros programas nada que indique se chave pública, senha ou algum outro mecanismo foi usado para o login.

Como alguém disse, você pode usar a opção NOPASSWD em sudoers - isso se aplica a usuários especificados sempre, porém, não apenas quando eles usam ssh com chaves privadas.

Se você realmente quiser, pode haver truques que você pode fazer com um programa suid que verifica o log sshd e bloqueia / edita o arquivo sudoers para permitir que o usuário faça um sudo sem senha e uma tarefa periódica para revogar essa permissão.

Tudo isso dito, acho que é uma má ideia. Exigir uma senha para comandos privilegiados tem alguns benefícios interessantes que a chave privada SSH não possui. Notavelmente, permite que você tenha tempos limite para a autenticação (a senha deve ser reinserida, não verdadeira para as sessões ssh), permite que você tenha mínimos e rotação de senha (ao contrário das chaves ssh, que possuem uma senha fora do controle do servidor).

Dagon
fonte
11
"Não pode ser feito" não é uma resposta, especialmente quando pode ser feito.
Isaac Rabinovitch
Alterando a resposta para a correta, contendo novas informações.
Mikko Ohtamaa
1

Algumas respostas Aponte para sudo sem uma senha de usuário separada. Você deve estar ciente de que isso diminuirá sua segurança.

Para um usuário que já se autenticou fortemente com um certificado, isso pode não ser um problema, porque ele está em posse do certificado que teoricamente poderia fazê-lo fazer root.

No entanto, se você pensar em vulnerabilidades que fornecerão a um invasor um shell de usuário limitado e esse usuário tiver o NOPASSWD definido no arquivo sudoers, o invasor será root sem ter nenhuma credencial para o Sistema.

Se o sudo exigir uma senha do usuário, o invasor precisará de tempo e sorte para aumentar seus privilégios de root.

Sebastian Brabetz
fonte