Estoy configurando algunas ubuntucajas y usando opscode chefcomo herramienta de configuración. Sería bastante fácil instalar claves públicas para cada usuario en cada uno de estos servidores y deshabilitar la autenticación de contraseña.
Sin embargo, los usuarios también deberían tener sudoprivilegios, que por defecto requieren una contraseña.
Si quiero usar las claves públicas de los usuarios como un método de administración de acceso y permitir los sudoprivilegios de los usuarios , ¿eso significa que también debería configurar a los usuarios con NOPASSWD: ALLin visduo, o hay una manera de que un usuario pueda cambiar su propia contraseña si ellos solo tiene autenticación de clave pública?

man sudoersgenerará información acerca de que ciertos comandos puedan ejecutarse con sudo sin la contraseña de usuario necesaria. Incluso puede agregar un shellscript a / etc / sudoers que permitiría una configuración de "contraseña propia" por usuario sin la necesidad de una contraseña previa.NOPASSWD: ALLque forman parte los miembros del equipo. Si puede sugerir una mejor solución, publíquela como respuesta.Respuestas:
Sudo, en su configuración más común, requiere que el usuario escriba su contraseña. Por lo general, el usuario ya usó su contraseña para autenticarse en la cuenta, y escribir la contraseña nuevamente es una forma de confirmar que el usuario legítimo no ha abandonado su consola y ha sido secuestrado.
En su configuración, la contraseña del usuario se usaría solo para autenticación para sudo. En particular, si la clave SSH de un usuario se ve comprometida, el atacante no podrá elevarse a privilegios de root en el servidor. El atacante podría colocar un registrador de claves en la cuenta, pero este registrador de claves sería detectable por otros usuarios e incluso podría ser observado automáticamente.
Un usuario normalmente necesita saber su contraseña actual para cambiarla a una contraseña diferente. El
passwdprograma verifica esto (puede configurarse para que no lo sea, pero esto no es útil ni deseable en su escenario). Sin embargo, root puede cambiar la contraseña de cualquier usuario sin conocer la anterior; por lo tanto, un usuario con poderes de sudo puede cambiar su propia contraseña sin ingresarla en elpasswdindicador ejecutandosudo passwd $USER. Sisudoestá configurado para requerir la contraseña del usuario, entonces el usuario debe haber ingresado la contraseña desudotodos modos.Puede deshabilitar la autenticación de contraseña de forma selectiva. En su situación, deshabilitaría la autenticación de contraseña en ssh y posiblemente en otros servicios. La mayoría de los servicios en la mayoría de los equipos modernos (incluido Ubuntu) usan PAM para configurar los métodos de autenticación. En Ubuntu, los archivos de configuración de PAM viven
/etc/pam.d. Para deshabilitar la autenticación de contraseña, comente laauth … pam_unix.solínea/etc/pam.d/common-auth. Además, asegúrese de que tienePasswordAuthentication noen/etc/ssh/sshd_configla autenticación de contraseña incorporada desactivar de sshd.Es posible que desee permitir que algunos usuarios administrativos inicien sesión con una contraseña o permitir la autenticación de contraseña en la consola. Esto es posible con PAM (es bastante flexible), pero no podría decirte qué tan fuera de mi cabeza; Haga una pregunta por separado si necesita ayuda.
fuente
sudo passwdque cambiaría la contraseña para el usuario actual, no para el usuario de sudo?sudopuede cambiar su propia contraseña. El comando exacto realmente no importa, pero para entrar en más detalles, seríasudo passwd bobdóndebobestá el nombre del usuario, o algo equivalente. Sin argumento, desudo passwdhecho cambiaría la contraseña de root.Puede usar el módulo pam_ssh_agent_auth . Es bastante simple compilar, y luego solo agrega la entrada
antes de las otras
auth(oinclude) entradas en/etc/pam.d/sudoy
a
/etc/sudoers(víavisudo).Ahora cada usuario puede autenticarse a
sudotravés de un agente SSH (reenviado o local) o su contraseña. Puede ser conveniente pedir a sus usuarios que utilicen dessh-add -cmanera que cadasudollamada requiera al menos alguna confirmación.fuente
Sí, es increíblemente inseguro y también permite que un usuario acceda a las contraseñas de otros usuarios, pero dado que tienen sudo, no puede hacer mucho.
Básicamente, haces lo siguiente:
$ sudo -iAhora somos raíz. Tenemos acceso a todo.
# passwd $username$ username puede ser el nombre de usuario de cualquier persona.
Boom, contraseña cambiada. De nuevo, increíblemente inseguro porque puedes cambiar a cualquiera, pero funciona, pero funciona. No lo recomiendo, sino que ofrezco esta respuesta como un ejemplo de lo que no se debe hacer.
fuente
sudo -iprescindir de la contraseña de usuario actual.sudo bashpodría ser sin contraseña dada esa configuración en el/etc/sudoersarchivo. Creo @jrg es como se ha dicho más centrado en el tema de la inseguridad con sudo aquísudo -i, puede saltar directamente asudo passwd $username@Miro, no necesita saber la contraseña de usuario actual. Solo necesita saber la contraseña de root para usar sudoEl objetivo de la contraseña es garantizar que los piratas informáticos que obtienen la clave de un usuario o encuentran un terminal desatendido no puedan obtener acceso de root. Por esta razón, no recomendaría ninguna solución que implique sudo sin contraseña.
Le sugiero que lo mantiene simple: tal vez un correo electrónico a un usuario la contraseña por defecto con instrucciones estrictas para cambiarlo lo antes posible, o bien insertar un script en su
.profileo.logino algo tal que exige una nueva contraseña en su primer inicio de sesión. Podría deshabilitarse cuando se complete, y podría usarexpectpara ingresar la contraseña existente para que nunca tengan que saberla.fuente
> Esto debería permitirle tener usuarios que pueden iniciar sesión solo con claves públicas y no pueden usar contraseñas para iniciar sesión. Sin embargo, se verá obligado a cambiar la contraseña la primera vez que inicie sesión ... pero sin tener que decirle una contraseña somática por adelantado ... Simplemente se les pedirá a los usuarios que restablezcan la contraseña y posteriormente pueden usarla solo para sudo pero no podrá iniciar sesión (ssh) con esa contraseña. Tenga en cuenta que el truco aquí es no haberle dicho a los usuarios alguna contraseña falsa que luego se les requeriría ingresar en el momento del inicio de sesión una vez que se les solicite que cambien su contraseña ... En pocas palabras, no hay comunicación del administrador (root) para el usuario real se requiere.
fuente