Permitir que o root efetue login via ssh apenas com autenticação baseada em chave


49

Tenho algumas dúvidas sobre certas configurações de servidor ssh /etc/ssh/sshd_config. Eu quero o próximo comportamento:

  1. A autenticação de chave pública é a única maneira de se autenticar como raiz (sem autenticação por senha ou outra)
  2. Usuários normais podem usar ambos (autenticação por senha e chave pública)

Se eu definir o PasswordAuthentication nomeu primeiro ponto está satisfeito, mas não o segundo. Existe uma maneira de definir PasswordAuthentication noapenas para root?

Respostas:


78

Você pode fazer isso usando a PermitRootLogindiretiva. Na página de sshd_configmanual:

Especifica se o root pode efetuar login usando ssh (1). O argumento deve ser "sim", "sem senha", "somente comandos forçados" ou "não". O padrão é "yes".

Se esta opção estiver definida como "sem senha", a autenticação de senha será desativada para raiz.

A seguir, você realizará o que deseja:

PasswordAuthentication yes
PermitRootLogin without-password

11
Eu tentei isso no Debian e verifiquei service ssh restartno servidor e, em seguida, no cliente, tentei conectar-me sem a minha chave ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no root@hoste, de fato, não consegui entrar com a senha, mas com a chave para o usuário root.
bastian

Sim, mas se você acabou de fazer isso em vez, então você pode fazer o login com a senha: ssh -o PreferredAuthentications=password root@hostnão é particularmente seguro imho
geoidesic

2
Em 2019, é "PermitRootLogin Proibir Senha", o antigo sem senha é um alias obsoleto.
vbraun 8/04

10

Você pode usar Matchblocos para configurar algumas opções por autenticação de usuário ou grupo ou por endereço IP ou nome do host da origem da conexão.

PasswordAuthentication yes
PermitRootLogin yes

Match User root
PasswordAuthentication no

3
Eu consegui me bloquear do meu servidor ssh fazendo isso.
Richard Metzler 31/01

Esse parece ser o melhor método se você nunca desejar que o prompt de senha apareça como root.
Leo

Isso também me trancou. Eu acho que pode ser na ordem errada ...
Gary

3

Eu tenho uma abordagem ainda mais restritiva para conceder privilégios de root no meu servidor, o que pode ser interessante para os paranóicos como eu. Cuidado com o que faz e em que ordem; caso contrário, você pode acabar com um sistema no qual não pode obter acesso root.

  • Crie um grupo específico sugroup, cujos membros poderão se tornar raiz e permitir apenas a autenticação de chave para esse grupo, colocando as seguintes linhas no final do sshd_confid:

Match Group sugroup

PasswordAuthentication no

  • Coloque o comando auth required pam_wheel.so group=sugroupno /etc/pam.d/su. Pode já estar lá e você só precisa descomentá-lo. Isso nega acesso root a todos os usuários que não são membros do sugroup
  • Escolha uma senha root forte :)
  • Verifique se o seu novo método de autenticação funciona e somente se:
  • Negue o login root direto via ssh usando PermitRootLogin noin /etc/ssh/sshd_config.

Usando esta configuração, é necessário usar uma autenticação de chave e uma senha para se tornar root. Eu configurei meu servidor assim, pois prefiro não ter acesso root direto via ssh, independentemente do método de autenticação.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.