¿Puedes darle a una cuenta de usuario múltiples contraseñas?

21

Quiero asignar 2 contraseñas a una sola cuenta. Lo que quiero saber es 1) ¿es esto posible y 2) cuáles son las implicaciones de seguridad de esto?

La razón por la que quiero hacer esto es porque actualmente estoy ocupado con algunas pruebas locales, y pensé que sería conveniente en algunas situaciones específicas. Después de algunas investigaciones, encontré algo llamado PAM , pero estoy luchando por encontrar información sobre cómo funciona la instalación / configuración.

Estoy ejecutando Ubuntu 12.04.

agregado 1166877
fuente
1
Probablemente solo configuraría sudopara permitir al usuario1 ejecutar comandos como usuario2. ( sudoNo es sólo para ejecutar comandos como root, sino que puede ejecutar comandos como cualquier usuario.)
CJM

Respuestas:

16

Sí, aunque es poco común, definitivamente es factible.

En lugar de intentar implementarlo usted mismo, ya que el /etc/password /etc/shadowmétodo de autenticación basado en el predeterminado no tiene una disposición para dicha configuración, la forma más sencilla es delegar la autenticación a un back-end que ya admite múltiples contraseñas para un usuario.

Uno bien conocido es LDAP cuyo userPasswordatributo tiene varios valores de acuerdo con RFC4519 :

Un ejemplo de la necesidad de múltiples valores en el atributo 'userPassword' es un entorno donde cada mes se espera que el usuario use una contraseña diferente generada por algún sistema automatizado. Durante los períodos de transición, como el último y el primer día de los períodos, puede ser necesario permitir que dos contraseñas para los dos períodos consecutivos sean válidas en el sistema.

A pesar de este RFC, es probable que deba cambiar la configuración de la política de contraseñas en la mayoría de las implementaciones de servidores de directorios para que esta configuración se acepte realmente.

En el lado de Linux, nada prohíbe que lo hagan (en este caso una cuenta llamada testuserse le dio tanto pass1y pass2como userPasswordvalores de atributos):

$ uname -a
Linux lx-vb 3.8.0-19-generic #29-Ubuntu SMP Wed Apr 17 18:16:28 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
$ grep VERSION /etc/os-release
VERSION="13.04, Raring Ringtail"
$ grep "^passwd" /etc/nsswitch.conf 
passwd: files ldap
$ ldapsearch -LLL -h localhost -p 1389 -D "cn=directory manager" -w xxxxxxxx "uid=testuser" userPassword
dn: uid=testuser,ou=People,dc=example,dc=com
userPassword:: e1NTSEF9b2JWYXFDcjhNQmNJVXZXVHMzbE40SFlReStldC9XNFZ0NU4yRmc9PQ==
userPassword:: e1NTSEF9eDlnRGZ5b0NhKzNROTIzOTFha1NiR2VTMFJabjNKSWYyNkN3cUE9PQ==
$ grep testuser /etc/passwd
$ getent passwd testuser
testuser:*:12345:12345:ldap test user:/home/testuser:/bin/sh
$ sshpass -p pass1 ssh testuser@localhost id
uid=12345(testuser) gid=12345 groups=12345
$ sshpass -p pass2 ssh testuser@localhost id
uid=12345(testuser) gid=12345 groups=12345
$ sshpass -p pass3 ssh testuser@localhost id
Permission denied, please try again.

Aquí hay algunas implicaciones técnicas y de seguridad de ese tipo de configuración:

  • la cuenta de usuario obviamente será más vulnerable a los ataques, aunque lo que realmente importa aquí es la calidad y la protección de las contraseñas más que sus números.
  • la mayoría de las empresas de servicios públicos asumen que el usuario tiene una contraseña única, por lo que no le permitirá actualizar individualmente una de las contraseñas. El cambio de contraseña probablemente dará como resultado un único atributo de contraseña para el usuario.
  • Si el objetivo es permitir que varias personas compartan la misma cuenta utilizando cada una su propia contraseña, no hay ningún mecanismo para identificar quién inicia sesión realmente en función de la contraseña utilizada.
