Senha SSH / Login diferente da senha SUDO

9

Gostaria de usar uma senha diferente para elevar meu usuário ao status sudo do que a senha que utilizo para fazer login (via GUI, shell ou SSH) na minha conta. Isso é possível?

EDIT: Como definir a senha root permitiria o login como root, este não é um bom caminho. Eu preferiria uma senha sudo específica do usuário, em vez de uma senha raiz do sistema.

Richard
fonte
1
Você pode elaborar isso - por que você quer fazer isso?
Doug Harris
1
Sinto que a pergunta se explica bem o suficiente, mas o objetivo é tornar o login seguro por meio de senhas longas e difíceis e, em seguida, usar uma senha diferente para acesso ao sudo, para que comprometer a conta de um usuário não forneça automaticamente acesso ao sudo.
Richard
Ouvi dizer que é possível fazer sudo através de chaves rsa / dsa, que podem ter qualquer senha que você desejar.
Rob

Respostas:

2

de homens que sofrem:

rootpw          If set, sudo will prompt for the root password instead of the
                password of the invoking user.  This flag is off by default.

runaspw         If set, sudo will prompt for the password of the user defined
                by the runas_default option (defaults to root) instead of the
                password of the invoking user.  This flag is off by default.

Ou você pode simplesmente banir logins baseados em senha via ssh completamente. Exija uma chave criptografada com senha de acesso para login remoto. Então você está livre para usar a senha do sudo. A opção relevante é

de man sshd_config

 PasswordAuthentication
         Specifies whether password authentication is allowed.  The default
         is “yes”.
Chas. Owens
fonte
Obrigado pela sua ajuda, Chas. Owens. Receio que um efeito colateral da sua solução seja que a conta root tenha uma senha e, portanto, seja possível fazer login como root, o que não é uma porta que desejo deixar aberta. Eu preferiria uma senha sudo específica do usuário, em vez de uma senha raiz do sistema.
Richard
Você pode desativar o login root de sshd_config bem
Rob
1

você está procurando isso em sudoers man?

   targetpw        If set, sudo will prompt for the password of the user
                   specified by the -u option (defaults to root) instead of the
                   password of the invoking user. 
johnshen64
fonte
Obrigado pela sua ajuda, johnshen64. Receio que um efeito colateral da sua solução seja que a conta root tenha uma senha e, portanto, seja possível fazer login como root, o que não é uma porta que desejo deixar aberta. Eu preferiria uma senha sudo específica do usuário, em vez de uma senha raiz do sistema.
Richard
esse usuário não precisa ser usuário root, apenas o padrão é root, se você não o especificar. você pode experimentá-lo para ver se isso faria com você. O unix é bastante aberto e, se isso ainda não funcionar, você pode até escrever um script de wrapper ou modificar o sudo (se você souber c) para fazer exatamente o que deseja.
10262 John Mayer
@ johnshen64 Acho que ele está se opondo ao fato de que a mesma senha seria usada para todos os usuários.
Chas. Owens
Entendo, mas um usuário administrador pode ser criado para cada usuário, digamos $ {USER} foradmin, para que um usuário sempre especifique -u $ {USER} foradmin, embora imponha que o sudo ainda precise ser substituído por um script personalizado.
21412 John Mayer
1

Que tal desativar o logon de senha via SSH e permitir o logon de chave pública onde você pode definir sua senha difícil de adivinhar. Então a senha local pode ser mais curta e usada pelo sudo.

Além disso, você precisará configurar /etc/pam.d/sudopara usar um módulo diferente (ou adicional), à primeira vista pam_dialpasspode permitir o que você precisa.

Você também pode definir a configuração LDAP para uma e senhas locais para a outra. Tudo dependerá de quantas mudanças você estiver apto e disposto a fazer, quais módulos estão disponíveis etc.

Bram
fonte
Obrigado pela sua ajuda, Bram. Sua primeira sugestão funcionaria, exceto que a autenticação de chave pública pode ser proibitiva de trabalhar, a menos que você esteja preparado para transferir arquivos de chave.
1016 Richard
1

SOLUÇÃO 1: newgrp

Uma maneira simples de abordar seu caso de uso seria usar :NOPASSWDem combinação com uma senha de grupo e grupo:

Adicione uma linha aos sudoers:

%rudo   ALL=(ALL:ALL) NOPASSWD:ALL

Crie um grupo protegido por senha:

groupadd rudo
gpasswd  rudo # Enter passwd

Agora, quando você fizer login como um usuário sem privilégios (supondo que você ainda não esteja no rudogrupo), faça login no rudogrupo; nesse momento, a senha será solicitada.

login user
newgrp rudo

Agora você pode executar sem sudosenha, desde que permaneça conectado ao grupo.


SOLUÇÃO 2: runaspw

Uma maneira melhor e possivelmente mais segura de fazer isso runaspw. runaspwestá associado à runas_defaultopção, então você deve adicionar essa opção também.

Supondo que você já tenha a %sudoentrada de grupo padrão :

%sudo   ALL=(ALL:ALL) ALL

adicione estas linhas ao arquivo sudoers:

Defaults:%sudo  runas_default=sudo
Defaults:%sudo  runaspw

Agora adicione um novo sudousuário com uma senha:

useradd sudo -d /nonexistent -s /usr/sbin/nologin -MNr
passwd sudo

Agora, os usuários do grupo sudo serão solicitados a senha do usuário sudo, mas apenas os usuários do grupo sudo poderão fazer o sudo (diferente da solução do grupo acima, onde qualquer pessoa do grupo ou a senha do grupo poderia sudo).

Um pequeno problema é o usuário padrão de runas, agora sudo, para sudo como root, você precisa especificar explicitamente o root:

sudo -u root <cmd>

Mas fácil o suficiente para definir um alias sudo='sudo -u root'comando alias ( ) ou indireto sudo.

spinkus
fonte