¿Cuáles son las implicaciones de SSH sin contraseña?

¿Cuáles son las implicaciones de SSH sin contraseña?

Si los usuarios de UNIX acceden a los servidores a través de SSH y solo queremos permitir inicios de sesión con clave pública, ¿hay otros elementos que deban agregarse a esta lista y que deban preocuparme?

  1. Permitir pubkey loginel sshd_configarchivo en el servidor.
  2. Consideraciones para una contraseña predeterminada, como"!"o"*"

Respuesta1

Hubiera sido bueno decir qué servidor SSH solicita y qué (conjunto de) sistemas Unix.

!y *no son contraseñas cuando las ve en /etc/passwdo /etc/shadow(úselas getentpara leer esas entradas).

Son marcadores que denotan si la cuenta tiene contraseña o no y si está bloqueada o no.

Esta es una distinción importante, dependiendo de la configuración y versión de PAM y la distribución,si estás en Linux. Si está bloqueado, es menos probable que se le permita iniciar sesión, pero por otro lado es posible que funcione de inmediato en sistemas más antiguos (al menos esa es mi experiencia).

Puede usar (como superusuario) passwd -l <name>para bloquear una cuenta ( !) o passwd -d <name>eliminar su contraseña ( *) y también puede combinar ambas, lo que simplemente garantizaría que se elimine cualquier contraseña existente: passwd -dl <name>.

No lo dices, pero asumiendo OpenSSH, las directivas relevantes en /etc/ssh/sshd_config(la ruta puede variar) son:

HostKey ...

El servidor debe tener una clave de host o RSA2 o DSA (y las implementaciones más modernas también agregan dos implementaciones de curva elíptica). RSA1 ha sido abandonado durante mucho tiempo por todas las implementaciones de servidores SSH comunes.

Entonces:

RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication no

También recomendaría siempre configurar /etc/sudoersy no permitir completamente rootel inicio de sesión a través de SSH ( PermitRootLogin no). Sin embargo, esta configuración más segura puede tener una pequeña desventaja: el disco está lleno y su sudomiembro sin privilegios no puede escribir en el disco, pero rootlo haría (debido al espacio reservado). Entonces YMMV.

Dos consejos más

Asignar un grupo para limitar el acceso SSH

Cree un grupo ssh-users(o el nombre que desee) y establezca la directiva respectiva en sshd_config. Asegúrese de que rootsea o no miembro de ese grupo de acuerdo con la política que eligió según la información anterior.

AllowGroups ssh-users

Asignar un grupo para limitar a los usuariossoloAcceso SFTP

A sshd_configcontinuación, nos aseguraremos de que los usuarios no puedan escapar /homey de que determinadas funciones estén desactivadas para ellos.

Match group sftponly
    ChrootDirectory /home
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp
    PasswordAuthentication no

Conclusión

Entonces sí, PAM tendría que agregarse como consideración si estuviera en Linux.

También si se debe permitir el reenvío de agentes o dejarlo en manos de los usuarios.

Y por último, pero no menos importante, si se les permitirá reenviar puertos o conexiones X11. Especialmente los puertos pueden ser indeseables, ya que permiten que un usuario utilice su servidor como proxy.

La Matchdirectiva también le permite limitar a los usuarios con respecto al lugar desde donde se conectan (un firewall también puede hacer eso o los contenedores TCP).

¿Quiere que sus usuarios puedan administrar las claves o quiere abstraerlas y hacer que el acceso directo authorized_keysno esté disponible para ellos?

Ciertamente hay más aspectos, pero en su mayoría tienen un nivel de detalle más detallado y, como tales, variaciones de los puntos antes mencionados.

Respuesta2

Lo que el usuario quiera que sea, considerando las políticas sobre la complejidad de las contraseñas. Si el único acceso es vía SSH y PasswordAuthenticationestá noensshd_config, entonces no importa cuál sea la contraseña. Tenga en cuenta también que las entradas enshadowson contraseñas cifradas, por lo que los valores de !y *no soncontraseñas- pero cadenas que no son valores cifrados válidos, lo que impide el inicio de sesión basado en contraseña.

Respuesta3

Suponiendo que estás ejecutando algo similar a RHEL/CentOS con OpenSSH, estas son las cosas que normalmente hago cuando no tengo contraseña:

  • Configure sshd_config para aceptar solo la autenticación de clave pública ( PubkeyAuthentication yes, PasswordAuthentication no, ChallengeResponseAuthentication no, UsePAM no)
  • Configurar todos los usuarios existentes para que tengan una contraseña no válida ( chpasswd -e 'pubkey!!' <username>)
  • Eliminar la caducidad de la contraseña de todos los usuarios existentes ( chage -M -1 <username>)
  • Si usa sudo, asegúrese de que todas las especificaciones del usuario estén marcadas como NOPASSWD (p. ej. %wheel ALL=(ALL) NOPASSWD: ALL)
  • Asegúrese de que su proceso de creación de usuarios mantenga estos requisitos (p. ej useradd -p 'pubkey!!' -K MAX_PASS_DAYS=-1 <username>.)

Antes de bloquear el acceso con contraseña, asegúrese doblemente de poder autenticarse correctamente mediante la clave pública. Asegúrese de que su partición /home no esté en un montaje de red (o cualquier otra cosa que no siempre esté disponible). Hay pocas cosas peores que perder el acceso a su servidor porque no puede acceder a su clave pública. Si el sistema no tiene cabeza, asegúrese de tener alguna forma de obtener rápidamente acceso directo a la consola en caso de emergencia (KVM, consola virtual, carrito de emergencia, etc.).

Dicho todo esto, consideraría poner una contraseña en la cuenta de cualquier persona con acceso completo a sudo y configurar sudoers para que les soliciten una contraseña. Si todo lo demás está configurado como se indica arriba, aún no podrán iniciar sesión en el servidor con esta contraseña, pero le brindará un poco de protección adicional contra alguien que se sienta en su símbolo del sistema y hace "cosas malas (tm)". .

Respuesta4

Si se trata de una máquina UNIX (HP UX) y no Linux, deberá agregarla rcommanda su pam.conf en la cuenta sshd.

sshd     account sufficient /usr/lib/security/libpam_ldap.1 rcommand

De lo contrario, recibirá una solicitud de contraseña que no se activará cuando intente iniciar sesión mediante ssh en la máquina.

información relacionada