jlliagre
fuente
1
¿Puede explicar por qué esto no tiene implicaciones de seguridad? Mi primera impresión fue que aumentaría las posibilidades de que una cuenta se vea comprometida, especialmente si una contraseña es significativamente más débil que la otra.
Joseph R.
1
@JosephR. Estás en lo correcto. Acabo de actualizar mi respuesta después de implementar lo que sugerí y experimentar con él.
jlliagre
Excelente respuesta, funciona como un encanto ahora. Gracias :)
agregate1166877
7

Intenté crear 2 entradas para un usuario en el /etc/shadowarchivo y no funcionó. La primera entrada fue la entrada de contraseña que se utilizó.

Ejemplo

Creó un usuario de prueba.

$ useradd -d /home/newuser newuser

Establezca la contraseña en "super123":

$ passwd newuser

Edite manualmente el /etc/shadowarchivo e hizo una segunda entrada:

newuser:$6$....password #1...:15963:0:99999:7:::
newuser:$6$....password #2...:15963:0:99999:7:::

Luego intente iniciar sesión con la cuenta utilizando las 2 contraseñas.

su - newuser

La primera entrada /etc/shadowes lo que se usa, la entrada en la segunda posición nunca funciona, si voltea esto así:

newuser:$6$....password #2...:15963:0:99999:7:::
newuser:$6$....password #1...:15963:0:99999:7:::

Entonces la segunda contraseña funciona y la primera no.

Usa sudo

Este enfoque es un truco total, solo lo usaría sudo, es en parte por qué sudoexiste.

Puede agregar esta entrada a su archivo sudoers ( /etc/sudoers), lo que permitiría al usuario permiso de Joe hacer cualquier cosa como usted:

joe ALL=(yourusername) ALL
slm
fuente
De hecho, olvidé que eso sudopuede hacer eso ... +1
agregado1166877
4

Si puedes hacer esto, probablemente no deberías.

La configuración de PAM es algo compleja y hay una verdad sobre los mecanismos de autenticación: hay un conjunto finito de configuraciones correctas pero un conjunto infinito de configuraciones inseguras. Esto hace casi seguro que si intentas cambiar las cosas y no sabes exactamente lo que estás haciendo, arruinarás las cosas.

Si la elección es entre seguridad y "conveniente en algunas situaciones específicas", opte por la primera.

msw
fuente
+1 para "seguridad sobre conveniencia" (con lo que estoy totalmente de acuerdo), pero soy el tipo de persona que quiere probar todo aunque solo sea por la experiencia, por lo que no es 100% la respuesta que estoy buscando.
agregado1166877
2

Puede configurar dos nombres de usuario diferentes, cada uno con su contraseña, para la misma cuenta. Ejecute vipwpara editar /etc/passwdmanualmente, duplique la línea existente para la cuenta que le interesa y cambie el nombre de usuario (y si le gusta el campo Gecos , el directorio de inicio y el shell). Ejecute vipw -sy duplique la línea para ese usuario /etc/shadow. Inicie sesión con el nuevo nombre de usuario y ejecútelo passwdpara cambiar la contraseña del nuevo nombre de usuario. Ahora tiene dos nombres de usuario diferentes, con contraseñas diferentes, para la misma cuenta (el ID de usuario es lo que determina la cuenta).

Probablemente no sea una buena idea. Dependiendo de lo que intente hacer, otros enfoques pueden ser más apropiados:

  • Cree otra cuenta y comparta archivos mediante la confirmación y el control de versiones.
  • Cree otra cuenta, cree un grupo al que pertenezcan ambas cuentas de usuario y otorgue acceso de escritura grupal a los archivos que desea compartir.
  • Cree otra cuenta y otorgue a la primera cuenta el derecho de ejecutar comandos como esa cuenta con sudo:

    user1 ALL = (user2) ALL
    
  • Cree una clave SSH para la cuenta que solo permita ejecutar un comando específico .
Gilles 'SO- deja de ser malvado'
fuente
¿le importaría copiar esto a aquíhttp: //askubuntu.com/questions/567139/2-password-1-account-login?
Rinzwind