Está desabilitando o login de senha para SSH da mesma forma que a exclusão da senha para todos os usuários?

6

Eu tenho um servidor de nuvem com apenas um usuário root. I SSH para ele usando apenas chaves RSA. Para torná-lo mais seguro, eu queria desativar o recurso de senha. Eu sei que isso pode ser feito editando o arquivo /etc/ssh/sshd_config e alterando PermitRootLogin yes para PermitRootLogin without-password . Eu queria saber se simplesmente excluir a senha de root via passwd -d root seria o equivalente (supondo que eu não crie mais usuários ou novos usuários tenham suas senhas excluídas também). Há algum problema de segurança com uma abordagem diferente da outra?

    
por Arsham Skrenes 30.10.2013 / 08:42

2 respostas

11

Usar a autenticação de chave pública ignora outros métodos de autenticação, por isso não é necessário para usar PermitRootLogin without-password , é perigoso se alguém tentar se logar como root e não for forçado a apresentar uma chave pública.

Para realizar o que você deseja, desabilitando a autenticação de senha em sshd, use PasswordAuthentication no em seu sshd_config .

Esta configuração não afetará o conteúdo de /etc/shadow , onde suas senhas de usuário são armazenadas. Se outro aplicativo quiser autenticar via senha (digamos CUPS, por exemplo), isso ainda funcionará.

Se você quiser desabilitar isso, a exclusão de uma senha de usuário com o comando indicado acima não funcionará. Ele permite logins sem senha para um determinado usuário, o que definitivamente não adiciona segurança.

A emissão de passwd -l <user> realizará o que você pretendia. Tenha em mente que outros aplicativos do que o ssh podem ter um problema com isso, porque eles esperam autenticação de senha em sua configuração padrão (sudo, su, CUPS, etc.)

Citações de man passwd :

-l, --lock
           Lock the password of the named account. This option disables a password by changing it to a value which matches no possible encrypted value (it adds a ´!´ at the beginning of the password).

           Note that this does not disable the account. The user may still be able to login using another authentication token (e.g. an SSH key). To disable the account, administrators should use usermod
           --expiredate 1 (this set the account's expire date to Jan 2, 1970).

           Users with a locked password are not allowed to change their password.
    
por 30.10.2013 / 09:00
2

Absolutamente não, remover a senha do root seria um grande risco de segurança, se você quiser modificar a senha do root, sugiro que você defina uma senha aleatória strong para o usuário root. Mesmo tho /etc/shadow

Agora que você tem o usuário root bloqueado para acesso SSH somente à sua chave SSH, sua próxima etapa seria verificar quais outros usuários têm acesso ao shell e removê-lo se não for necessário, e fazer o mesmo para qualquer conta de usuário adicional crie e mantenha o acesso SSH apenas ao usuário root.

Se você optar por remover a senha de qualquer usuário, ela também deverá ter o acesso ao shell removido em /etc/passwd definindo o shell como /sbin/nologin .

Uma abordagem diferente seria desativar o login de senha para SSH para todos os usuários e permitir somente a autenticação de chave pública.

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no

Verifique também se a autenticação de chave pública é permitida em /etc/ssh/sshd_config :

PubkeyAuthentication yes

    
por 30.10.2013 / 09:02