You are on page 1of 29

Pluggable Authentication Modules (PAM)

Imobach Gonzlez Sosa a imobachgs@softhome.net Manolo Padrn Mart o nez manolopm@softhome.net

Versin 1.0 o Curso 2003/04

Licencia Copyright (c) 2004 Manolo Padrn Mart o nez, Imobach Gonzlez Sosa. a Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled GNU Free Documentation License.

Indice
1. Acerca de este documento 2. Fundamentos bsicos a 2.1. Qu es PAM? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e 2.2. Grupos de gestin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 3. Arquitectura 4. Conguracin o 4.1. Enfoques de la organizacin de la conguracin . . . . . . . . . . . . . . . o o 4.2. Reglas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5. Algunos mdulos disponibles o 1 2 2 3 4 6 6 6 11

5.1. pam console.so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 5.2. pam cracklib.so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 5.3. pam deny.so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.4. pam env.so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.5. pam limits.so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.6. pam nologin.so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5.7. pam permit.so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5.8. pam rootok.so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 5.9. pam securetty.so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 5.10. pam stack.so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 5.11. pam wheel.so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 5.12. pam xauth.so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 6. Ejemplos de conguracin o 17

6.1. login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 6.2. passwd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 6.3. su . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

Ampliacin de sistemas operativos o

Indice

6.4. other . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 A. Valores devueltos por los mdulos de PAM o 22

A.1. authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 A.2. account . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 A.3. password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 A.4. session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 B. Referencias 24

Ampliacin de sistemas operativos o

Indice

1.

Acerca de este documento


Los Pluggable Authentication Modules se han convertido en el estndar de facto a

para la autenticacin de usuarios en los sistemas UNIX. Su gran exibilidad ofrece a o administradores y desarrolladores un control muy valioso. Gracias a PAM, los administradores de sistemas pueden modelar e implementar diferentes pol ticas de autenticacin para los distintos usuarios de forma individualizada o para cada servicio. Pero hay que manejar estas facilidades con sumo cuidado, ya que una mala decisin o, simplemente, un despiste pueden comprometer gravemente la seguridad o del sistema. Por tanto, el administrador tiene que conocer muy bien cmo funciona PAM o si, realmente, quiere anar al mximo el proceso de autenticacin de su sistema. a o Este documento pretende servir como introduccin a PAM, centrndose en la o a implementacin desarrollada por Red Hat para GNU/Linux, Linux-PAM, si bien los o conceptos bsicos son los mismos que presentara Sun en su momento all por 1995. a a Como siempre, para obtener informacin ms precisa, lo mejor es consultar directao a mente la documentacin ocial del proyecto, en http://www.kernel.org/pub/linux/libs/pam/. o

Ampliacin de sistemas operativos o

Pgina 1 a

2.
2.1.

Fundamentos bsicos a
Qu es PAM? e

La idea original de los Pluggable Authentication Modules, en adelante PAM, fue de Sun y sus especicaciones se encuentran recogidas en [5]. Sin embargo, muchos otros sistemas adoptaron esta solucin y cuentan desde hace tiempo con sus propias implementaciones. o En este sentido, GNU/Linux no es una excepcin y, gracias a Red Hat, disfruta ya desde o hace aos de la funcionalidad que ofrece Linux-PAM1 . n Pero, qu es PAM exactamente? Tal y como puede leerse en la FAQ2 ocial del e proyecto, PAM es, bsicamente, un mecanismo exible para la autenticacin de usuarios. a o Y quizs esta caracter a stica, la exibilidad, sea su aportacin ms importante. o a A lo largo de los aos, desde los primeros sistemas UNIX, los mecanismos de n autenticacin han ido evolucionando y han aparecido nuevas opciones: desde mejoras o del clsico /etc/passwd como la shadow hasta dispositivos hardware orientados a la a autenticacin. Y, claro est, cada vez que aparec y se popularizaba un nuevo mtodo, o a a e los desarrolladores deb modicar sus programas para darles soporte. an PAM permite el desarrollo de programas independientes del mecanismo de autenticacin a utilizar. As es posible que un programa que aproveche las facilidades ofrecidas o por PAM sea capaz de utilizar desde el sencillo /etc/passwd hasta dispositivos hardware como lectores de huella digital, pasando por servidores LDAP 3 o sistemas de gestin o de bases de datos. Y, por supuesto, todo esto sin cambiar ni una sola l nea de cdigo. o Pero PAM va ms all todav permitiendo al administrador del sistema construir a a a, pol ticas diferentes de autenticacin para cada servicio. o En resumen, podr an sintetizarse las ventajas ms importantes de PAM en los a siguientes puntos: Ofrece un esquema de autenticacin comn y centralizado. o u Permite a los desarrolladores abstraerse de las labores de autenticacin. o Facilita el mantenimiento de las aplicaciones.
1

A no ser que se indique lo contrario, a partir de ahora se har referencia PAM y Linux-PAM a

indistintamente. 2 Frequently Asked Questions, http://www.kernel.org/pub/linux/libs/pam/FAQ 3 Lightweight Directory Access Protocol

