
Tengo un VPS Fedora con un usuario root que no tiene contraseña. Me conecto con claves SSH.
Tenía otra cuenta menos privilegiada en ese servidor, utilizada para la administración web. Ahora también eliminé su contraseña.
Si no hay usuarios con contraseñas en un servidor, ¿qué pasaría exactamente si perdiera mi clave SSH, por ejemplo? ¿El servidor dejará de estar disponible para siempre ya que no hay forma de iniciar sesión en él?
Además, ¿cómo se sudo
comporta el programa cuando ni el usuario raíz ni el usuario que llama tienen contraseñas? Lo probé y ni siquiera me pidió contraseña: simplemente funcionó, ya que tengo esa user ALL=(ALL) ALL
línea en mi archivo sudoers (¿debería cambiar eso?)
Respuesta1
Si elimina el segundo campo del /etc/passwd
archivo, los usuarios podrán iniciar sesión sin ningún desafío. Simplemente intentar iniciar sesión les permitirá ingresar. Por lo tanto, algo como esto probablemente no sea algo que desee hacer.
root:$1$iM/2lekk$rXUAcF5fY8ddLL.B1bkH63:12242:0:99999:7:::
/etc/base de contraseña
- Nombre de usuario: se utiliza cuando el usuario inicia sesión. Debe tener entre 1 y 32 caracteres de longitud.
- Contraseña: un carácter x indica que la contraseña cifrada se almacena en el archivo /etc/shadow.
- ID de usuario (UID): a cada usuario se le debe asignar un ID de usuario (UID). El UID 0 (cero) está reservado para root y los UID 1-99 están reservados para otras cuentas predefinidas. Además, el sistema reserva los UID 100-999 para cuentas/grupos administrativos y del sistema.
- ID de grupo (GID): el ID del grupo principal (almacenado en el archivo /etc/group)
- Información de ID de usuario: el campo de comentarios. Le permite agregar información adicional sobre los usuarios, como el nombre completo del usuario, número de teléfono, etc. Este campo se usa mediante comando con el dedo.
- Directorio de inicio: la ruta absoluta al directorio en el que estará el usuario cuando inicie sesión. Si este directorio no existe, el directorio de usuarios se convierte en /
- Comando/shell: la ruta absoluta de un comando o shell (/bin/bash). Normalmente, se trata de un caparazón. Tenga en cuenta que no es necesario que sea un caparazón.
tomado deComprender el formato de archivo /etc/passwd
deshabilitar los inicios de sesión con contraseña
Hay una sutil diferencia entre que este campo esté en blanco y contenga una x ( :x:
) y una :!:
en el /etc/shadow
archivo. Esto significa que la cuenta está configurada intencionalmente para que no se le permita iniciar sesión, que probablemente sea más lo que busca.
/etc/sombra
root:!:15669:0:99999:7:::
Se puede hacer lo mismo con cualquier cuenta, que es probablemente la forma en que le sugeriría que haga esto si realmente desea permitir ssh
inicios de sesión únicamente utilizando una clave pública/privada.
Otras preguntas
Si no hay usuarios con contraseñas en un servidor, ¿qué pasaría exactamente si perdiera mi clave SSH, por ejemplo? ¿El servidor dejará de estar disponible para siempre ya que no hay forma de iniciar sesión en él?
No, siempre que tenga acceso físico al servidor, siempre podrá acceder al sistema. Será necesario reiniciar y puede resultar un poco difícil usar un VPS, pero debería ser posible.
Por lo general, inicia el sistema en modo de usuario único, momento en el cual puede editar los archivos /etc/passwd
& /etc/shadow
según sea necesario.
Además, ¿cómo se comporta el programa sudo cuando ni el usuario raíz ni el usuario que llama tienen contraseñas? Lo probé y ni siquiera me pidió una contraseña: simplemente funcionó, ya que tengo esa línea de usuario ALL=(ALL) ALL en mi archivo sudoers (¿debería cambiar eso?)
Sí, sin contraseñas, el uso sudo
se vuelve más difícil. Existen métodos para utilizar otras fuentes al tratar con sudo
. Vea estas preguntas y respuestas de U&L tituladas:Establezca la contraseña de sudo de manera diferente a la de inicio de sesión.
Respuesta2
Ojo que hay varias cosas que podrían llamarse “eliminar una contraseña”. En Linux:
passwd -d USER
configura la cuenta para permitir el inicio de sesión sin contraseña. (Algunos servicios, en particular ssh, tienden a configurarse para bloquear los inicios de sesión en este caso).passwd -l USER
bloquea la contraseña de la cuenta: no se aceptará ninguna contraseña. Todavía es posible iniciar sesión por otros medios, como claves ssh o sudo.usermod -e 1 USER
bloquea la cuenta (al establecer la fecha de vencimiento de la contraseña en una fecha pasada): resulta imposible iniciar sesión en esta cuenta a través de cualquier servicio.
Supongo que te refieres al segundo significado: has hecho que sea imposible iniciar sesión en estas cuentas con una contraseña, pero aún así se puede acceder a ellas a través de ssh con una clave o con sudo.
Si ha desactivado la contraseña de su cuenta, ya no podrá utilizar sudo.Tiene un período de gracia durante el cual sudo no le volverá a solicitar su contraseña. Después de eso, a menos que haya cambiado la configuración predeterminada de una manera inusual, sudo le solicitará su contraseña, que no podrá ingresar porque no hay más contraseña. Esto no se aplica a las reglas sudoers con la NOPASSWD
etiqueta.
Eliminar contraseñas no hace que el sistema sea más seguro que elegir contraseñas seguras. Si su VPS ofrece una forma de iniciar sesión en una consola virtual, genere una contraseña larga y aleatoria para la cuenta raíz, pruebe que funciona, imprímala y guarde la hoja de papel en su caja fuerte. De esa manera, tendrá una manera de recuperar el acceso a su sistema si algo sale mal (como "ups, me bloqueé de ssh" o "ups, me bloqueé de sudo"). Para su cuenta, elija una contraseña más corta que pueda memorizar, desactive las contraseñas para inicios de sesión SSH (opcional) y escriba su contraseña para sudo
convertirse en root. Tener un nivel adicional de autenticación desde su cuenta normal hasta el root es útil porque es mucho más difícil colocar un troyano no detectado en una cuenta que no sea root.
Respuesta3
No tener contraseña está bien la mayor parte del tiempo.
Sí, si solo permite la autenticación mediante clave ssh y pierde su clave ssh, ya no podrá iniciar sesión. En este caso, puede, por ejemplo, iniciar algún CD en vivo, montar el sistema original y agregar una contraseña de root. (Si no tienes esa opción, tal vez sea mejor tener una contraseña de root, por si acaso).
Sudo se puede configurar para que no solicite ninguna contraseña. Existe la NOPASSWD:
opción de activar esto. (Ver man sudoers
.)
Tenga en cuenta que hay muchas otras formas disponibles de autenticación. Puedes activarlos configurando tuPAMsistema.