Estoy configurando algunas ubuntu
cajas y usando opscode chef
como 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 sudo
privilegios, 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 sudo
privilegios de los usuarios , ¿eso significa que también debería configurar a los usuarios con NOPASSWD: ALL
in 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 sudoers
generará 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: ALL
que 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
passwd
programa 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 elpasswd
indicador ejecutandosudo passwd $USER
. Sisudo
está configurado para requerir la contraseña del usuario, entonces el usuario debe haber ingresado la contraseña desudo
todos 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.so
línea/etc/pam.d/common-auth
. Además, asegúrese de que tienePasswordAuthentication no
en/etc/ssh/sshd_config
la 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 passwd
que cambiaría la contraseña para el usuario actual, no para el usuario de sudo?sudo
puede cambiar su propia contraseña. El comando exacto realmente no importa, pero para entrar en más detalles, seríasudo passwd bob
dóndebob
está el nombre del usuario, o algo equivalente. Sin argumento, desudo passwd
hecho 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/sudo
y
a
/etc/sudoers
(víavisudo
).Ahora cada usuario puede autenticarse a
sudo
través de un agente SSH (reenviado o local) o su contraseña. Puede ser conveniente pedir a sus usuarios que utilicen dessh-add -c
manera que cadasudo
llamada 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 -i
Ahora 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 -i
prescindir de la contraseña de usuario actual.sudo bash
podría ser sin contraseña dada esa configuración en el/etc/sudoers
archivo. 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
.profile
o.login
o algo tal que exige una nueva contraseña en su primer inicio de sesión. Podría deshabilitarse cuando se complete, y podría usarexpect
para 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