PAM Linux

El objetivo principal de PAM es proporcionar una capa de abstracción entre las aplicaciones y los métodos de autenticación.
Su mecanismo se basa en la solicitud por parte de una aplicación a PAM si un usuario se puede conectar. PAM, dependiendo de su configuración dejará o no conectarse a dicho usuario con esa aplicación. Además, PAM utiliza unos módulos los cuales además de determinar cómo se debe autenticar, hacia dónde etc.., permiten realizar otras acciones ajenas a la autenticación.

La configuración se establece en /etc/pam.d/ , donde habrá un fichero por cada aplicación que queramos controlar mediante PAM.

Cada fichero puede llamar a los módulos que necesite o queramos añadir o quitar.

Invocar cada módulo lo hacemos poniendo:

tipo   control   módulo   argumentos

Valores para

tipo

auth: autenticación
account: acceso a información de cuenta, independientemente de la autenticación
session: acciones a realizar antes o después de abrir sesión
password: gestión de contraseñas

control

required: exige devolver un valor ok, aunque el resto de módulos de la pila se ejecutarán. Así si indicamos required el error de autenticación impide abrir sesión
requisite: como required exige un valor ok, en cambio no permite seguir cargando módulos de la pila.
Sufficient: en caso de dar ok y ningún required o requisite da error, el resto de módulos de la pila se ignoran (es decir, “es suficiente con esto”)
optional: permite dar ok o error sin afectar al resto de la pila de módulos, es decir aunque de error y otro modulo required da ok o viceversa, la ejecución de la pila es ok.

módulo

Hay una serie de módulos por defecto que suelen encontrarse en /lib/security o /lib/”tipo_deversion_/security ( buscar en caso de no estar aquí).

miguel@ubuntu:/lib/x86_64-linux-gnu/security$ ls
pam_access.so pam_group.so pam_mkhomedir.so pam_selinux.so pam_umask.so
pam_debug.so pam_issue.so pam_motd.so pam_sepermit.so pam_unix.so
pam_deny.so pam_keyinit.so pam_namespace.so pam_shells.so pam_userdb.so
pam_echo.so pam_lastlog.so pam_nologin.so pam_stress.so pam_warn.so
pam_env.so pam_limits.so pam_permit.so pam_succeed_if.so pam_wheel.so
pam_exec.so pam_listfile.so pam_pwhistory.so pam_tally2.so pam_xauth.so
pam_faildelay.so pam_localuser.so pam_rhosts.so pam_tally.so
pam_filter.so pam_loginuid.so pam_rootok.so pam_time.so
pam_ftp.so pam_mail.so pam_securetty.so pam_timestamp.so

A continuación unos módulos que más suelen darse (intentaré actualizar) . Los 6 primeros en ese orden sería la apertura de sesión por defecto:

pam_faildelay.so Establece un retardo en caso de fallo de la aplicación. Si no se demora, utilizará el valor de FAIL_DELAY de / etc / login.defs.
pam_issue.so Muestra por pantalla al hacer login el sistema. Especificamos como argumento issue=/etc/issue
pam_securetty.so Cancela el login de root, excepto en los terminales que indiquemos en /etc/securetty
pam_env.so Declara las variables del fichero /etc/environment o el fichero que indique el parametro “envfile=”
pam_unix.so Autenticación tradicional a través de /etc/passwd y /etc/shadow
pam_deny.so Es ejecutado en caso de no tener éxito ningún otro módulo. (impide el acceso)
–————————— –———————————————————————————————————————
pam_permit.so Devuelve un resultado ok sea cual sea la condición.
pam_tally2.so Bloquea a un usuario tras x intentos.
pam_limits.so Limita a usuarios o grupos ciertas acciones a través de /etc/security/limits.conf
pam_cracklib.so Asegura que las contraseñas utilizadas tengan un mínimo de dificultad
pam_selinux.so Asegura que el shell se ejecute con la seguridad adecuada
pam_lastlog.so Muestra información del último login
pam_mail.so Comprueba si hay nuevos correos anivel interno
pam_nologin.so Impide el login a cualquier usuario que no sea root. Para ello debe existir el fichero /etc/nologin

Argumentos

Nos permiten especificar condiciones teniendo en cuenta el tipo, el control y el módulo previamente indicado. Cada módulo utiliza unos argumentos. (de encontrar algún listado lo debo apuntar)

Autenticación mediante usuario LDAP gestionado por PAM

(Ojo, probar primero en server de prueba, podemos dejar innaccesible de por vida la máquina. Además no siempre funciona)

Por ejemplo en lugar de estar creando cientos de veces un usuario en cada server, le decimos que autentique con un usuario en un LDAP central. Para ello, en el servidor donde accederán modificamos los ficheros correspondientes:

1º /etc/nsswitch.conf

passwd: ldap compat
group : ldap compat
shadow : ldap compat

2º /etc/ldap.conf

host “direccion_IP_server_LDAP”
base dc=nombre, dc=dominio

Ahora comprobamos si está correcto:

getent passwd “usuario”

Si nos ha mostrado correctamente la línea del usuario de passwd, procedemos a configurar el PAM , quedando de la siguiente forma:

Autenticación → /etc/pam.d/common-auth

auth sufficient pam_unix.so nullok_secure
auth sufficient pam_ldap.so
auth requisite pam_deny.so
auth required pam_permit.so
auth optional pam_cap.so

Cuenta → /etc/pam.d/common-account

account sufficient pam_unix.so
account sufficient pam_ldap.so
account requisite pam_deny.so
account required pam_permit.so

Sessión → /etc/pam.d/common-session

session     [default=1]    pam_permit.so
session     requisite    pam_deny.so
session     required    pam_permit.so
session     opcional    pam_umask.so
session     required    pam_unix.so
session     required    pam_mkhomedir.so skel=/etc/skel
session     optional    pam_ldap.so
session     optional    pam_ck_connector.so nox11

Anuncios

Deja un comentario...dicen que es gratis!

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s