Hoy os vengo a hablar un poco de ciberseguridad básica en Linux, concretamente del mecanismo de Shadow password.

Conexto de shadow

Antiguamente, en entornos UNIX, se utilizaba un archivo llamado ‘passwd’ localizado en etc / passwd, para almacenar las contraseñas junto con los usuarios y otros datos. Este archivo, es de carácter público y está expuesto a todos los usuarios del sistema o a un atacante. Es por ello que se añadió un segundo archivo, llamado ‘shadow’, localizado en la misma ruta etc / shadow, el cual guarda las contraseñas cifradas y al que sólo y puede acceder el usuario root del sistema.
Podemos ver en la imagen un ejemplo extraído de una VM Linux (Debian), donde mediante el usuario root, podemos ver el contenido de los dos archivos.

Ahora bien, hay más datos que la contraseña cifrada y el usuario.

Por un lado, tenemos las entradas del archivo etc / passwd del estilo:
‘Root: x: 0: 0: root: / root: / bin / bash’
Cada dato separada por dos puntos, y son por orden:
root – El username
x – Aquí habría la contraseña, pero como esta enfoscada con la técnica shadow password, esta sustituida por una simple ‘x’. Puede aparecer un ‘*’, el cual significa que no es un password válido o que no tiene password.
0 – El user_id, es el tipo de usuario, que varía según los permisos que tiene.
0 – El grup_id, es el grupo al que pertenece el usuario. Están definidos en ‘etc / group’.
root – El nombre real del usuario (en su caso)
/ Root – El directorio del usuario en cuestión
/ Bin / bash – El directorio de la Shell que se carga al iniciar sesión
Un ejemplo de un usuario normal (no root) sería:
chris: x: 501: 100: Chris apellido apellido: / home / chris: / bin / bash

Por otro lado, las entradas del archivo etc / shadow son del estilo:
root: $ 6 $ pSZfVD35 $ QUV / vpLul / fa.GELBs5jbBcDjtL9pKlrAy6hrromNFtT4M.F37WqYUHZ2xx3oVsjfL2.eTIYQAymhSFNV / TkA /: 17,594: 0: 99999: 7 :::
Aquí entra en juego el concepto de envejecimiento de la contraseña. El objetivo es indicar unas pautas de cambio / caducidad periódicas a las contraseñas para evitar que, en caso de que un atacante obtenga la contraseña en claro, tenga acceso de por vida.
Por orden, los datos son:
root – usuario
: $ 6 $ pSZfVD35 $ QUV / vpLul / fa.GELBs5jbBcDjtL9pKlrAy6hrromNFtT4M.F37WqYUHZ2xx3oVsjfL2.eTIYQAymhSFNV / TkA / – contraseña cifrada. Si lo descomponemos vemos que $ 6 $ indica el algoritmo de cifrado, pSZfVD35 son los bits de salto, y el resto es la propia contraseña cifrada (el hash). Esto se explicará más detalladamente en el punto b.
17594 – días pasados ​​desde el 1 de enero de 1970 hasta el día en que la contraseña fue cambiada por última vez.
0 – mínimo de días entre el cambio de contraseña.
99999 – máximo de días entre el cambio de contraseña.
7 – numero de días de aviso previos antes de que caduque la contraseña
Los campos vacíos representan un ‘nunca’ y hacen referencia a si la contraseña caduca, esta inactiva o si la cuenta caduca.
Para entender mejor esta información, se puede usar el comando ‘chage’ -usuario con el flag -l para indicar que se quiere listar la información, tal y como se representa en la imagen 2.

 

Por Chris J.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *