sudo sin contraseña cuando inició sesión con claves privadas SSH

23

¿Es posible hacer que el comando sudo admita claves privadas SSH, de modo que cuando el usuario inicie sesión con una clave privada pueda sudo sin escribir una contraseña?

Esto permitiría almacenar las contraseñas de administrador de sistemas UNIX en un almacenamiento encriptado en frío y nunca necesitaría acceder a ellas, suponiendo que los usuarios usen claves SSH privadas seguras siempre para iniciar sesión en el servidor.

Mikko Ohtamaa
fuente
askubuntu.com/a/135838 Si pones a esos usuarios en un grupo, ¡seguro que puedes!
Rob
intente sudo visudoy cambie su contraseña para NOPASSWD: ALLver si eso funciona
pneumatics
3
@AlanTuring Eso también funcionaría para los usuarios de ese grupo que se identificaron mediante una contraseña.
Xyon
@AlanTuring Eso disminuiría efectivamente la seguridad del servidor - Solo quiero ciertos usuarios, no todos, sudo
Mikko Ohtamaa
Es posible dar privilegios a usuarios específicos. Mira mi respuesta.
Isaac Rabinovitch

Respuestas:

10

La opción para hacerlo ha existido desde (al menos) abril de 2014 .

Deberá instalar un paquete llamado pam_ssh_agent_auth(disponible para Centos 7, YMMV), y luego configurarlo /etc/pam.d/sudopara aceptarlo como método de autorización. Finalmente, es posible que deba agregar SSH_AUTH_SOCKa la lista de variables de entorno que persisten durante sudo.

La wiki de Gentoo tiene detalles para estos pasos.

Liam Dawson
fuente
1
Encantador, gracias Liam. ¡Lástima que no haya estado en sysadmin por muchos años!
Mikko Ohtamaa
1

Esto no es posible sin algunos cambios serios en el código de sudo y sshd. Sudo no sabe acerca de los métodos de inicio de sesión, y ssh no publica en otros programas nada que indique si la clave pública, la contraseña o algún otro mecanismo se utilizó para iniciar sesión.

Como alguien más dijo, puede usar la opción NOPASSWD en sudoers; esto se aplicaría siempre a usuarios específicos, no solo cuando usan ssh con claves privadas.

Si realmente lo desea, puede haber trucos que puede hacer con un programa suid que verifica el registro sshd y bloquea / edita el archivo sudoers para permitir que el usuario realice un sudo sin contraseña y una tarea periódica para revocar este permiso.

Dicho todo esto, creo que es una mala idea. Requerir una contraseña para comandos privilegiados tiene un par de buenos beneficios que la clave privada SSH no tiene. En particular, le permite tener tiempos de espera para la autenticación (se debe volver a ingresar la contraseña, no es cierto para las sesiones ssh), le permite tener mínimos de contraseña y rotación (a diferencia de las claves ssh, que tienen una frase de contraseña fuera del control del servidor).

Dagon
fuente
11
"No se puede hacer" no es una respuesta, especialmente cuando se puede hacer.
Isaac Rabinovitch
Cambiando la respuesta a la correcta que contiene nuevo informatino.
Mikko Ohtamaa
1

Un par de respuestas Point to sudo sin una contraseña de usuario separada. Debe tener en cuenta que esto disminuirá su seguridad.

Para un usuario que ya se autenticó fuertemente con un certificado, esto podría no ser un problema porque está en posesión del certificado que teóricamente podría hacerlo root.

Sin embargo, si piensa en vulnerabilidades que proporcionarán a un atacante con un shell de usuario limitado y este usuario tiene NOPASSWD establecido en el archivo sudoers, el atacante es root sin tener ninguna credencial para el sistema.

Si sudo requiere una contraseña del usuario, el atacante necesita tiempo y suerte para escalar sus privilegios a root.

Sebastian Brabetz
fuente