He configurado .ssh / Authorizedkeys y puedo iniciar sesión con el nuevo "usuario" utilizando la clave pub / private ... También he agregado "user" a la lista de sudoers ... el problema que tengo ahora es cuándo Intento ejecutar un comando sudo, algo simple como:
$ sudo cd /root
me pedirá mi contraseña, que ingresé, pero no funciona (estoy usando la contraseña de clave privada que configuré)
Además, he deshabilitado la contraseña del usuario usando
$ passwd -l user
¿Qué me estoy perdiendo?
En algún lugar mis comentarios iniciales están siendo mal entendidos ...
Estoy tratando de fortalecer mi sistema ... el objetivo final es usar claves pub / privadas para hacer inicios de sesión en lugar de la autenticación de contraseña simple. He descubierto cómo configurar todo eso a través del archivo autorizado_claves.
Además, en última instancia, evitaré los inicios de sesión del servidor a través de la cuenta raíz. Pero antes de hacerlo, necesito que sudo funcione para un segundo usuario (el usuario con el que iniciaré sesión en el sistema todo el tiempo).
Para este segundo usuario, quiero evitar los inicios de sesión de contraseña regulares y forzar solo los inicios de sesión de pub / clave privada, si no bloqueo al usuario a través de "passwd -l user ... entonces si no uso una clave, aún puedo Entrar en el servidor con una contraseña normal.
Pero lo más importante es que necesito hacer que sudo funcione con una configuración de clave privada / pub con un usuario que tiene su contraseña deshabilitada.
Editar: OK, creo que lo tengo (la solución):
1) Ajusté / etc / ssh / sshd_config y configuré PasswordAuthentication no
Esto evitará los inicios de sesión de contraseña ssh (asegúrese de tener una configuración de clave pública / privada que funcione antes de hacer esto
2) Ajusté la lista de sudoers visudo
y agregué
root ALL=(ALL) ALL
dimas ALL=(ALL) NOPASSWD: ALL
3) root es la única cuenta de usuario que tendrá una contraseña, estoy probando con dos cuentas de usuario "dimas" y "sherry" que no tienen una contraseña establecida (las contraseñas están en blanco passwd -d user
)
Lo anterior esencialmente evita que todos inicien sesión en el sistema con contraseñas (se debe configurar una clave pública / privada).
Además, los usuarios en la lista de sudoers tienen habilidades administrativas. También pueden su
a diferentes cuentas. Así que, básicamente, "dimas" puede sudo su sherry
, sin embargo, "dimas NO puede hacerlo su sherry
. Del mismo modo, cualquier usuario que NO esté en la lista de sudoers NO puede hacer su user
o sudo su user
.
NOTA: Lo anterior funciona, pero se considera poca seguridad. Cualquier script que pueda acceder al código como los usuarios "dimas" o "sherry" podrá ejecutar sudo para obtener acceso root. Un error en ssh que permite a los usuarios remotos iniciar sesión a pesar de la configuración, una ejecución remota de código en algo como Firefox, o cualquier otra falla que permita que se ejecute código no deseado, ya que el usuario ahora podrá ejecutarlo como root. Sudo siempre debe requerir una contraseña o también puede iniciar sesión como root en lugar de algún otro usuario.
passwd -l
elimina la contraseña en el sentido de que la cuenta está BLOQUEADA, es decir, ninguna contraseña funcionará. Desea desactivar la autenticación de contraseña en sudo.Lo que desea hacer es posible, pero requerirá algo de experiencia, ya que tendrá que compilar un módulo PAM llamado pam-ssh-agent-auth .
El proceso es razonablemente simple:
Editar la configuración de sudo:
Agregue lo siguiente:
Continúe cambiando la configuración de sudo PAM:
Añadir (justo encima de las líneas @include):
fuente
/etc/pam.d/sudo
instrucciones) no están actualizadas para las versiones actuales de Ubuntu. He proporcionado instrucciones actualizadas en mi respuesta.La respuesta de Andre de Miranda proporciona una buena solución usando pam_ssh_agent_auth , pero las partes están desactualizadas. Particularmente las
/etc/pam.d/sudo
instrucciones cuando se usan muchas versiones actuales de Linux.Si está ejecutando Ubuntu 12.04 con precisión, en realidad he simplificado el proceso al proporcionar una compilación pam_ssh_agent_auth a partir de una ppa: ppa: cpick / pam-ssh-agent-auth .
Puede instalar el paquete ejecutando:
Después de la instalación, si desea utilizar este módulo PAM con sudo, tendrá que configurar los ajustes de sudo y la configuración PAM, en Ubuntu 12.04 preciso puede hacerlo creando los siguientes dos archivos:
/etc/sudoers.d/pam-ssh-agent-auth:
/etc/pam.d/sudo:
Si usa chef, el proceso anterior se puede automatizar con mi libro de cocina, que se encuentra en cualquiera de las dos ubicaciones siguientes:
https://github.com/cpick/pam-ssh-agent-auth
http: //community.opscode .com / libros de cocina / pam-ssh-agent-auth .
El
files
directorio del libro de cocina contiene los archivos/etc/pam.d/sudo
y/etc/sudoers.d/pam-ssh-agent-auth
descritos anteriormente que funcionan con Ubuntu 12.04 precisa y debería ser un punto de partida útil cuando se usan otras versiones / distribuciones.fuente
La única forma en que sé evitar ingresar una contraseña es deshabilitándola en su
sudoers
archivo.Algo como esto dará
root
y todos los miembros de accesowheel
completo sin contraseña:Esto es absolutamente no se recomienda , sin embargo. Si tiene un comando específico para que se ejecute este servidor, deles acceso solo a ese comando. O mejor aún, encuentre una forma diferente de lograr lo que quiere hacer que no requiera perforar un agujero de seguridad.
fuente