Las passwords en Linux como en cualquier sistema *nix, son la señal univoca que nos identifica como un usuario frente al sistema operativo, una vez hayamos introducido la password correcta el sistema nos asignará nuestro uid que nos identificará como nosotros ante el mismo.
Los ficheros de passwords en Linux residen habitualmente en el directorio /etc/passwd ( aunque existen excepciones como veremos con shadow ). Es de hacer notar que el cifrado de las claves en *nix es "de un solo sentido" es decir, teniendo la clave y el algoritmo de cifrado podremos generar la clave cifrada, pero teniendo el algoritmo y la clave cifrada no podremos generar la clave sin cifrar. Es interesante tener esto en cuenta ya que los ataques al fichero de claves se realizan teniendo presente este modo de cifrado.
Esta sería una linea típica de un /etc/passwd ( sin shadow ) :
david:aaBaCDeg:1000:1000:David Fernandez Vaamonde,,,:/home/david:/bin/bash
El proceso de validación de una password es el siguiente:
Los ataques al fichero de passwords son generalmente ataques con extensos diccionarios de palabras. Es practicamente inviable realizar un ataque al fichero de passwords basado en la "fuerza bruta", es decir probando todas las combinaciones posibles, por tanto se opta por tomar uno o varios diccionarios de palabras habituales e ir encriptando e intentando validar las palabras como passwords.
Estos ataques son realizados una vez obtenido el fichero de passwords y los realiza un programa que se encarga no solo de encriptar las palabras del diccionario si no también de añadir numeros y signos de puntuación para hayar posibles combinaciones con las palabras del diccionario.
Es conveniente ser consciente de como se realizan estos ataques ya que esto nos ayudará mas adelante a escoger con cuidado nuestras passwords; muchas de las precauciones que han de ser tomadas cuando escogemos nuestra palabra clave son derivadas directamente de la forma en la que actuan estos ataques
Para evitar el compromiso de el fichero de claves del sistema se ideo el fichero /etc/shadow. Este fichero es de lectura y escritura para el root y de escritura unicamente para el grupo shadow. En este fichero se almacenan las passwords encriptadas de manera que unicamente el root pueda acceder a ellas, de este modo se evita mostrar a cualquier persona las passwords en claro para que pueda realizar un ataque contra el fichero de claves del sistema a su antojo. Este es el aspecto que presenta una linea del fichero /etc/passwd en un sistema con passwords en shadow:
david:x:1000:1000:David Fernandez Vaamonde,,,:/home/david:/bin/bash
Y aqui esta la linea del /etc/shadow correspondiente:
david:njAd87ds.adferw:10876:0:99999:7:::
Existe una serie de recomendaciones en cuanto a las passwords tanto de cara a los administradores como a los usuarios:
De cara a los administradores:
De cara al usuario:
Es importante saber realmente quién esta accediendo a nuestra máquina en cada momento, y saber si realmente es quien dice ser. A este proceso se le denomina Autenticación. Ya hemos visto algún método de autenticación, por ejemplo el password, sin embargo los módulos PAM, permiten separar de algún modo el servicio con el método de autenticación que se usará en su acceso.
PAM permitira a un administrador de sistema, decidir de que manera sus aplicaciones autentifican a sus usuarios independientemente de las mismas sin recompilar ni cambiar código. Además permitirá guiar de algun modo la politica de seguridad para utilizar estos modulos.