Estou configurando algumas ubuntu
caixas e usando o opscode chef
como ferramenta de configuração. Seria bastante fácil instalar chaves públicas para cada usuário em cada um desses servidores e desativar a autenticação de senha.
No entanto, os usuários também devem ter sudo
privilégios, que, por padrão, exigem uma senha.
Se eu quiser usar as chaves públicas dos usuários como um método de gerenciamento de acesso e permitir sudo
privilégios, isso significa que eu também devo configurar os usuários com NOPASSWD: ALL
in visduo
, ou existe uma maneira de um usuário alterar sua própria senha se eles possui apenas autenticação de chave pública?
man sudoers
fornecerá informações sobre como certos comandos podem ser executados com o sudo sem a senha do usuário necessária. Você pode até adicionar um shellscript ao / etc / sudoers, o que permitiria uma configuração de "auto-senha" por usuário sem a necessidade de uma senha anterior.NOPASSWD: ALL
qual os membros da equipe fazem parte. Se você pode sugerir uma solução melhor, poste-a como resposta.Respostas:
Sudo, em sua configuração mais comum, requer que o usuário digite sua senha. Normalmente, o usuário já usou sua senha para se autenticar na conta, e digitar a senha novamente é uma maneira de confirmar que o usuário legítimo não abandonou o console e foi invadido.
Na sua configuração, a senha do usuário seria usada apenas para autenticação no sudo. Em particular, se a chave SSH de um usuário estiver comprometida, o invasor não poderá elevar para privilégios de root no servidor. O invasor pode plantar um registrador de chaves na conta, mas esse registrador de chaves seria detectável por outros usuários e poderia ser monitorado automaticamente.
Um usuário normalmente precisa saber sua senha atual para alterá-la para uma senha diferente. O
passwd
programa verifica isso (pode ser configurado para não, mas isso não é útil ou de todo desejável no seu cenário). No entanto, o root pode alterar a senha de qualquer usuário sem conhecer a antiga; portanto, um usuário com poderes sudo pode alterar sua própria senha sem inseri-la nopasswd
prompt executandosudo passwd $USER
. Sesudo
estiver configurado para exigir a senha do usuário, o usuário deverá ter digitado a senha desudo
qualquer maneira.Você pode desativar a autenticação de senha seletivamente. Na sua situação, você desabilitaria a autenticação de senha no ssh e possivelmente em outros serviços. A maioria dos serviços nas organizações mais modernas (incluindo o Ubuntu) usa o PAM para configurar métodos de autenticação. No Ubuntu, os arquivos de configuração do PAM residem
/etc/pam.d
. Para desativar a autenticação por senha, comente aauth … pam_unix.so
linha/etc/pam.d/common-auth
. Além disso, certifique-se de que você tem na autenticação de senha embutida disable do sshd.PasswordAuthentication no
/etc/ssh/sshd_config
Você pode permitir que alguns usuários administrativos efetuem login com uma senha ou permitir a autenticação de senha no console. Isso é possível com o PAM (é bastante flexível), mas eu não sabia dizer o que estava acontecendo; faça uma pergunta separada se precisar de ajuda.
fonte
sudo passwd
que mudaria a senha do usuário atual, não do usuário sudo?sudo
pode alterar sua própria senha. O comando exato realmente não importa, mas para entrar em mais detalhes, seriasudo passwd bob
ondebob
está o nome do usuário ou algo equivalente. Sem argumento, desudo passwd
fato alteraria a senha do root.Você pode usar o módulo pam_ssh_agent_auth . É bem simples de compilar e, em seguida, basta adicionar a entrada
antes das outras entradas
auth
(ouinclude
) em/etc/pam.d/sudo
e
para
/etc/sudoers
(viavisudo
).Agora, todo usuário pode se autenticar
sudo
através de um agente SSH (encaminhado ou local) ou de sua senha. Pode ser aconselhável solicitar aos usuários que usem dessh-add -c
modo que cadasudo
chamada exija pelo menos alguma confirmação.fonte
Sim, é incrivelmente inseguro e também permite que um usuário acesse as senhas de outros usuários, mas como eles têm sudo, pouco pode ser feito.
Basicamente, você faz o seguinte:
$ sudo -i
Agora, somos raiz. Temos acesso a tudo.
# passwd $username
$ username pode ser o nome de qualquer pessoa.
Boom, senha alterada. Novamente, incrivelmente inseguro, porque você pode mudar qualquer um, mas funciona, mas funciona. Não o recomendo, mas ofereça essa resposta como um exemplo do que não fazer.
fonte
sudo -i
sem a senha do usuário atual.sudo bash
poderia ser sem senha, dada essa configuração no/etc/sudoers
arquivo. Acho @jrg é como disse mais enfocando a questão da insegurança com sudo aquisudo -i
, pode ir direto para osudo passwd $username
@Miro, não precisa saber a senha do usuário atual. Você só precisa saber a senha root para usar o sudoO objetivo da senha é garantir que os hackers que obtêm a chave do usuário ou encontrem um terminal autônomo não possam obter acesso root. Por esse motivo, eu não recomendaria nenhuma solução que envolva sudo sem senha.
Eu sugiro que você mantê-lo simples: talvez enviar e-mail de um usuário a senha padrão com instruções estritas para mudá-lo o mais rápido possível, ou então inserir um script em sua
.profile
ou.login
ou algo tal que exige uma nova senha em seu primeiro login. Ele pode se desativar quando concluído e você pode usarexpect
para inserir a senha existente para que eles nunca precisem saber.fonte
> Isso deve permitir que você tenha usuários que podem fazer login apenas usando chaves públicas e não podem usar senhas para fazer login. No entanto, ele será forçado a alterar a senha na primeira vez em que fizer o login ... mas sem ter que lhe dizer alguma senha inicial ... Os usuários serão solicitados a redefinir a senha e, posteriormente, poderão usá-la apenas para sudo mas não poderá fazer login (ssh) usando essa senha. Observe que o truque aqui é não ter informado aos usuários uma senha fictícia que eles deverão inserir no momento do login, uma vez que sejam obrigados a alterar sua senha ... No nut shell, nenhuma comunicação do admin (root) para o usuário real é necessário.
fonte