El peor tipo de contraseña no es una contraseña débil sino ninguna contraseña. Como administrador del sistema, debe asegurarse de que cada cuenta de usuario tenga una contraseña segura. Este breve tutorial explica cómo encontrar cuentas de usuario con contraseña vacía en Linux.
Antes de entrar en materia, hagamos un resumen rápido de sombra archivo y su finalidad.
¿Qué es el archivo de contraseña oculta?
En los sistemas RHEL, las contraseñas de los usuarios se cifran y almacenan en un archivo seguro llamado /etc/shadow
. El archivo de contraseña oculta contiene la autenticación de usuario y los detalles de antigüedad de la contraseña de las cuentas de usuario.
El archivo de contraseña oculta es propiedad de root
usuario y solo es legible por los superusuarios. Puede verificar la propiedad y el permiso del archivo shadow usando el siguiente comando:
# ls -l /etc/shadow ---------- 1 root root 618 Apr 7 07:52 /etc/shadow
La estructura típica de una fila de muestra del archivo shadow se muestra a continuación.
user1:$6$5ps/XV21$EFmQ463GJZnsdF/:19089:0:99999:7:::
Como ya sabrá, el archivo shadow tiene nueve campos separados por dos puntos.
Echemos un vistazo rápido a cada campo.
- Archivo 1 (nombre de inicio de sesión) - Contiene el nombre de inicio de sesión (usuario1) tal como aparece en
passwd
archivo. - Archivado 2 (contraseña cifrada) - Este archivo contiene la contraseña hash (encriptada) del usuario. Si hay un solo signo de exclamación (!) al comienzo de este archivo, significa que la cuenta de usuario está bloqueada. Si este campo está vacío, el usuario no tiene contraseña.
- Archivado 3 (último cambio) - Este campo muestra el número de días desde la época de Unix (es decir, hora de Unix - 01 de enero de 1970 00:00:00 UTC) cuando se modificó la contraseña por última vez. Si este campo contiene 0, el usuario está obligado a cambiar su contraseña en el próximo inicio de sesión.
- Archivado 4 (mínimo) - Este campo muestra el número mínimo de días (mindays) que deben transcurrir antes de que el usuario pueda cambiar su contraseña. Puede cambiar este valor archivado con
chage
comando con-m
opción. - Campo 5 (Máximo) - Muestra el número máximo de días (maxdays) de validez de la contraseña antes de que caduque la contraseña del usuario. Si el campo es 0, significa que esta función está deshabilitada. El valor de este campo se puede cambiar con
chage
comando con-M
opción. - Archivado 6 (Advertencia) - Indica el número de días (warndays) durante los cuales el usuario recibe avisos por cambiar su contraseña antes de que caduque. Puede cambiar este valor con
chage
comando con-W
opción o lapasswd
comando con-w
opción. - Campo 7 (Caducidad de la contraseña) - Define el número máximo permitido de días para que el usuario pueda iniciar sesión con la contraseña caducada. Esto se puede cambiar usando
chage
comando con-I
bandera opasswd
comando con-i
bandera. - Campo 8 (Caducidad de la cuenta) - Define el número de días desde la hora UNIX cuando la cuenta de usuario caducará y ya no estará disponible. Puede cambiar el valor de este campo usando
chage
comando con-E
opción. - Campo 9 (Reservado) - Este campo está reservado para uso futuro.
Como se mencionó anteriormente, las contraseñas cifradas se almacenan en el segundo campo de cada entrada en el archivo de contraseñas ocultas, justo después del nombre de usuario.
Entonces, si el segundo campo en el archivo shadow está vacío, entonces el usuario no tiene contraseña. Permítame mostrarle un ejemplo para encontrar todas las cuentas de usuario sin contraseña.
Encuentre todas las cuentas de usuario sin contraseña en Linux
Para detectar todas las cuentas de usuario locales que no tienen contraseña, simplemente ejecute el siguiente comando como root
usuario:
# awk -F: '$2 == "" { print $1, "has empty password!. Please set a strong password ASAP!!" }' /etc/shadow
Salida de muestra:
ostechnix has empty password!. Please set a strong password ASAP!!
También puedes usar getent
comando combinado con grep
y cut
comandos para identificar cuentas de usuario locales sin contraseña en Linux.
# getent shadow | grep -Po '^[^:]*(?=::)'
O,
# getent shadow | grep '^[^:]*::' | cut -d: -f1
Todos los comandos anteriores enumerarán solo las cuentas de usuario locales que tienen contraseñas vacías. Si desea enumerar las cuentas del sistema y las cuentas de usuario con contraseña vacía, ejecute.
# getent shadow | grep -Po '^[^:]*(?=:.?:)'
O,
# getent shadow | grep '^[^:]*:.\?:' | cut -d: -f1
Encuentre una cuenta de usuario específica sin contraseña
Los comandos anteriores enumerarán todas las cuentas locales y del sistema que no tienen contraseña. También puede verificar el estado de la contraseña de una cuenta de usuario específica usando passwd
comando con -S
bandera.
# passwd -S ostechnix
Salida de muestra:
ostechnix NP 2022-04-07 0 99999 7 -1 (Empty password.)
La passwd
Los comandos indicarán el estado de la contraseña de la cuenta de usuario dada. Los valores posibles son:
- LQ - La cuenta de usuario está bloqueada.
- NP - La cuenta de usuario no tiene contraseña.
- PD - La cuenta de usuario tiene una contraseña utilizable.
Aviso: En los sistemas basados en Debian, el estado de la contraseña se indicará como L , N , P respectivamente.
Establecer contraseña de usuario en Linux
Puede iniciar sesión como un usuario sin contraseña, está perfectamente bien. ¡Sin embargo, no es recomendable! Debe establecer una contraseña segura con al menos 8 caracteres, incluidas mayúsculas, minúsculas, un carácter especial y un número.
Para establecer la contraseña de una cuenta de usuario en Linux, use passwd
comando como root
usuario como a continuación.
Como usuario root:
# passwd ostechnix
Reemplace ostechnix con su propio nombre de usuario.
Ahora verifique el estado de la contraseña de la cuenta de usuario usando passwd
comando:
# passwd -S ostechnix
Salida de muestra:
ostechnix PS 2022-04-07 0 99999 7 -1 (Password set, SHA512 crypt.)
Bloquear cuentas de usuario en Linux
A veces, solo desea bloquear las cuentas de usuario con contraseñas vacías. Si es así, primero encuentre a los usuarios con contraseñas vacías como se describe arriba y bloquéelos usando passwd
comando con -l
marcar como root
usuario como a continuación.
# passwd -l ostechnix
Salida de muestra:
Locking password for user ostechnix. passwd: Success
Ahora, verifique el estado de la cuenta de usuario:
# passwd -S ostechnix
Resultado de muestra:
ostechnix LK 2022-04-07 0 99999 7 -1 (Password locked.)
¿Ver? El usuario ha sido bloqueado. Ya no puede iniciar sesión en el sistema.
También puede usar el usermod
comando con -L
(L mayúscula) para bloquear a un usuario.
# usermod -L ostechnix
Desbloquear cuentas de usuario en Linux
Para desbloquear los usuarios sin contraseña en Linux, utilice passwd
comando o usermod
comando con -p
como root
usuario.
# passwd ostechnix
Ingrese la contraseña dos veces para desbloquear la contraseña.
Desbloqueo de usuario con contraseña vacía con usermod
El comando no es posible, debe establecer una contraseña con usermod -p
para desbloquear la contraseña del usuario.
# usermod -p <password-here> ostechnix
Conclusión
En este tutorial, explicamos qué es el archivo de contraseña Shadow y el propósito de este archivo en Linux. Luego discutimos sobre varios comandos para encontrar todas las cuentas de usuario que no tienen contraseña en Linux. Finalmente, aprendimos cómo establecer una contraseña para un usuario y también cómo bloquear y desbloquear usuarios en Linux.