O que acontece se eu excluir todas as senhas de usuário?

2

Eu tenho um Fedora VPS com um usuário root que não tem senha. Faço login com chaves SSH.

Eu tinha outra conta menos privilegiada nesse servidor, usada para administração na web. Eu já deletei sua senha também.

Se não houver usuários com senhas em um servidor, o que exatamente aconteceria se eu perdesse minha chave SSH, por exemplo? O servidor ficaria indisponível para sempre, já que não há como fazer login nele?

Além disso, como o programa sudo se comporta quando nem a raiz nem o usuário chamador têm senhas? Eu tentei e nem sequer me pedi uma senha: funcionou, já que eu tenho essa user ALL=(ALL) ALL line no meu arquivo sudoers (devo mudar isso?)

    
por jcora 13.10.2013 / 13:03

3 respostas

4

Se você remover o segundo campo do arquivo /etc/passwd , os usuários poderão fazer login sem qualquer desafio. Simplesmente tentar fazer login permitirá que eles entrem. Então, algo assim provavelmente não é algo que você gostaria de fazer.

root:$1$iM/2lekk$rXUAcF5fY8ddLL.B1bkH63:12242:0:99999:7:::

Primer / etc / passwd

  1. Nomedeusuário:éusadoquandoousuáriofazlogin.Deveterentre1e32caracteresdecomprimento.
  2. Senha:Umcaracterexindicaqueasenhacriptografadaestáarmazenadanoarquivo/etc/shadow.
  3. IDdousuário(UID):cadausuáriodevereceberumIDdeusuário(UID).OUID0(zero)éreservadoparaaraizeosUIDs1-99sãoreservadosparaoutrascontaspredefinidas.Alémdisso,oUID100-999éreservadopelosistemaparacontas/gruposadministrativosedesistema.
  4. IDdogrupo(GID):oIDdogrupoprincipal(armazenadonoarquivo/etc/group)
  5. InfodoIDdousuário:ocampodecomentários.Elepermitequevocêadicioneinformaçõesextrassobreosusuários,comoonomecompletodousuário,onúmerodetelefone,etc.Essecampoéusadopelocomandofinger.
  6. Diretórioinicial:ocaminhoabsolutoparaodiretórioemqueousuárioestaráquandofizerlogin.Seessediretórionãoexistir,odiretóriodeusuáriossetornará/
  7. Command/shell:Ocaminhoabsolutodeumcomandooushell(/bin/bash).Normalmente,issoéumshell.Porfavor,notequenãotemqueserumaconcha.

emprestadode Compreendendo o formato de arquivo / etc / passwd

desativando logins de senha

Há uma diferença sutil entre esse campo estar em branco e conter um x ( :x: ) e um :!: no arquivo /etc/shadow . Isso significa que a conta é intencionalmente configurada para não ter permissão para efetuar login, o que provavelmente é mais o que você procura.

/ etc / shadow

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 você realmente quiser permitir somente ssh logins usando uma chave pública / privada.

Outras perguntas

If there are no users with passwords on a server, what exactly would happen if I were to lose my SSH key, for example? Would the server become forever unavailable since there is no way to log in on it?

Não, desde que você tenha acesso físico ao servidor, você sempre poderá obter acesso ao sistema. Vai exigir uma reinicialização e pode ser um pouco difícil usando um VPS, mas deve ser possível.

Você normalmente inicializa o sistema no modo de usuário único, no ponto em que é possível editar o /etc/passwd & /etc/shadow arquivos, conforme necessário.

Also, how does the sudo program behave when neither the root nor the calling user have passwords? I tried it and it didn't even ask me for a password: it just worked, since I have that user ALL=(ALL) ALL line in my sudoers file (should I change that?)

Sim, sem senhas usando sudo se torna mais difícil. Existem métodos para usar outras fontes ao lidar com sudo . Veja este P & D Q & A intitulado: Set sudo senha diferente do login um .

    
por 13.10.2013 / 14:49
1

Não ter senhas está bem na maior parte do tempo.

Sim, se você permitir apenas autenticação via chave ssh e perder sua chave ssh, não poderá mais efetuar login. Nesse caso, você pode, por exemplo, inicializar um CD ao vivo, montar o sistema original e adicionar uma senha de root. (Se você não tem essa opção, talvez seja melhor ter uma senha de root, apenas no caso.)

O sudo pode ser configurado para não pedir qualquer senha. Existe a opção NOPASSWD: para ativar isso. (Veja man sudoers .)

Esteja ciente de que há muitas outras maneiras disponíveis para autenticação. Você pode ativá-los configurando o seu sistema PAM .

    
por 13.10.2013 / 13:35
1

Tenha em atenção que existem várias coisas que podem ser chamadas de "eliminar uma palavra-passe". No Linux:

  • passwd -d USER define a conta para permitir o login sem uma senha. (Alguns serviços, em particular o ssh, tendem a ser configurados para bloquear logins nesse caso.)
  • passwd -l USER bloqueia a senha da conta: nenhuma senha será aceita. Ainda é possível fazer o 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 entrar nesta conta através de qualquer serviço.

Suponho que você esteja se referindo ao segundo significado: você tornou essas contas impossíveis de efetuar login com uma senha, mas ainda acessíveis via ssh com uma chave ou com o sudo.

Se você tiver desabilitado a senha da sua conta, você não poderá mais usar o sudo. Você tem um período de carência durante o qual o sudo não está solicitando sua senha novamente. Depois disso, a menos que você tenha alterado a configuração padrão de uma maneira incomum, o sudo solicitará a sua senha, a qual você não poderá inserir, pois não haverá mais senha. Isso não se aplica a regras de sudoers com a tag NOPASSWD .

A remoção de senhas não torna o sistema mais seguro do que escolher senhas strongs. Se o seu VPS oferecer uma maneira de efetuar login em um console virtual, gere uma senha longa e aleatória para a conta raiz, teste o que ela funciona, imprima-a 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 do ssh" ou "oops, eu me tranquei do sudo"). Para sua conta, escolha uma senha mais curta que você possa memorizar, desative senhas para logins SSH (opcional) e digite sua senha para sudo para se tornar root. Ter um nível extra de autenticação da sua conta normal para o root é útil porque é muito mais difícil plantar um trojan não detectado em uma conta não-root.

    
por 14.10.2013 / 02:23