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.