Permitir a la raíz iniciar sesión a través de ssh solo con autenticación basada en claves


49

Tengo algunas dudas sobre ciertas configuraciones de servidor ssh en /etc/ssh/sshd_config. Quiero el siguiente comportamiento:

  1. La autenticación de clave pública es la única forma de autenticarse como root (sin autenticación de contraseña u otra)
  2. Los usuarios normales pueden usar ambos (contraseña y autenticación de clave pública)

Si establezco PasswordAuthentication nomi primer punto está satisfecho pero no el segundo. ¿Hay una manera de configurar PasswordAuthentication nosolo para root?

Respuestas:


78

Puedes hacer esto usando la PermitRootLogindirectiva. Desde la página del sshd_configmanual:

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.

Lo siguiente logrará lo que quieres:

PasswordAuthentication yes
PermitRootLogin without-password

1
Probé esto en Debian y verifiqué con service ssh restartel servidor y luego con el cliente con el que intenté conectarme sin mi clave ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no root@hosty, de hecho, no pude iniciar sesión con contraseña, pero sí con la clave para el usuario root.
bastian

Sí, pero si solo hace esto en su lugar, puede iniciar sesión con la contraseña: ssh -o PreferredAuthentications=password root@hostno es particularmente seguro
geoidesic

2
En 2019 es "PermitRootLogin prohibit-password", el antiguo sin contraseña es un alias en desuso.
vbraun

10

Puede usar Matchbloques para configurar algunas opciones por usuario o grupo de autenticación o por dirección IP o nombre de host del origen de la conexión.

PasswordAuthentication yes
PermitRootLogin yes

Match User root
PasswordAuthentication no

3
Logré bloquearme de mi servidor ssh haciendo esto.
Richard Metzler

Este parece ser el mejor método si nunca desea que aparezca la solicitud de contraseña para root.
Leo

Esto también me ha bloqueado. Creo que podría estar en el orden incorrecto ...
Gary

3

Tengo un enfoque aún más restrictivo para otorgar privilegios de root en mi servidor, lo que podría ser interesante para los paranoicos como yo. Tenga cuidado con lo que hace y en qué orden, de lo contrario podría terminar con un sistema en el que no puede obtener acceso de root.

  • Cree un grupo específico sugroup, cuyos miembros podrán convertirse en root y solo permitirán la autenticación de clave para este grupo colocando las siguientes líneas al final de sshd_confid:

Match Group sugroup

PasswordAuthentication no

  • Coloque el comando auth required pam_wheel.so group=sugroupen /etc/pam.d/su. Puede que ya esté allí y solo tienes que descomentarlo. Esto niega el acceso de root a todos los usuarios que no son miembros de sugroup
  • Elija una contraseña de root fuerte :)
  • Verifique si su nuevo método de autenticación funciona, y solo si:
  • Denegar conexión de la raíz directa a través de SSH usando PermitRootLogin noen /etc/ssh/sshd_config.

Con esta configuración, es necesario usar una autenticación de clave y una contraseña para convertirse en root. Configuré mi servidor de esta manera, ya que prefiero no tener acceso directo a la raíz a través de ssh, independientemente del método de autenticación.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.