
Eu tenho um Fedora VPS com um usuário root que não possui senha. Eu faço login com chaves SSH.
Eu tinha outra conta menos privilegiada naquele servidor, usada para administração web. Agora excluí sua senha também.
Se não houver usuários com senhas em um servidor, o que aconteceria exatamente se eu perdesse minha chave SSH, por exemplo? O servidor ficaria indisponível para sempre, pois não há como fazer login nele?
Além disso, como o sudo
programa se comporta quando nem o usuário root nem o usuário chamador possuem senhas? Eu tentei e nem me pediu senha: simplesmente funcionou, já que tenho essa user ALL=(ALL) ALL
linha no meu arquivo sudoers (devo mudar isso?)
Responder1
se você remover o segundo campo do /etc/passwd
arquivo, os usuários poderão fazer login sem qualquer desafio. A simples tentativa de login permitirá que eles entrem. Portanto, algo assim provavelmente não é algo que você gostaria de fazer.
root:$1$iM/2lekk$rXUAcF5fY8ddLL.B1bkH63:12242:0:99999:7:::
/etc/passwd iniciador
- Nome de usuário: É usado quando o usuário faz login. Deve ter entre 1 e 32 caracteres.
- Senha: Um caractere x indica que a senha criptografada está armazenada no arquivo /etc/shadow.
- ID do usuário (UID): cada usuário deve receber um ID de usuário (UID). O UID 0 (zero) é reservado para root e os UIDs 1 a 99 são reservados para outras contas predefinidas. Outros UID 100-999 são reservados pelo sistema para contas/grupos administrativos e do sistema.
- ID do grupo (GID): O ID do grupo principal (armazenado no arquivo /etc/group)
- Informações de ID do usuário: o campo de comentários. Ele permite que você adicione informações extras sobre os usuários, como nome completo do usuário, número de telefone, etc. Este campo é usado por comando de dedo.
- Diretório inicial: o caminho absoluto para o diretório em que o usuário estará quando fizer login. Se esse diretório não existir, o diretório de usuários se tornará /
- Command/shell: O caminho absoluto de um comando ou shell (/bin/bash). Normalmente, este é um shell. Observe que não precisa ser um shell.
emprestado deCompreendendo o formato de arquivo /etc/passwd
desabilitando logins com senha
Há uma diferença sutil entre este campo estar em branco e conter um x ( :x:
) e um :!:
no /etc/shadow
arquivo. Isso significa que a conta foi configurada intencionalmente para não ter permissão de login, o que provavelmente é mais o que você procura.
/etc/sombra
root:!:15669:0:99999:7:::
O mesmo pode ser feito para qualquer conta, que é provavelmente a maneira que eu sugiro que você faça isso se realmente quiser permitir ssh
logins apenas usando uma chave pública/privada.
Outras perguntas
Se não houver usuários com senhas em um servidor, o que aconteceria exatamente se eu perdesse minha chave SSH, por exemplo? O servidor ficaria indisponível para sempre, pois não há como fazer login nele?
Contanto que você tenha acesso físico ao servidor, você sempre poderá obter acesso ao sistema. Exigirá uma reinicialização e pode ser um pouco difícil usar um VPS, mas deve ser possível.
Normalmente, você inicializa o sistema no modo de usuário único, momento em que pode editar os arquivos /etc/passwd
& /etc/shadow
conforme necessário.
Além disso, como o programa sudo se comporta quando nem o usuário root nem o usuário chamador possuem senhas? Eu tentei e nem me pediu senha: simplesmente funcionou, já que tenho aquela linha user ALL=(ALL) ALL no meu arquivo sudoers (devo mudar isso?)
Sim, sem senhas, o uso sudo
fica mais difícil. Existem métodos para usar outras fontes ao lidar com arquivos sudo
. Veja estas perguntas e respostas sobre U&L intituladas:Defina a senha do sudo de maneira diferente do login.
Responder2
Esteja ciente de que existem várias coisas que podem ser chamadas de “exclusão de uma senha”. No Linux:
passwd -d USER
define a conta para permitir login sem senha. (Alguns serviços, em particular o ssh, tendem a ser configurados para bloquear logins neste caso.)passwd -l USER
bloqueia a senha da conta: nenhuma senha será aceita. Ainda é possível fazer login por outros meios, como chaves ssh ou sudo.`usermod -e 1 USER
bloqueia a conta (definindo a data de expiração da senha para uma data passada): torna-se impossível fazer login nesta conta através de qualquer serviço.
Presumo que você esteja se referindo ao segundo significado: você tornou impossível fazer login nessas contas com uma senha, mas ainda acessível via ssh com uma chave ou com sudo.
Se você desativou a senha da sua conta, não poderá mais usar o sudo.Você tem um período de carência durante o qual o sudo não solicita sua senha novamente. Depois disso, a menos que você tenha alterado a configuração padrão de uma forma incomum, o sudo solicitará sua senha, que você não poderá inserir, pois não há mais senha. Isso não se aplica às regras sudoers com a NOPASSWD
tag.
A remoção de senhas não torna o sistema mais seguro do que a escolha de senhas fortes. Se o seu VPS oferece uma maneira de fazer login em um console virtual, gere uma senha longa e aleatória para a conta root, teste se funciona, imprima e coloque o pedaço de papel no seu cofre. Dessa forma, você tem uma maneira de recuperar o acesso ao seu sistema se algo der errado (como “oops, eu me tranquei no ssh” ou “oops, eu me tranquei no sudo”). Para sua conta, escolha uma senha mais curta que você possa memorizar, desative as senhas para logins SSH (opcional) e digite sua senha para sudo
se tornar root. Ter um nível extra de autenticação da sua conta normal para root é útil porque é muito mais difícil plantar um trojan não detectado em uma conta não root.
Responder3
Não ter senha é bom na maioria das vezes.
Sim, se você permitir apenas a autenticação via chave ssh e perder sua chave ssh, não poderá mais fazer login. Neste caso você pode, por exemplo, inicializar algum live CD, montar o sistema original e adicionar uma senha de root. (Se você não tiver essa opção, talvez seja melhor ter uma senha de root, só para garantir.)
O Sudo pode ser configurado para não solicitar nenhuma senha. Existe a NOPASSWD:
opção de ativar isso. (Ver man sudoers
.)
Esteja ciente de que existem muitas outras formas disponíveis de autenticação. Você pode ativá-los configurando seuPAMsistema.