Ampliacin de sistemas operativos o

Pgina 2 a

Ofrece exibilidad y control tanto para el desarrollador como para el administrador de sistema.

2.2.

Grupos de gestin o

A pesar de lo que se ha explicado anteriormente, la misin de PAM no es, unicamente, o comprobar que un usuario es quien dice ser autenticacin. Su alcance es mucho mayor o y pueden dividirse sus tareas en cuatro grupos independientes de gestin, cada uno de los o cules se encarga de un aspecto diferente de los servicios restringidos. a account (cuenta) En este grupo se engloban tareas que no estn relacionadas a directamente con la autenticacin. Algunos ejemplos son permitir/denegar el acceso o en funcin de la hora, los recursos disponibles o, incluso, la localizacin. Ofrece o o vericacin de cuentas de usuario. Por ejemplo, se encarga de determinar si el usuario o tiene o no acceso al servicio, si su contrasea ha caducado, etc. n authentication (autenticacin) Tareas encaminadas a comprobar que, efectivamente, o el usuario es realmente quien dice ser. A menudo, cuando se habla de PAM, slo o se tiene en cuenta esta tarea, ignorando las dems. Estas tareas ofrecen incluso un a sistema de credenciales que permiten al usuario ganar ciertos privilegios jados por el administrador. password (contrase a) Se encarga de mantener actualizado el elemento de autentin cacin asociado a cada usuario por ejemplo, su contrasea. Acciones como o n comprobar la fortaleza de una clave son t picas de este grupo. session (sesin) En este grupo se engloban tareas que se deben llevar a cabo antes o de iniciarse el servicio y despus de que este nalice. Es especialmente util para e mantener registros de acceso o hacer accesible el directorio home del usuario.

Ampliacin de sistemas operativos o

Pgina 3 a

3.

Arquitectura
Hasta ahora se ha estudiado cul es la misin de PAM y qu grupos de tareas lleva a a o e

