En casi todas las implementaciones de Shadow Password 
actuales9.7 se suele incluir la
implementación para otro mecanismo de protección de las claves denominado
envejecimiento de contraseñas (Aging Password). La idea básica de
este mecanismo es proteger los passwords de los usuarios dándoles un 
determinado periodo de vida: una contraseña sólo va a ser válida durante 
un cierto tiempo, pasado el cual expirará y el usuario deberá cambiarla.
Realmente, el envejecimiento previene más que problemas con las claves 
problemas con la transmisión de éstas por la red: cuando conectamos 
mediante mecanismos como telnet, ftp o rlogin a un sistema 
Unix, cualquier equipo entre el nuestro y el servidor puede leer los paquetes
que enviamos por la red, incluyendo aquellos que contienen nuestro nombre de
usuario y nuestra contraseña (hablaremos de esto más a fondo en los 
capítulos dedicados a la seguridad del sistema de red y a la 
criptografía); de esta forma, un atacante situado en un ordenador 
intermedio puede obtener muy fácilmente nuestro login y nuestro password. Si la clave capturada es válida indefinidamente, esa persona tiene
un acceso asegurado al servidor en el momento que quiera; sin embargo, si la
clave tiene un periodo de vida, el atacante sólo podrá utilizarla antes de
que el sistema nos obligue a cambiarla.
A primera vista, puede parecer que la utilidad del envejecimiento de 
contraseñas no es muy grande; al fin y al cabo, la lectura de paquetes 
destinados a otros equipos (sniffing) no se hace por casualidad: el 
atacante que lea la red en busca de claves y nombres de usuario lo va a hacer
porque quiere utilizar estos datos contra un sistema. Sin embargo, una 
práctica habitual es dejar programas escuchando durante días y grabando 
la información leída en ficheros; cada cierto tiempo el pirata 
consultará los resultados de tales programas, y si la clave leída ya ha 
expirado y su propietario la ha cambiado por otra, el haberla capturado no le 
servirá de nada a ese atacante.
Figura 8.5:
La herramienta de administración admintool (Solaris), con
opciones para envejecimiento de claves.
|  | 
 
Los periodos de expiración de las claves se suelen definir a la hora de
crear a los usuarios con las herramientas que cada sistema ofrece para ello
(por ejemplo, Solaris y su admintool, mostrado en la figura 8.5). 
Si queremos modificar alguno de estos periodos una vez establecidos, desde esas
mismas herramientas de administración podremos hacerlo, y también desde
línea de órdenes mediante órdenes como chage o usermod.
Como antes hemos dicho, en el archivo /etc/shadow se almacena, junto a la 
clave cifrada de cada usuario, la información necesaria para implementar el 
envejecimiento de contraseñas; una entrada de este archivo es de la forma
toni:LEgPN8jqSCHCg:10322:0:99999:7:::
Tras el login y el password de cada usuario se guardan los campos 
siguientes:
- Días transcurridos desde el 1 de enero de 1970 hasta que la clave se 
cambió por última vez.
- Días que han de transcurrir antes de que el usuario pueda volver a
cambiar su contraseña.
- Días tras los cuales se ha de cambiar la clave.
- Días durante los que el usuario será avisado de que su clave va
a expirar antes de que ésta lo haga.
- Días que la cuenta estará habilitada tras la expiración de la
clave.
- Días desde el 1 de enero de 1970 hasta que la cuenta se deshabilite.
- Campo reservado.
Como podemos ver, cuando un usuario cambia su clave el sistema le impide 
volverla a cambiar durante un periodo de tiempo; con esto se consigue que 
cuando el sistema obligue a cambiar la contraseña el usuario no restaure 
inmediatamente su clave antigua (en este caso el esquema no serviría de
nada). Cuando este periodo finaliza, suele existir un intervalo de cambio 
voluntario: está permitido el cambio de contraseña, aunque no es 
obligatorio; al finalizar este nuevo periodo, el password ha expirado y ya
es obligatorio cambiar la clave. Si el número máximo de días en los
que el usuario no puede cambiar su contraseña es mayor que el número de 
días tras los cuales es obligatorio el cambio, el usuario no puede
cambiar nunca su clave. Si tras el periodo de cambio obligatorio el password permanece inalterado, la cuenta se bloquea.
En los sistemas Unix más antiguos (hasta System V Release 3.2), sin 
shadow password, toda la información de envejecimiento se almacena en 
/etc/passwd, junto al campo correspondiente a la clave cifrada de cada 
usuario pero separada de éste por una coma:
root:cp5zOHITeZLWM,A.B8:0:0:El Spiritu Santo,,,:/root:/bin/bash
Tabla 8.2:
Códigos de caracteres para el envejecimiento de contraseñas.
| 
| Carácter | . | / | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C |  | Valor (semanas) | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |  | Carácter | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R |  | Valor (semanas) | 16 | 17 | 18 | 19 | 20 | 21 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 |  | Carácter | S | T | U | V | W | X | Y | Z | a | b | c | d | e | f | g |  | Valor (semanas) | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 |  | Carácter | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v |  | Valor (semanas) | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 |  | Carácter | w | x | y | z |  |  |  |  |  |  |  |  |  |  |  |  | Valor (semanas) | 60 | 61 | 62 | 63 |  |  |  |  |  |  |  |  |  |  |  |  | 
 
En este caso el primer carácter tras la coma es el número máximo de 
semanas antes de que el password expire; el siguiente carácter es el 
número mínimo de semanas antes de que el usuario pueda cambiar su clave,
y el tercer y cuarto carácter indican el tiempo transcurrido desde el 1 de
enero de 1970 hasta el último cambio de contraseña. Todos estos tiempos
se indican mediante determinados caracteres con un significado especial, 
mostrados en la tabla 8.2. También se contemplan en este esquema
tres casos especiales: si los dos primeros caracteres son `..' el usuario
será obligado a cambiar su clave la siguiente vez que conecte al sistema; el
programa passwd modificará entonces su entrada en el archivo para que
el usuario no se vuelva a ver afectado por el envejecimiento. Otro caso especial
ocurre cuando los dos últimos caracteres también son `..', situación
en la cual el usuario igualmente se verá obligado a cambiar su clave la
próxima vez que conecte al sistema pero el envejecimiento seguirá definido
por los dos primeros caracteres. Por último, si el primer carácter tras la
coma es menor que el siguiente, el usuario no puede cambiar su password
nunca, y sólo puede ser modificado a través de la cuenta root.
© 2002 Antonio Villalón Huerta