O que significa 'sem senha' no arquivo sshd_config?

118

Acabei de instalar o Ubuntu 14.04 no meu servidor e estava configurando todos os meus arquivos de configuração quando me deparei com isso no meu sshd_configarquivo:

# Authentication:
LoginGraceTime 120
PermitRootLogin without-password
StrictModes yes

Isso me deixou muito preocupado. Eu pensei que era possível que alguém estivesse fazendo login no meu servidor como root sem uma senha.

Eu tentei conectar ao meu servidor como root via:

johns-mbp:~ john$ ssh [email protected]
The authenticity of host '192.168.1.48 (192.168.1.48)' can't be established.
RSA key fingerprint is 40:7e:28:f1:a8:36:28:da:eb:6f:d2:d0:3f:4b:4b:fe.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.48' (RSA) to the list of known hosts.
[email protected]'s password:  

Digitei uma senha em branco e ela não me deixou entrar, o que foi um alívio. Então, minha pergunta é: o que significa sem senha e por que isso é um padrão no Ubuntu 14.04?

John
fonte

Respostas:

142

Na página de manual :

PermitRootLogin

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 é "sim".

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

Se essa opção estiver definida como "somente comandos forçados", o login raiz com autenticação de chave pública será permitido, mas apenas se a commandopção tiver sido especificada (o que pode ser útil para fazer backups remotos, mesmo que o login root normalmente não seja permitido) . Todos os outros métodos de autenticação estão desabilitados para raiz.

Se esta opção estiver definida como "não", o root não poderá fazer login.

Assim, without-passwordpermite o login raiz apenas com autenticação de chave pública. Isso geralmente é usado com scripts de shell e tarefas automatizadas.

Florian Diesch
fonte
2
Não permitir 'login root' usando senha é considerado uma segurança mais forte do que permitir. Dito isto, você não deve estar logando no root , a menos que nenhum outro método (sudo, etc.) funcione.
David6 19/04
5
Como você pode ver no entanto, enquanto a página de manual indica que o padrão é "yes", o Ubuntu fez o padrão "sem senha".
ferrouswheel
36
Então without-password, todos os métodos são permitidos, exceto a senha? Realmente soa como "permitido fazer login sem a necessidade de uma senha".
Gauthier
1
"Todo o acesso root deve ser facilitado por meio de um logon local com um ID de usuário único e identificável e, em seguida, por meio do comando su, uma vez autenticado localmente. O login root direto é extremamente inseguro e oferece pouco caminho para a auditoria de responsabilização". - Guia IBM AIX da CIS
Dominik Antal
22
PermitRootLogin now accepts an argument of 'prohibit-password' as a less-ambiguous synonym of 'without-password'.
endolith
16

Na verdade, essa configuração não faz praticamente nada se você estiver usando autenticação PAM. Na parte inferior do sshd_configarquivo de configuração, você encontrará:

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.

A configuração padrão no Ubuntu é usar a autenticação PAM:

UsePAM yes
Atari911
fonte
1
Na minha breve experiência , mesmo configurá-lo para nonão fazer PermitRootLogin without-passwordrealmente funcionar, de alguma forma! :(
cregox 02/12/2015
1
@cregox se você estiver usando um sistema de desktop típico, você precisa fazer ssh-copy-id -i ~/.ssh/id_rsa.pub user@ipisso e isso cria ~/.ssh/authorized_keysem mente que, se você não puder fazer login como root, não criaria esse arquivo em /root/.ssh/, mas funcionará se você copiar o arquivo lá
Rutrus
3

Observe que existem razões legítimas para efetuar login via root (mas usando chaves criptográficas e nunca uma senha). Um exemplo típico é a sincronização remota de dois servidores (para que um deles seja usado como failover). Como a estrutura deve ser idêntica, geralmente é necessária uma senha root.

Aqui está um exemplo usando uníssono para a sincronização: https://serverfault.com/questions/341985/remotely-use-root-over-ssh-for-unison

Gwyneth Llewelyn
fonte
2
O login com um usuário normal (provavelmente as chaves criptográficas provavelmente) e a sua pertença ao sudogrupo também permitem que você faça isso?
NS du Toit
2

Nas versões mais recentes do sshd, "sem senha" foi alterado para "proibir senha".

Ambas as versões funcionam, provavelmente é melhor usar "proibir senha", se puder: ele se explica melhor.

teknopaul
fonte