cabo. As que, la siguiente pregunta es: cmo se organizan todas estas ideas? o La gura 1, extra de [?], ilustra de forma clara su arquitectura. da
+----------------+ | application: X | +----------------+ / +----------+ +================+ | authentication-[---->--\--] Linux|--<--| PAM config file| | + [----<--/--] PAM | |================| |[conversation()][--+ \ | | | X auth .. a.so | +----------------+ | / +-n--n-----+ | X auth .. b.so | | | | __| | | _____/ | service user | A | | |____,----- | | | V A +----------------+ +------|-----|---------+ -----+------+ +---u-----u----+ | | | | auth.... |--[ a ]--[ b ]--[ c ] +--------------+ | acct.... |--[ b ]--[ d ] +--------------+ | password |--[ b ]--[ c ] +--------------+ | session |--[ e ]--[ c ] +--------------+

Figura 1: Arquitectura de Linux-PAM Supngase que una aplicacin X quiere hacer uso de las facilidades ofrecidas por PAM. o o Para ello, interacta con la biblioteca de Linux-PAM, sin tener que conocer ningn detalle u u acerca de como est congurado el sistema para la aplicacin X. Ser precisamente esta a o a biblioteca quien se encargue de leer la conguracin de PAM para conocer qu pol o e tica de autenticacin ha de aplicarse combinando de forma conveniente una serie de mdulos. o o Los mdulos se colocan en una pila segn el grupo de gestin y el orden en el que o u o aparecen en la conguracin un mdulo puede pertenecer a varios grupos, para ser o o utilizados por PAM cuando corresponda. Este aspecto es tremendamente importante, ya que como se ver ms adelante, el orden de los mdulos en la pila va a determinar, en gran a a o medida, el comportamiento de PAM para un servicio dado. En la gura, para la tarea de autenticacin, se invocar primero al mdulo a, luego a b y, nalmente, a c4 . o a o Finalmente, PAM ofrece a la aplicacin una serie de funciones para llevar a cabo las o diferentes tareas de cada grupo (autenticar, abrir sesin, etc.), mientras que la aplicacin o o
4

Pueden existir variaciones en el ujo, pero por el momento no se van a tener en cuenta

Ampliacin de sistemas operativos o

Pgina 4 a

brinda a PAM una funcin de conversacin destinada a intercambiar informacin textual. o o o Gracias a esta funcin, PAM se libera de tener que preocuparse de cmo enviar/recibir o o informacin del cliente cuadros de dilogo, intercambio en un terminal, protocolos de o a red, etc..

Ampliacin de sistemas operativos o

Pgina 5 a

4.
4.1.

Conguracin o
Enfoques de la organizacin de la conguracin o o

La conguracin de Linux-PAM puede organizarse siguiendo dos esquemas diferentes: o Poner toda la conguracin en el chero /etc/pam.conf la ms antigua. o a Colocar la conguracin de cada servicio en cheros separados bajo el directorio o /etc/pam.d/. Este tipo de organizaciones ha ido ganando adeptos, y proyectos como Apache tambin hacen uso de un esquema de este tipo. e Una combinacin de las dos anteriores: por ejemplo, leer primero /etc/pam.d/ y o luego /etc/pam.conf como en el caso de Red Hat Linux. Afortunadamente, en todos los casos se utiliza la misma sintaxis, con la salvedad de que en el caso de /etc/pam.conf hay que indicar el servicio al que pertenece cada directiva con /etc/pam.d/ esta informacin est impl o a cita en el nombre del chero de conguracin. o En aras de la simplicidad, en adelante se supondr que se usa el enfoque combinado, a si bien este es un detalle que, conceptualmente, carece de importancia. $ ls /etc/pam.d/ chage chsh groupadd chfn cups kde kde-np login other passwd shadow sshd su sudo system-auth useradd xdm xserver

Figura 2: Organizacin de la conguracin en cheros separados o o

4.2.

Reglas

Los cheros de conguracin de PAM estn compuestos por una serie de reglas a o a aplicar, una por l nea aunque pueden dividirse en varias usando el caracter \. Se ignoran todas las l neas que comiencen por el caracter #. Todas estas reglas tienen la siguiente forma: servicio* tipo control ruta [argumentos]

Ampliacin de sistemas operativos o

Pgina 6 a

A continuacin, se va a profundizar en el signicado y la sintaxis de cada uno de o estos campos. Hay que mencionar que, exceptuando los casos de ruta y argumentos depende del mdulo, en el resto de los campos no se hacen distinciones entre maysculas o u y minsculas. u Pero antes, y para que lector se haga una idea de la estructura de este chero, un pequeo ejemplo. Esta conguracin pertenece al servicio login de Red Hat Linux n o /etc/pam.d/login. #%PAM-1.0 auth auth auth account password session session

required required required required required required optional

pam_securetty.so pam_stack.so service=system-auth pam_nologin.so pam_stack.so service=system-auth pam_stack.so service=system-auth pam_stack.so service=system-auth pam_console.so

Servicio Este primer campo indica el nombre de la aplicacin/servicio correspondiente, como o por ejemplo login, su o smtp. Tal y como se explic anteriormente, se utiliza slo en o o /etc/pam.conf, ya que en el caso de la conguracin mediante cheros individuales el o nombre servicio se encuentra impl cito en el del chero. Existe un nombre de servicio reservado, other, que se utiliza para especicar reglas por defecto. As en el caso de que, por ejemplo, no hubiese reglas para smtp, se le aplicar , an las asociadas al servicio other.

Tipo Como se vio anteriormente, PAM puede dividir su actividad en cuatro tareas de gestin. Y tipo expresa, precisamente, el rea al que se destina esta regla. Puede adoptar o a uno de estos valores: auth, account, session o password. Como ya se hab mencionado a con anterioridad, los mdulos correspondientes a un mismo rea forman una pila. o a

Control Este campo indica a PAM qu hacer en caso de xito/fallo del mdulo de la regla e e o en cuestin. ejecutndose en serie todos los del mismo tipo. El orden en la pila hay que o a Ampliacin de sistemas operativos o Pgina 7 a

tenerlo muy en cuenta a la hora de determinar el valor adecuado para este campo. Actualmente, pueden usarse dos sintaxis: la ms simple consiste en una sola palabra a clave, mientras que la otra ms precisa y compleja implica el uso de corchetes y a parejas valor-accin. Para facilitar la compresin, en primer lugar se va a estudiar la o o sintaxis ms simple para, a continuacin, explorar su alternativa compleja. a o Usando la sintaxis sencilla, este campo puede tomar unicamente cuatro valores diferentes: required Indica que es necesario que el mdulo tenga xito para que la pila tambin lo o e e tenga. Si se produce un fallo, no se notica hasta que se procesa el resto de la pila. requisite En esencia, es igual que el anterior, con la diferencia de que en caso de fallo, el control se devuelve inmediatamente a la aplicacin. o sucient El xito en este mdulo, si no se ha producido un fallo en los procesados e o anteriormente en la pila, es suciente. Llegados a este punto, el procesamiento se detiene ignorando incluso posibles required posteriores. Un fallo no siempre resulta denitivo para la pila. optional Por lo general, PAM ignora los mdulos marcados con este indicador. Su valor o ser tenido en cuenta slo en caso de que no se haya llegado a ningn valor concreto a o u de xito o fracaso por ejemplo, PAM IGNORE. e La sintaxis alternativa de conguracin ofrece mayor exibilidad y funcionalidad, pero o introduce cierta complejidad que en muchos casos no es deseable. Se basa en asociar parejas valor-accin. As pueden asociarse acciones con los valores devueltos por los o , mdulos. o [valor1=accin1 valor2=accin2 valor3=accin3 ...] o o o Los posibles valores de valori se encuentran documentados en el apndice A (pg. 22). e a En lo que a las partes derechas se reere, accioni puede ser un nmero entero positivo n u o cualquiera de estos valores: ignore El valor que devuelve este mdulo no se tiene en cuenta. o bad Si se trata del primer mdulo en fallar, el valor que devuelva la pila ser el que o a devuelva este mdulo. o Ampliacin de sistemas operativos o Pgina 8 a

die Equivalente al anterior, pero en este caso se devuelve el control a la aplicacin de o inmediato. ok Si hasta el momento, el estado de la pila conduce a un xito PAM SUCCESS, el e cdigo que devuelve ser sobreescrito por el de este mdulo. En caso contrario, deja o a o el estado tal y como se lo encuentra. done Funciona del mismo modo que ok, con la salvedad de que, llegado a este punto, devolver el control a la aplicacin. a o reset Se olvida el estado de la pila hasta el momento y se sigue con el siguiente mdulo o de la pila. El valor entero positivo n que antes se mencion, indica que deben saltarse los siguiente o n mdulos. Esto permite al administrador tener, en cierto modo, control sobre el ujo de o ejecucin del proceso. o Para ilustrar la relacin entre una y otra sintaxis de conguracin, a continuacin se o o o expresan los posibles valores de la sintaxis sencilla en funcin de expresiones de la sintaxis o compleja. required equivale a [success=ok newauthok_reqd=ok ignore=ignore default=bad]. requisite equivale a [success=ok newauthok_reqd=ok ignore=ignore default=die]. sucient equivale a [success=done new_authok_reqd=done default=ignore]. optional equivale a [success=ok new_authtok_reqd=ok default=ignore].

Ruta Este campo contiene la ruta del mdulo que se va a utilizar: si empieza por el caracter o / se indica una ruta absoluta. En otro caso, ser relativa a /lib/security/. a

Argumentos Se trata de argumentos que pueden ser pasados al mdulo para su operacin. o o Generalmente, los argumentos son espec cos para cada mdulo y deber o an estar documentados. Si se pasara un argumento no vlido, el mdulo lo ignorar aunque a o a, deber usar syslog para informar del error. a Ampliacin de sistemas operativos o Pgina 9 a

En cuanto a la sintaxis, hay que sealar que si se quieren introducir espacios en blanco n en un argumento, ste deber ir encerrado entre corchetes. Si lo que se pretende hacer es e a pasar un corchete como parte del parmetro, habr hacer uso del carcter de escape \. a a a squid auth required pam_mysql.so user=passwd_query passwd=mada \

db=eminence [query=select user_name from internet_service where \ username_=%u and password=PASSWORD(%p) and service=web_proxy] En el ejemplo anterior puede observarse como se combinan distintos elementos para formar una regla bastante compleja. Ntese que los valores %u y %p son sustituidos por o el nombre de usuario y la contrasea respectivamente. n

Ampliacin de sistemas operativos o

Pgina 10 a

5.

Algunos mdulos disponibles o


Hasta el momento se han estudiado los fundamentos, la arquitectura y la conguracin o

de PAM. Sin embargo, poco se ha dicho acerca de los mdulos que ofrece. Esta seccin o o est dedicada a describir, sin entrar en demasiado detalle, algunos de los mdulos que a o vienen con la distribucin ocial de PAM en su versin 0.77. o o Esto no pretende ser una gu de referencia exhaustiva, por lo que para detalles a ms concretos sobre estos mdulos se remite al lector a la documentacin del proyecto. a o o Simplemente, se expondr una breve descripcin de cada mdulo y se mostrarn cules a o o a a son los principales argumentos que admiten.

5.1.

pam console.so

Grupo session y auth. Este mdulo permite el cambio de los permisos y de los propietarios de los cheros o indicados en /etc/security/console.perms cuando un usuario accede al sistema mediante una consola f sica y no hay ningn otro usuario registrado en el sistema. Cuando u el usuario abandona la sesin, los permisos y propietarios originales se restauran. o En el caso de que varios usuarios trabajasen al mismo tiempo en la consola f sica, los cheros slo se le asignar al primero en registrarse en el sistema, aunque esto no suele o an ocurrir. Los parmetros admitidos por este mdulo son: a o allow nonroot tty Bloquea la consola y cambia los permisos incluso si el propietario del terminal no es el superusuario. permsle=chero Permite especicar un chero alternativo al /etc/security/console.perms del cual leer la base de datos de permisos. fstab=chero Permite indicar un chero alternativo al fstab. El chero fstab almacena informacin relativa a los dispositivos que se pueden montar en el sistema, indicando o donde deben de montarse y el sistema de cheros en el que se encuentra.

5.2.

pam cracklib.so

Grupo password Ampliacin de sistemas operativos o Pgina 11 a

Se trata de un mdulo preventivo que se encarga de noticar al usuario de la debilidad o de su clave cuando ve que puede romperse usando un diccionario. Este mdulo entra o en funcionamiento cuando se establece o modica la clave de un usuario. Bsicamente este mdulo hace pasar la clave por la biblioteca cracklib. En caso de a o que pase como clave segura, intentar las siguientes comprobaciones, comparando la nueva a clave con la antigua: Pal ndromo Comprueba que la nueva contrasea no sea la vieja al revs. n e Cambio de may sculas Realiza varias combinaciones cambiando maysculas por u u minsculas y viceversa. u Similar Comprueba que las claves se diferencian en ms de difok caracteres. a Simple Verica el tamao de la clave. n Rotada Comprueba que la clave nueva no es una rotacin de la antigua. o Ya usada Se asegura de que la clave no se ha usado con anterioridad. Las contraseas n ya usadas se almacenan en /etc/security/opasswd. As mismo este mdulo permite un gran nmero de parmetros, ahora se mostraran o u a los mas importantes: debug Muestra informacin mas detallada a travs de syslog. Esta opcin no o e o imprimir las claves en el chero de log. a retry=N Permite especicar el nmero de veces que se volver a pedir la clave en caso u a de que no sea segura. Por defecto es 1. difok=N Indica el nmero de caracteres que deben ser diferentes entre la clave anterior u y la nueva. minlen=N Indica el nmero m u nimo de caracteres que debe tener una clave. n a o use authok Evita que el usuario introduzca la nueva contrasea tomndola del mdulo que se encuentra por delante en la pila.

Ampliacin de sistemas operativos o

Pgina 12 a

5.3.

pam deny.so

Grupo account,authentication, password y session. El objetivo de este mdulo es producir un fallo siempre. Si este mdulo es el unico que o o se encuentra en la pila, se considerar que sta ha fallado. a e

5.4.

pam env.so

Grupo authentication Permite establecer las variables de entorno por defecto o sustituir los valores de las variables ya establecidas cuando un usuario se registra en el sistema. El chero donde se denen dichas variables se encuentra en /etc/security/pam env.conf. Las clusulas de este chero son de la siguiente manera: a VARIABLE [DEFAULT=[valor]] [OVERRIDE=[valor]] donde la clusula default especicar el valor a tomar por defecto y override el valor a a por el que ser sustituido el contenido de la variable. a Este mdulo admite cuatro parmetros: o a debug Muestra informacin mas detallada sobre el mdulo en syslog. o o conle=chero Especica el chero de conguracin alternativo. o envle=chero Especica el chero alternativo a /etc/enviroment que contiene las variables de entorno establecidas para el sistema. readenv=0/1 Especica si se lee o no el chero con las variables de entorno. Por defecto s se lee.

5.5.

pam limits.so

Grupo session Controla los l mites impuestos en el chero /etc/security/limits.conf a los recursos disponibles. Las limitaciones se pueden aplicar a un usuario, a un grupo o a todos los usuarios del sistema. Los recursos que se pueden limitar desde este mdulo van o desde el mximo tiempo de CPU asignable, hasta el nmero mximo de cheros que puede a u a tener bloqueados simultneamente. a Ampliacin de sistemas operativos o Pgina 13 a

Este mdulo permite los siguiente parmetros: o a debug Muestra informacin aadida a travs de syslog. o n e conf=chero Permite especicar un chero de conguracin alternativo. o mites. change uid Permite cambiar el uid real para los usuarios que se han establecido l Esta opcin se usa principalmente en sistemas en los que al poner un l o mite de 0 procesos el usuario no puede ni abrir la sesin. o utmp early Corrige el problema generado por algunas aplicaciones que intentan crear utmp para el usuario antes de que este entre en el sistema. La sintaxis del chero de conguracin es la siguiente: o <dominio> <tipo> <elemento> <valor> donde <dominio> es el nombre de usuario, nombre de grupo, el comod * o el comod n n %. <tipo> indicara si se trata de un limite duro (hard) dbil (soft) o los dos tipos e simultneamente (-). Finalmente, el parmetro <elemento> se puede sustituirse por varios a a valores que indican el recurso que se esta limitando.

5.6.

pam nologin.so

Grupo account y authentication Este mdulo slo deja entrar a los usuarios del sistema si el chero /etc/nologin no o o existe. En caso contrario, slo el superusuario puede ingresar en el sistema. Al resto de o los usuarios se les mostrar el contenido de dicho archivo. a Pam nologin permite dos parmetros: a successok Devuelve PAM SUCCESS en vez de PAM IGNORE en caso de no encontrar el chero /etc/nologin. le=chero Permite indicar un chero alternativo a /etc/nologin.

5.7.

pam permit.so

Grupo account,authentication, password y session.

Ampliacin de sistemas operativos o

Pgina 14 a

Pam permit funciona justamente al contrario del mdulo pam deny.so. Para cada o llamada al mdulo este devuelve un acierto , PAM SUCCESS. Por esta razn este mdulo es o o o muy inseguro y debe de ser usado con precaucin extrema. o

5.8.

pam rootok.so

Grupo authentication Pam rootok.so devuelve un acierto siempre que el identicador real del usuario sea 0 el usuario root. Con ello se consigue que el usuario root no necesite introducir la clave para acceder a los servicios asociados a este mdulo. Al usar pam rootok hay o que tener mucho cuidado ya que plantea un grave problema de seguridad. Si asociaramos pam rootok a un proceso que se arranca con el sistema, como por ejemplo login, el uid real sera 0 y por lo tanto acertara siempre, independientemente de que intentemos registrarnos con un usuario con uid distinto de 0.

5.9.

pam securetty.so

Grupo authentication Sirve para limitar las consolas en las que se puede autenticar el usuario root. El chero /etc/securetty contiene una lista de consolas seguras.

5.10.

pam stack.so

Grupo account,authentication, password y session. Este mdulo permite la asociacin en pila de varios mdulos PAM devolviendo un o o o acierto, en caso de que toda la pila devuelva un acierto. En caso de que uno de los mdulos de la pila devuelva un error, pam stack devolver el cdigo de error devuelto por o a o el mdulo que ha fallado. o

5.11.

pam wheel.so

Grupo authentication Limita la autenticacin como root a los usuarios del grupo o wheel. Los parmetros admitidos por pam wheel son los siguientes: a

Ampliacin de sistemas operativos o

Pgina 15 a

debug Muestra informacin aadida a travs del syslog. o n e use uid Modica el comportamiento del mdulo usando el el uid del proceso y no el o nombre de usuario de getlogin. trust Con esta opcin se consigue que los usuarios que pertenecen al grupo wheel o cambiarse por el usuario root sin usar la clave. Debe de usarse con mucho cuidado. deny Este parmetro hace que el mdulo se comporte al revs denegando a los usuarios a o e del grupo wheel la posibilidad de convertirse en root. group=XXXX Permite especicar los grupos a los que se les permite la autenticacin. o

5.12.

pam xauth.so

Grupo session Se encarga de redireccionar las cookies de autenticacin de un usuario a otro o en el sistema X-Window. Esto se usa para que, cuando un usuario se haga pasar por otro mediante el uso del comando su o alguno de sus derivados, pueda seguir lanzando aplicaciones como el nuevo usuario sin necesidad de salir y volver a entrar en el entorno X-Window.

Ampliacin de sistemas operativos o

Pgina 16 a

6.

Ejemplos de conguracin o
Ahora que ya se han estudiado tanto los fundamentos de conguracin como el o

cometido de los mdulos ms destacados de Linux-PAM, parece buena idea jar la o a atencin en una serie de ejemplos reales, con el n de ilustrar los conceptos vistos con o anterioridad. Para ello se comentar a continuacin la conguracin que da Red Hat Linux a algunos a o o de sus servicios. Concretamente, login, passwd, su y other. Sin embargo, en primer lugar se va a tener en cuenta un servicio articial, system-auth. Este engloba pol ticas comunes a muchos otros servicios que lo incluyen en su conguracin haciendo uso del mdulo pam stack. La ventaja de este esquema es o o que, en caso de querer cambiar el comportamiento comn de varios servicios, tan slo es u o necesario modicar system-auth.
#%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authconfig is run. ### auth ### # Inicializa las variables de entorno definidas en /etc/security/pam_env.conf. auth required /lib/security/$ISA/pam_env.so # Autentica al usuario al estilo unix tradicional (/etc/passwd). Se detiene # aqu si tiene xito. e # nullok: permite contrase~as en blanco. n # likeauth: pam_sm_setcred() devuelve lo mismo que pam_sm_authenticate() auth sufficient /lib/security/$ISA/pam_unix.so likeauth nullok # Si se llega hasta aqu sin xito, se falla. e auth required /lib/security/$ISA/pam_deny.so ### account ### # Basndose en /etc/shadow, determina el estado de la cuenta de usuario (si ha a # expirado, debe cambiar la contrase~a, etc.). n account required /lib/security/$ISA/pam_unix.so ### password ### # Comprueba que la clave no es vulnerable a un ataque simple basado en # diccionario. # retry: 3 intentos para cambiar. # type: modifica el mensaje. Para type=XXX, sera New XXX password: . password required /lib/security/$ISA/pam_cracklib.so retry=3 type= # Actualiza la contrase~a. n # nullok: permite cambiar una contrase~a en blanco. Sin este parmetro, n a # una clave en blanco se interpreta como se~al de que la cuenta se n # encuentra desactivada.

Ampliacin de sistemas operativos o

Pgina 17 a

# use_authtok: toma como nueva contrase~a la obtenida por el mdulo anterior n o # (cracklib en este caso). # md5: usa la funcin MD5 para cifrar la contrase~a. o n password sufficient /lib/security/$ISA/pam_unix.so nullok use_authtok md5 shadow # Si se llega hasta aqu sin xito, se falla. e password required /lib/security/$ISA/pam_deny.so ### session ### # Limita los recursos para la sesin del usuario en base al contenido del o # archivo /etc/security/limits.conf. session required /lib/security/$ISA/pam_limits.so # Registra el acceso al servicio en syslog, tanto al principio como al final # de la sesin. o session required /lib/security/$ISA/pam_unix.so

Slo un apunte ms, los comentarios de los cheros que se presentan en esta seccin han o a o sido aadido por los autores de este documento, por lo que es probable que introduzcan n algunas imprecisiones.

6.1.

login

El programa login ofrece a los usuarios la posibilidad de abrir una sesin en el sistema. o Este es uno de los puntos de acceso ms sensibles y que, por lo general, ofrece un mayor a riesgo para la integridad del sistema. As pues, la conguracin de Linux-PAM en este o como en todos los servicios, a decir verdad debe estar especialmente cuidada. Por lo general, login pide un nombre de usuario y una contrasea. Despus de llevar n e a cabo una serie de comprobaciones e inicializaciones, al usuario se le ofrece un intrprete e de comandos shell. La conguracin de este servicio en Red Hat Linux hace uso intensivo del servicio o articial system-auth, siendo idnticas las pilas account y password. Las diferencias e radican, principalmente, en que al superusuario slo se le permite acceder desde terminales o f sicas tty, se deshabilita la entrada si existe el chero /etc/nologin y se realizan cambios de permisos/propietario segn lo indicado en /etc/security/console.perms. u
#%PAM-1.0 ### auth ### # Deshabilita el login para el root exceptuando los ttys. auth required pam_securetty.so # Procesa los mdulos auth del servicio system-auth. o

Ampliacin de sistemas operativos o

Pgina 18 a

auth

required pam_stack.so service=system-auth

# Deshabilita la entrada de cualquier usuario que no sea el root cuando el # fichero /etc/nologin existe. auth required pam_nologin.so ### account ### # Procesa los mdulos account del servicio system-auth. o account required pam_stack.so service=system-auth ### password ### # Procesa los mdulos password del servicio system-auth. o password required pam_stack.so service=system-auth ### session ### # Procesa los mdulos session del servicio system-auth. o session required pam_stack.so service=system-auth # Cambia permisos y propietarios de ciertos ficheros segn se indica en u # /etc/security/console.perms si el acceso se realiza por medio de una # consola fsica. Los permisos/propietarios originales se restauran al # salir. session optional pam_console.so

6.2.

passwd

passwd es la utilidad que permite modicar la contrasea de las cuentas asociadas n a los usuarios y a los grupos. Actuando como un usuario normal del sistema solamente podr modicar la propia contrasea, mientras que el superusuario podr modicar la a n a contrasea de cualquier cuenta. As mismo, solamente el administrador de un grupo n podr cambiar la contrasea del grupo. a n Adems de permitir el cambio de la contrasea, passwd permite modicar otros a n parmetros asociados a una cuenta de usuario como son el nombre, el shell de inicio a o la fecha de caducidad de la clave.
#%PAM-1.0 ### auth ### # Procesa los mdulos authentication del servicio system-auth o auth required pam_stack.so service=system-auth ### account ### # Procesa los mdulos account del servicio system-auth o account required pam_stack.so service=system-auth

Ampliacin de sistemas operativos o

Pgina 19 a

### password ### # Procesa los mdulos password del servicio system-auth o password required pam_stack.so service=system-auth

6.3.

su

Su es una aplicacin que permite convertirse en otro usuario una vez que tenemos o una sesin ya abierta. Cuando se invoca sin parmetros el su acta como si se quisiera o a u convertir al superusuario, root. En caso contrario su intentara convertirse en el usuario pasado por parmetro. a A continuacin se mostrara el chero de conguracin del pam para la utilidad su o o suministrado en RedHat.
#%PAM-1.0 ### auth ### # Permite que el usuario root use la utilidad su sin suministrar # ninguna contrase~a. n auth sufficient /lib/security/$ISA/pam_rootok.so # Descomentar la siguiente linea para indicar que los usuarios # pertenecientes al grupo wheel sean usuarios en los que se confa y # puedan realizar un su sin suministrar contrase~a. n #auth sufficient /lib/security/$ISA/pam_wheel.so trust use_uid # Descomentar la siguiente linea para indicar que los usuarios # pertenecientes al grupo wheel son los nicos usuarios a los que se u # les permite usar la utilidad su #auth required /lib/security/$ISA/pam_wheel.so use_uid # Procesa los mdulos authentication del servicio system-auth. o auth required /lib/security/$ISA/pam_stack.so service=system-auth ### account ### # Procesa los mdulos account del servicio system-auth. o account required /lib/security/$ISA/pam_stack.so service=system-auth ### password ### # Procesa los mdulos password del servicio system-auth. o password required /lib/security/$ISA/pam_stack.so service=system-auth ### session ### # Procesa los mdulos session del servicio system-auth. o session required /lib/security/$ISA/pam_stack.so service=system-auth # Carga el modulo xauth como opcional, permitiendo que el usuario al # que se ha cambiado mediante el su pueda seguir lanzando aplicaciones X-Window

Ampliacin de sistemas operativos o

Pgina 20 a

# en la sesin abierta por el usuario original. o session optional /lib/security/$ISA/pam_xauth.so

6.4.

other

Tal y como se explic con anterioridad, cuando PAM no encuentra un chero de o conguracin para un servicio en particular, aplica las reglas del servicio especial other. o Por tanto, puede decirse que se trata de la pol tica por defecto. Por motivos de seguridad, es aconsejable que este servicio deniegue cualquier acceso. As si Linux-PAM no encuentra conguracin para un servicio, simplemente denegar el , o a acceso, minimizando posibles amenazas. Con esta premisa, la conguracin resulta tremendamente simple, tal y como puede o apreciarse en las siguientes l neas.
#%PAM-1.0 # Por defecto, se deniega el acceso a cualquiera auth required /lib/security/$ISA/pam_deny.so account required /lib/security/$ISA/pam_deny.so password required /lib/security/$ISA/pam_deny.so session required /lib/security/$ISA/pam_deny.so

Ampliacin de sistemas operativos o

Pgina 21 a

A.

Valores devueltos por los mdulos de PAM o

Cada mdulo de PAM devuelve un valor al ser invocado. Este indica si se ha producido o algn fallo o si, por el contrario, todo ha ido bien. u PAM permite especicar comportamientos para cada uno de estos posibles valores en el chero de conguracin (ver 4, pg. 6). Para ello, se utiliza la sintaxis de pares o a valor=accin, colocando en la parte izquierda de la asignacin la la etiqueta del valor o o u cualquiera de los valores descritos a continuacin sin el prejo PAM y escrito en minscula; o por ejemplo, auth err.

A.1.

authentication

PAM AUTH ERR El usuario no se autentic. o PAM AUTHINFO UNAVAIL El mdulo no fue capaz de acceder a la informacin o o de autenticacin. Esto se debe generalmente a un fallo hardware o de acceso a la o red. PAM CRED ERR Este valor se devuelve cuando el mdulo no pudo establecer las o credenciales del usuario. PAM CRED EXPIRED Indica que las credenciales del usuario han caducado. PAM CRED INSUFFICIENT Por alguna razn, la aplicacin no tiene sucientes o o credenciales para autenticar al usuario. o PAM CRED UNAVAIL El mdulo no pudo obtener las credenciales de los usuarios. PAM MAXTRIES Los mdulos devuelven este valor cuando han alcanzado el nmero o u mximo de reintentos de autenticar al usuario. a PAM USER UNKNOWN El nombre de usuario es desconocido para el sistema de authentication. PAM SUCCESS Este valor se devuelve cuando el mdulo ha tenido xito. o e

A.2.

account

PAM ACCT EXPIRED La cuenta del usuario ha caducado y ya no puede volver a acceder con dicha cuenta. Ampliacin de sistemas operativos o Pgina 22 a

PAM AUTH ERR El usuario no se autentic. o PAM AUTHTOKEN REQD El token de autenticacin ha caducado. Antes de volver o a llamar a esta funcin se deber pedir un nuevo token. o a o e PAM SUCCESS Este valor se devuelve cuando el mdulo ha tenido xito. PAM USER UNKNOWN El nombre de usuario es desconocido para el sistema de account.

A.3.

password

PAM AUTHOK DISABLE AGING El token de autenticacin ha sido desactivado. o o PAM AUTHTOK ERR El mdulo fue incapaz de obtener un nuevo token de autenticacin. o PAM AUTHTOK RECOVERY ERR No se consigui leer el anterior token de o autenticacin. o o PAM AUTHTOK LOCK BUSY El token de autenticacin estaba bloqueado cuando se intent cambiar. o PAM PERM DENIED Permiso denegado. o e PAM SUCCESS Este valor se devuelve cuando el mdulo ha tenido xito. PAM TRY AGAIN Las comprobaciones anteriores fallaron. Se pide que se vuelva a hacer la misma llamada. PAM USER UNKNOWN El nombre de usuario es desconocido para el sistema de password.

A.4.

session

PAM SESSION ERR Se ha producido un fallo al intentar abrir o cerrar la sesin. o o e PAM SUCCESS Este valor se devuelve cuando el mdulo ha tenido xito.

Ampliacin de sistemas operativos o

Pgina 23 a

B.

Referencias

Adems de las pginas del manual, la documentacin adjunta a la distribucin ocial y a a o o algo de cdigo fuente, el presente texto ha tomado una importante cantidad de informacin o o de los documentos que se listan a continuacin. As que, cualquiera que desee profundizar o en el tema, deber referirse a ellos. a

[1] A Linux-PAM page http://www.kernel.org/pub/linux/libs/pam/ [2] Andrew G. Morgan, The Linux-PAM Administrators Guide http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/pam.html 1996 [3] Andrew G. Morgan, The Linux-PAM Application Developers Guide http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/pam appl.html 2001 [4] Andrew G. Morgan, The Linux-PAM Module Writers Guide http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/pam modules.html 2002 [5] V. Samar y R. Schemers, RFC 86.0: Unied login with pluggable authentication modules (PAM) Open Software Foundation, 1995 [6] Dag-Erling Smrgrav, Pluggable Authentication Modules http://www.freebsd.org/doc/en US.ISO8859-1/articles/pam/index.html Associates Technology, Inc., 2003 Networks

Ampliacin de sistemas operativos o

$ ls /lib/security apacheconf printconf authconfig printconf-gui authconfig-gtk printconf-tui bindconf printtool chfn reboot chsh redhat-cdinstall-helper cups redhat-config-bind dateconfig redhat-config-date ethereal redhat-config-httpd gdm redhat-config-keyboard ...

redhat-config-services redhat-config-soundcard redhat-config-time redhat-config-users redhat-config-xfree86 redhat-install-packages redhat-logviewer rhn_register samba screen

Figura 3: Lista parcial de mdulos PAM en /lib/security/ o

Ampliacin de sistemas operativos o

You might also like