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