PAM (Pluggable Authentication Module) no es un modelo de autenticación en sí, sino que se trata de un mecanismo que proporciona una interfaz entre las aplicaciones de usuario y diferentes métodos de autenticación, tratando de esta forma de solucionar uno de los problemas clásicos de la autenticación de usuarios: el hecho de que una vez que se ha definido e implantado cierto mecanismo en un entorno, es difícil cambiarlo. Mediante PAM podemos comunicar a nuestra aplicaciones con los métodos de autenticación que deseemos de una forma transparente, lo que permite integrar las utilidades de un sistema Unix clásico (login, ftp, telnet...) con esquemas diferentes del habitual password: claves de un solo uso, biométricos, tarjetas inteligentes...
La gran mayoría de las aplicaciones de linux usan estos métodos (PAM) para autenticarse frente al sistema, ya que una aplicación preparada para PAM (PAM-aware) puede cambiar el mecanismo de autenticación que usa sin necesidade de recompilar los fuentes. Incluso se puede llegar a cambiar el sistema de autenticación local sin siquiera tocar las aplicaciones existentes.
PAM viene "de serie" en diferentes sistemas Unix, tanto libres como comerciales, y el nivel de abstracción que proporciona permite cosas tan interesantes como kerberizar nuestra autenticación (al menos la parte servidora) sin más que cambiar la configuración de PAM, que se encuentra bien en el fichero /etc/pam.conf o bien en diferentes archivos dentro del directorio /etc/pam.d/
PAM trabaja con cuatro tipos separados de tareas de administración: authentication, account, session, y password. La asociación del esquema de administración preferido con el comportamiento de la aplicación se hace mediante archivos de configuración. Las funciones de administración las hacen módulos que se especifican en el archivo de configuración. Más adelante se explicara brevemente la sintaxis del archivo de configuración ya que se va fuera del alcance de este artículo.
Cuando una aplicación preparada para PAM inicia, se activa su comunicación con la API de PAM. Entre otras cosas esto fuerza la lectura del archivo de configuración: /etc/pam.conf. Alternativamente puede ser que se inicie la lectura de los archivos de configuración bajo /etc/pam.d/ (cuando existe un archivo de configuración correcto bajo este directorio, se ignora el archivo /etc/pam.conf)
sintaxis del archivo de configuración:
El archivo (/etc/pam.conf) está formado por una lista de reglas (típicamente una por línea). Cada regla es un conjunto de campos separados por espacios (los tres primeros son case-sensitives):
service type control module-path module-arguments
La sintaxis de los archivos bajo /etc/pam.d/ es igual salvo que no existe el campo "service". En este caso "service" es el nombre del archivo en el directorio /etc/pam.d/ (el nombre del archivo debe estar en minúsculas) Usualmente service es el nombre del servicio o aplicación comúnmente usado, ejemplo de esto son login, su y ssh.type especifica a que grupo de administración está asociada la regla. Las entradas válidas son:
- account: este módulo maneja la cuenta sin basarse en autenticación. Típicamente se usa para restringir/permitir el acceso a un servicio basado en la hora o quizás desde donde se loguea el usuario (ej.: root solo se puede loguear desde consola
- auth: provee mecanismo de autenticación (el usuario es quien dice ser).
- password: este módulo es requerido para modificar la password del usuario.
- session: este módulo está asociado con hacer tareas previas y/o posteriores al inicio del servicio mismo (pueden ser cosas como montar un directorio, activar logueos, etc).
El tercer campo control especifica que hacer si falla el control aplicado. Existen dos sintaxis para este campo, una sencilla de un campo y otra que especifica más de un campo dentro de corchetes rectos [] Para la básica, las opciones son:
- -required: indica que esta regla debe ser exitosa, de lo contrario el usuario no es autorizado a correr el servicio. Si falla se devuelve el control al programa, pero antes se ejecutan todos los módulos.
- -requisite: es como el required, pero devuelve el control al programa enseguida de fallar.
- -sufficient: Si este módulo se verifica, entonces (se devuelve) se le da el ok al programa y no se sigue verificando los otros módulos.
- -optional: la falla o no de este módulo es solo importante si es el único existente.
El cuarto campo module-path especifica el path al módulo PAM asociado con la regla. Los módulos se encuentran en /lib/security.
El quinto campo module-arguments es un conjunto de cero o más argumentos pasados al módulo durante su invocación. Los argumentos varían según el módulo.
La configuración de los archivos de configuración bajo /etc/pam.d/ resulta ser más flexible (se evita tener una archivo único enorme). Bajo este directorio se puede encontrar el archivo de confiuración personal de un servicio particular como ser ssh. La única diferencia entre la sintaxis del archivo /etc/pam.conf es que no existe el campo service.

No hay comentarios.:
Publicar un comentario