Contraseña SSH / Login diferente de la contraseña SUDO


9

Me gustaría usar una contraseña diferente para elevar a mi usuario al estado de sudo que la contraseña que uso para iniciar sesión (ya sea a través de GUI, shell o SSH) en mi cuenta. es posible?

EDITAR: Dado que establecer la contraseña de root permitiría iniciar sesión como root, esta no es una buena manera de hacerlo. Prefiero una contraseña de sudo específica del usuario, en lugar de una contraseña de root de todo el sistema.


1
¿Puedes dar más detalles sobre esto? ¿Por qué quieres hacer esto?
Doug Harris

1
Creo que la pregunta se explica bastante bien, pero el objetivo es hacer que el inicio de sesión sea seguro mediante contraseñas largas y difíciles y luego usar una contraseña diferente para el acceso a sudo, de modo que comprometer la cuenta de un usuario no proporcione automáticamente acceso a sudo.
Richard

He oído que es posible hacer sudo a través de las teclas rsa / dsa, que pueden tener cualquier frase de contraseña que desee.
Rob

Respuestas:


2

de hombres sudoers:

rootpw          If set, sudo will prompt for the root password instead of the
                password of the invoking user.  This flag is off by default.

runaspw         If set, sudo will prompt for the password of the user defined
                by the runas_default option (defaults to root) instead of the
                password of the invoking user.  This flag is off by default.

O simplemente puede prohibir los inicios de sesión basados ​​en contraseña a través de ssh por completo. Requerir una clave cifrada de contraseña para el inicio de sesión remoto. Entonces eres libre de usar la contraseña para sudo. La opción relevante es

del hombre sshd_config

 PasswordAuthentication
         Specifies whether password authentication is allowed.  The default
         is “yes”.

Gracias por tu ayuda, Chas. Owens Me temo que un efecto secundario de su solución es que la cuenta raíz tendría una contraseña y, por lo tanto, sería posible iniciar sesión como root, que no es una puerta que deseo dejar abierta. Prefiero una contraseña de sudo específica del usuario, en lugar de una contraseña de root de todo el sistema.
Richard

También puede deshabilitar el inicio de sesión raíz desde sshd_config
Rob

1

¿Estás buscando esto en sudoers man?

   targetpw        If set, sudo will prompt for the password of the user
                   specified by the -u option (defaults to root) instead of the
                   password of the invoking user. 

Gracias por tu ayuda, johnshen64. Me temo que un efecto secundario de su solución es que la cuenta raíz tendría una contraseña y, por lo tanto, sería posible iniciar sesión como root, que no es una puerta que deseo dejar abierta. Prefiero una contraseña de sudo específica del usuario, en lugar de una contraseña de root de todo el sistema.
Richard

ese usuario no tiene que ser usuario root, solo se predetermina a root si no lo especifica. puedes experimentarlo para ver si sería para ti. Unix es bastante abierto y si todavía no funcionan para usted, incluso puede escribir un script de envoltura o incluso modificar sudo (si sabe c) para que haga exactamente lo que quiere.
johnshen64

@ johnshen64 Creo que se opone al hecho de que se usaría la misma contraseña para todos los usuarios.
Chas. Owens

Ya veo, pero se puede crear un usuario administrador para cada usuario, digamos $ {USER} foradmin, de modo que un usuario siempre especifique -u $ {USER} foradmin, aunque para hacer cumplir ese sudo aún debe ser reemplazado por un script personalizado.
johnshen64

1

¿Qué tal deshabilitar el inicio de sesión con contraseña a través de SSH y permitir el inicio de sesión con clave pública donde puede establecer su contraseña difícil de adivinar? Entonces la contraseña local puede ser más corta y utilizada por sudo.

Aparte de eso, tendrá que configurar /etc/pam.d/sudopara usar un módulo diferente (o adicional), a primera vista pam_dialpasspodría permitir lo que necesita.

También puede configurar la configuración LDAP para una y las contraseñas locales para la otra. Todo dependerá de cuántos cambios pueda y esté dispuesto a hacer, qué módulos estén disponibles, etc.


Gracias por tu ayuda, Bram. Su primera sugerencia funcionaría, salvo que la autenticación de clave pública puede ser prohibitiva para trabajar, a menos que haya venido preparado para transferir archivos clave.
Richard

1

SOLUCIÓN 1: newgrp

Una forma sencilla de abordar su caso de uso sería usarlo :NOPASSWDen combinación con un grupo y contraseña de grupo:

Agregue una línea a los sudoers:

%rudo   ALL=(ALL:ALL) NOPASSWD:ALL

Cree un grupo protegido con contraseña:

groupadd rudo
gpasswd  rudo # Enter passwd

Ahora, cuando inicie sesión como un usuario sin privilegios (suponiendo que aún no esté en el rudogrupo), inicie sesión en el rudogrupo, momento en el que se le solicitará la contraseña.

login user
newgrp rudo

Ahora puede ejecutar sin sudocontraseña, siempre y cuando permanezca conectado al grupo.


SOLUCIÓN 2: runaspw

Una forma mejor y posiblemente más segura de hacer esto runaspw. runaspwestá asociado con la runas_defaultopción, por lo que también debe agregar esa opción.

Suponiendo que ya tiene la %sudoentrada de grupo predeterminada :

%sudo   ALL=(ALL:ALL) ALL

agregue estas líneas al archivo sudoers:

Defaults:%sudo  runas_default=sudo
Defaults:%sudo  runaspw

Ahora agregue un nuevo sudousuario con una contraseña:

useradd sudo -d /nonexistent -s /usr/sbin/nologin -MNr
passwd sudo

Ahora se solicitará a los usuarios del grupo sudo la contraseña del usuario de sudo, pero solo los usuarios del grupo sudo podrán sudo (a diferencia de la solución de grupo anterior, donde cualquiera en el grupo o con la contraseña del grupo podría sudo).

Un problema menor es que el usuario de runas predeterminado ahora es sudoasí que para sudo como root, debe especificar explícitamente root:

sudo -u root <cmd>

Pero es bastante fácil definir un alias ( alias sudo='sudo -u root') o un comando sudo indirecto.

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.