¿Qué significa 'sin contraseña' en el archivo sshd_config?

118

Acabo de instalar Ubuntu 14.04 en mi servidor y estaba configurando todos mis archivos de configuración cuando me encontré con esto en mi sshd_configarchivo:

# Authentication:
LoginGraceTime 120
PermitRootLogin without-password
StrictModes yes

Esto me preocupó mucho. Pensé que era posible que alguien pudiera iniciar sesión en mi servidor como root sin una contraseña.

Intenté conectarme a mi servidor como root a través de:

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:  

Ingresé una contraseña en blanco y no me dejó entrar, lo cual fue un alivio. Entonces mi pregunta es: ¿qué significa sin contraseña y por qué es esto un valor predeterminado en Ubuntu 14.04?

John
fuente

Respuestas:

142

Desde la página del manual :

PermitRootLogin

Especifica si root puede iniciar sesión con ssh (1). El argumento debe ser "sí", "sin contraseña", "solo comandos forzados" o "no". El valor predeterminado es "sí".

Si esta opción se establece en "sin contraseña", la autenticación de contraseña se deshabilita para root.

Si esta opción se establece en "solo comandos forzados", se permitirá el inicio de sesión raíz con autenticación de clave pública, pero solo si commandse ha especificado la opción (que puede ser útil para realizar copias de seguridad remotas incluso si el inicio de sesión raíz normalmente no está permitido) . Todos los demás métodos de autenticación están deshabilitados para root.

Si esta opción se establece en "no", la raíz no puede iniciar sesión.

Por lo tanto, without-passwordpermite el inicio de sesión raíz solo con la autenticación de clave pública. Esto a menudo se usa con scripts de shell y tareas automatizadas.

Florian Diesch
fuente
2
No permitir el 'inicio de sesión raíz' con contraseña se considera una seguridad más fuerte que permitirla. Dicho esto, no debe iniciar sesión en la raíz , a menos que ningún otro método (sudo, etc.) funcione.
david6
55
Sin embargo, como puede ver, mientras la página del manual indica que el valor predeterminado es "sí", Ubuntu ha establecido el valor predeterminado "sin contraseña".
ferrouswheel
36
Entonces without-password, ¿ significa todos los métodos permitidos excepto la contraseña? Realmente suena como "permitido iniciar sesión sin la necesidad de una contraseña".
Gauthier
1
"Todo acceso a la raíz debe facilitarse a través de un inicio de sesión local con una identificación de usuario única e identificable y luego mediante el comando su una vez autenticado localmente. El inicio de sesión raíz directo es extremadamente inseguro y ofrece poco en el camino de la auditoría de seguimiento de la responsabilidad". - Guía de IBM AIX CIS
Dominik Antal
22
PermitRootLogin now accepts an argument of 'prohibit-password' as a less-ambiguous synonym of 'without-password'.
Endolith
16

En realidad, esta configuración no hace prácticamente nada si está utilizando la autenticación PAM. En la parte inferior del sshd_configarchivo de configuración encontrarás:

# 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'.

La configuración predeterminada en Ubuntu es usar la autenticación PAM:

UsePAM yes
Atari911
fuente
1
En mi breve experiencia , incluso configurar esto para noque no PermitRootLogin without-passwordfuncione realmente, de alguna manera. :(
cregox
1
@cregox si está utilizando un sistema de escritorio típico, debe hacerlo ssh-copy-id -i ~/.ssh/id_rsa.pub user@ipy crea ~/.ssh/authorized_keystener en cuenta que si no puede iniciar sesión como root, no crearía este archivo en /root/.ssh/ pero funciona si copia el archivo allí
Rutrus
3

Tenga en cuenta que hay razones legítimas para iniciar sesión a través de la raíz (pero utilizando claves criptográficas y nunca una contraseña). Un ejemplo típico es la sincronización remota de dos servidores (para que uno de ellos se use como conmutación por error). Debido a que la estructura debe ser idéntica, a menudo se requiere una contraseña de root.

Aquí hay un ejemplo usando unison para la sincronización: https://serverfault.com/questions/341985/remotely-use-root-over-ssh-for-unison

Gwyneth Llewelyn
fuente
2
¿No iniciará sesión con un usuario normal (lo más probable es que use claves criptográficas) y que pertenezca al sudogrupo le permita hacer esto también?
NS du Toit
2

En las versiones más nuevas de sshd "sin contraseña" se ha cambiado a "prohibir contraseña".

Ambas versiones funcionan, probablemente sea mejor usar "prohibir contraseña" si puedes: se explica mejor.

teknopaul
fuente