Permitir que a raiz faça o login via ssh somente com autenticação baseada em chave

47

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

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

Se eu definir PasswordAuthentication no , meu primeiro ponto será satisfeito, mas não o segundo. Existe uma maneira de definir PasswordAuthentication no apenas para raiz?

    
por mavillan 08.11.2013 / 00:41

3 respostas

73

Você pode fazer isso usando a diretiva PermitRootLogin . Na% man_de% manpage:

Specifies whether root can log in using ssh(1). The argument must be “yes”, “without-password”, “forced-commands-only”, or “no”. The default is “yes”.

If this option is set to “without-password”, password authentication is disabled for root.

O seguinte irá realizar o que você deseja:

PasswordAuthentication yes
PermitRootLogin without-password
    
por 08.11.2013 / 01:00
9

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

PasswordAuthentication yes
PermitRootLogin yes

Match User root
PasswordAuthentication no
    
por 08.11.2013 / 22:04
3

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

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

Match Group sugroup

PasswordAuthentication no

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

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

    
por 08.11.2013 / 09:15