En los sistema operativos tipo Unix la base de datos shadow password database es un mecanismo para incrementar la seguridad de las contraseñas restringiendo el acceso a todos los usuarios excepto a root. comúnmente estos datos son mantenidos en ficheros únicamente al super usuario (root) u otra cuenta administrativa con los privilegios de lugar.
Al principio no existía el fichero /etc/shadow – las contraseñas y salts estaban conjuntamente con otra información en el fichero /etc/passwd. El problema con esto era que cualquiera podía leerlo, lo que hizo más comunes y poderosos los ataques al sistema. Fue necesario mover la contraseña a un fichero diferente que sólo podía ser leído por root.
Este es un ejemplo de una entrada en el fichero shadow:
$ sudo cat /etc/shadow | grep oracle
oracle:$6$MvOuttAz$5ZUMuRkx8b2kGJ/jQvTszUQz73R1G9wM78kh1SogNRnSNARUtH9YFbRX/E9iSkcokC4Djyo86DDj39Tq5ebw4/:15057:0:99999:7:::
Cada campo está separados por dos puntos (:). En detalle cada campo:
- User name. Coincide con el user name del fichero /etc/passwd.
- Password. Esto es un hash de la contraseña (no la contraseña en sí misma) combinado con un id (especificando cuál forma de encriptación se utiliza) y un salt.
- Last changed date. Esta es la fecha en que fue cambiada la contraseña.
- Minimum days. Es el número de días que estará activa la contraseña antes de ser cambiada de nuevo. Una contraseña no puede ser cambiada hasta cumplidos estos días.
- Maximum days. Es el número de días en los que dicha contraseña será válida. Una vez cumplido este plazo el usuario es forzado a cambiar su contraseña.
- Warn days. Antes de una contraseña vencerse, advierte al usuario cuántos días le quedan.
- Inactive days. Una vez que la contraseña expiró, será deshabilitada después de pasado estos días.
- Expire date. Después de esta fecha la cuenta es deshabilitada y jamás podrá iniciar sesión.
Concentrándonos en la parte de la contraseña, tenemos que este hash se compone de tres partes separadas por el caracter $:
- Id: Identifica el método de encriptación utilizado: 1 para MD5; 2 o 2a para Blowfish; 3 para NT Hash; 5 para SHA-256; y 6 para SHA-512.
- Salt: Es utilizado por los algoritmos de encriptación, regularmente son 16 caracteres o más.
- Hash: Esto es la "contraseña" (o hash). MD5 utiliza 22 caracteres, SHA-256 usa 43, y SHA-512 usa 86.
Para el ejemplo del usuario oracle que mencionamos hace un momento, tenemos:
Id=6 (SHA-512)
Salt=MvOuttAz
Hash=5ZUMuRkx8b2kGJ/jQvTszUQz73R1G9wM78kh1SogNRnSNARUtH9YFbRX/E9iSkcokC4Djyo86DDj39Tq5ebw4/
Más recursos:
Salt | Shadow password | TLDP
No hay comentarios:
Publicar un comentario