curso redes linex 3
TRANSCRIPT
Redes en gnuLinex
Configuracin de servicios (II)Antonio Durn
Introduccin a la autenticacin
En Linux, el sistema PAM lleva la autenticacin
Permite diferentes tipos de autenticacin:
Contra fichero de usuarios local, directorio LDAP, etc.
Antes de ver LDAP, vemos como funciona PAM en general
PAM
PAM = Pluggable Authentication Modules
Coleccin de libreras que permiten al administrador elegir como se autenticarn los usuarios.
Permite cambiar la autenticacin que usan las aplicaciones PAM sin necesidad de recompilarlas. Por ejemplo: login, gdm, etc.
PAM
Configuracin:
Configuracin basada en un solo fichero: /etc/pam.conf
Configuracin basada en directorios: /etc/pam.d/
Mdulos: /lib/security
PAM
PAM trata con cuatro tipos de tareas:
Gestin de autenticacin
Gestin de cuentas
Gestin de sesiones
Gestin de contraseas
PAM
Configuracin mediante un nico fichero
Una entrada por lnea en /etc/pam.conf
nombre_servicio tipo_modulo flag_control path_modulo args
nombre_servicio
El nombre del servicio asociado a la entrada. Suele ser el nombre del programa.
Puede ser 'other' para indicar una opcin por omisin para los programas que no tienen entrada especfica.
PAM
Configuracin
tipo_modulo
Uno de los 4 tipos de mdulos actuales:
auth
account
session
password
PAM
Tipos de mdulo
auth
Proporciona dos aspectos de la autenticacin de usuarios. Primero establece que el usuario es quien dice ser. Segundo, puede otorgar mebresas de grupo independientemente del fichero /etc/groups, u otros privilegios.
PAM
Tipos de mdulo
account. Se encarga de la gestin de cuentas no relacionada con la autenticacin. Suele usarse para permitir/denegar accesos basandose en la hora/da, recursos del sistema disponibles o la localizacin del usuario (por ej: root slo puede hacer login en la consola)
PAM
Tipos de mdulo
session. Principalmente este mdulo se encarga de las cosas que se deben hacer por el usuario antes/despus de que se le conceda el servicio. Estas actividades se refieren, por ejemplo, a la escritura de informacin de registro sobre la apetura/cierre de sesiones, el montaje de directorios, etc.
PAM
Tipos de mdulo
password. Es necesario para actualizar los tokens utilizados para la autenticacin. Normalmente hay uno para cada mdulo del tipo auth.
PAM
Configuracin
bandera de control
Se utiliza para indicar como reaccionar la librera PAM al tener xito o fracaso el mdulo al que est asociada.
Como los mdulos pueden ser apilados, la bandera de control representa la importancia relativa de cada mdulo.
La aplicacin no recibe el resultado de mdulos individuales, sino slo un resultado de la librera.
PAM
Configuracin
bandera de control
2 formas de especificar la bandera de control. Vemos slo la simple (la ms usada).
Representamos la bandera de control con una sola palabra que indica la severidad de un acierto o fracaso en el mdulo. Las cuatro opciones son:
required, requisite, sufficient, optional e include.
PAM
Configuracin
bandera de control
required: Indica que es necesario el xito de este mdulo.
requisite: como required, sin embargo si falla no se siguen ejecutando ms modulos.
suffcient: El xito de ste mdulo se considera como suficiente para conceder el permiso.
optional: No es crtico para el xito o fracaso de la aplicacin.
PAM
Configuracin
bandera de control
include: Indica al sistema PAM que incluya los contenidos del fichero indicado.
path_modulo
Ruta hacia el mdulo.
args
Argumentos que se pasan al mdulo.
PAM
Configuracin
Argumentos opcionales generales:
debug: informacin de debug en los logs.
no_warn: no dar mensajes de aviso a la aplicacin.
use_first_pass: El mdulo no debe pedir una contrasea al usuario. En cambio, debe usar la contrasea introducida anteriormente en el primer mdulo de tipo auth. Si no funciona, el acceso ser denegado.
PAM
Configuracin
Argumentos opcionales generales:
try_first_pass: El mdulo debe intentar la autentiaccin con la contrasea introducida anteriormente. Si no funciona, se pide otra contrasea al usuario.
expose_account: da mas informacin al usuario sobre las cuentas.
PAM
Configuracin basada en directorios
Ms flexible
Usa los ficheros de /etc/pam.d
Cada fichero tiene el nombre de un servicio, que corresponde con la configuracin para ese servicio.
Formato de las lneas de cada fichero:
tipo_modulo bandera_control path_modulo args
PAM
Configuracin basada en directorios. Ventajas:
Menos propensa al error.
Ms facil de mantener.
Permite enlazar ficheros.
Ms rpido.
Mejor gestin de permisos.
Facilita la administracin de paquetes.
PAM
Configuracin basada en directorios.
Ficheros comunes:
common-account
common-auth
common-password
common-session
En lugar de una entrada other en pamd.conf, hay un fichero other que incluye estos cuatro.
PAM
Ejemplos de common-auth
Versin 1:
auth sufficient pam_unix.so
auth sufficient pam_ldap.so user_first_pass
Versin 2:
auth sufficient pam_unix.so
auth required pam_ldap.so user_first_pass
PAM
Descripcin de los mdulos
pam_unix: Mdulo de autenticacin estandar. Ficheros passwd y shadow.
pam_ldap: Autentiacin contra directorios LDAP.
pam_nologin: Encargado de la funcionalidad Unix nologin, que deshabilita la entrada de usuarios que no sean root.
pam_env: Para asignar valores a variables de entorno.
pam_unix_auth: Mdulo de autenticacin estandar.
Prctica
Observar la configuracin PAM actual
/etc/pam.d
Fichero gdm controla el acceso grfico
El fichero login controla el acceso por consola
Ambos incluyen los ficheros comunes
/etc/pam.d/common-auth
Fichero comn para la autenticacin
/etc/pam.d/other
Configuracin PAM para programas sin archivo de configuracin especfico
Autenticacin con LDAP
LDAP: Lightweight Directory Access Protocol.
LDAP es un protocol de acceso a un servicio de directorio.
Basicamente es como una base de datos, pero organizado jerrquicamente y basado en atributos.
Al usar autenticacin LDAP, simplemente sustituimos las consultas sobre usuarios a la BD local (ficheros passwd y shadow) por consultas al servidor LDAP. PAM se encarga de ello.
Autenticacin con LDAP
El servicio de directorio LDAP se basa en un modelo cliente-servidor.
Uno o ms servidores LDAP contienen los datos que conforman el rbol del directorio LDAP o base de datos troncal.
El cliente ldap se conecta con el servidor LDAP y le hace una consulta.
El servidor contesta con la respuesta correspondiente, o bien con una indicacin de dnde puede el cliente hallar ms informacin (normalmente otro servidor LDAP).
Autenticacin con LDAP
El modelo de informacin de LDAP est basado en entradas. Una entrada es una coleccin de atributos que tienen un nico y global Nombre Distinguido (DN).
El DN se utiliza para referirse a una entrada sin ambigedades. Cada atributo de una entrada posee un tipo y uno o ms valores.
Los tipos son normalmente palabras nemotcnicas, como cn para common name, o mail para una direccin de correo.
La sintaxis de los atributos depende del tipo de atributo. Por ejemplo, un atributo cn puede contener el valor Sergio Gonzlez.
Autenticacin con LDAP
En LDAP, las entradas estn organizadas en una estructura jerrquica en rbol.
Tradicionalmente, esta estructura reejaba los lmites geogrcos y organizacionales.
Las entradas que representan pases aparecen en la parte superior del rbol.
Debajo de ellos, estn las entradas que representan los estados y las organizaciones nacionales.
Autenticacin con LDAP
Debajo de ests, pueden estar las entradas que representan las unidades organizacionales, empleados, impresoras, documentos o todo aquello que pueda imaginarse.
En nuestro caso tenemos:
dc=ex
dc=instituto
ou=People, ou=Groups,cn=admin,cn=cliente
uid=alb | cn=ALE
dn: uid=alb,ou=People,dc=instituto,dc=ex
Autenticacin con LDAP
Autenticacin con LDAP
Programa servidor: slapd
Configuracin: /etc/ldap/slapd.conf
Para conocer todas las opciones:
$man 5 slapd.conf
Opciones importantes:
replogfile: Fichero de logs del servidor.
loglevel: Nivel de detalle en los logs. Dejar a 0 para mejorar el rendimiento.
database: estilo de BD. Usamos ldbm.
Autenticacin con LDAP
Programa servidor: slapd
Configuracin: /etc/ldap/slapd.conf
Opciones importantes:
sufix: La base del directorio.
directory: donde se almacena fisicamente la BD.
access: indican permisos para diferentes acciones y usuarios.
Autenticacin con LDAP
Control de acceso. Indica:
Atributos a los que se concede acceso.
A que usuarios ser permite cada acceso.
El tipo de acceso concedido.
Vemos ejemplos en los ficheros de configuracin de un I.E.S.
Autenticacin con LDAP
Opciones de tunning:
maxthreads n: indica el nmero mximo de hilos simultneos que puede crear slapd. A este nmero se aade un hilo controlador y un hilo propio del uso de la librera de hilos estndar.
cachesize n: Nmero de entradas que se mantienen en la cach interna en memoria.
dbcachesize n: Tamao en bytes de la memoria cach interna asociada con cada fichero abierto.
Autenticacin con LDAP
Configuracin en los clientes
Instalacin del software necesario. Antes de poder autenticar a los usuarios a travs de un servidor LDAP, es necesario instalar algunas utilidades en el cliente, como pam_ldap y nss_ldap.
pam_ldap permite hacer uso de un servidor LDAP para la autenticacin de usuarios (comprobacin de claves) a aquellas aplicaciones que utilicen PAM.
Autenticacin con LDAP
Configuracin en los clientes
Instalacin del software necesario.
nss-ldap permite a un servidor LDAP actuar como un servidor de nombres. Esto significa que provee la informacin de las cuentas de usuario, los IDs de los grupos, la informacin de la mquina, los alias, los grupos de red y bsicamente cualquier cosa que normalmente se obtiene desde los archivos almacenados bajo /etc o desde un servidor NIS.
Autenticacin con LDAP
Configuracin en los clientes
/etc/nsswitch.conf
nsswitch.conf es el fichero de configuracin de las Bases de Datos del Sistema y del sistema de Conmutacin de los Servicios de Nombres (Name Service Switch).
En otras palabras, es un archivo que indica el orden y el procedimiento a seguir para la bsqueda de la informacin requerida, por ejemplo, para hacer bsquedas de hosts o usuarios.
Autenticacin con LDAP
Configuracin en los clientes
/etc/nsswitch.conf
La forma de configurar este archivo es muy simple:
Primero se especifica la base de datos sujeta a la bsqueda(primera columna) seguida del procedimiento que se va a emplear para realizar una bsqueda sobre la misma(columnas siguientes).
De esta forma, basta con configurar el procedimiento de bsqueda para que haga uso de LDAP en algn momento:
passwd: files ldap
Autenticacin con LDAP
Configuracin en los clientes
/etc/libnss-ldap.conf
Configuracin del servidor LDAP al que el cliente conectar. Opciones:
host: Indica la direccin del servidor LDAP.
base: Nombre distinguido de la base de bsqueda.
ldap_version: Nmero de versin LDAP a usar.
binddn: Nombre distinguido con el que hacer bind al servidor.
Autenticacin con LDAP
Configuracin en los clientes
/etc/libnss-ldap.conf
Configuracin del servidor LDAP al que el cliente conectar. Opciones:
bindpw: Las credenciales con las que hacer bind.
/etc/pam-ldap.conf
Mismo contenido que libnss-ldap.conf
Nueva opcin: pam_password. Indica el cifrado a realizar por el cliente antes de enviar la contrasea.
Configuracin de un servidor LDAP
Instalar paquetes necesarios
apt-get install slapd
Configurar el paquete
Omitir configuracin (N)
DNS Domain Name (pruebas)
Nombre organizacin (cpr)
admin password (admin)
Permitir LDAP v2 (s)
Configuracin de un servidor LDAP
Raz de nuestro directorio
dc=pruebas
Dn del usuario admin
cn=admin,dc=pruebas
Configurar el servidor: /etc/ldap/slapd.conf
Acceso total a todo para el administrador
Acceso de lectura a todo para el resto
Configuracin de un servidor LDAP
phpldapadmin
Acceso al servidor LDAP por interfaz web
login/password de admin
A la izquierda, podemos expandir el directorio, tal y como est ahora
Vamos a crear algunos elementos necesarios:
ou=Group, para agrupar los grupos
ou=People, par agrupar a los usuarios
Lo hacemos con el enlace Crear nuevo objeto
Configuracin de un servidor LDAP
phpldapadmin
Crear ou=Group
Plantilla: Organizational Unit
Ou: Group
Nos queda su dn: ou=Group,dc=pruebas
Crear ou=People
Plantilla: Organizational Unit
Ou: People
Nos queda su dn: ou=People,dc=pruebas
Configuracin de un servidor LDAP
Pasar la informacin de la base de datos local de usuarios y grupos a LDAP
Instalar paquete necesario
apt-get install migrationtools
Configurar los datos de nuestro servidor en las utilidades de migracin
/usr/share/migrationtools/migrate_common.ph
DEFAULT_BASE= dc=pruebas
Configuracin de un servidor LDAP
Pasar la informacin de la base de datos local de usuarios y grupos a LDAP
Convertir los datos de passwd y group al formato LDIF:
cd /usr/share/migrationtools
./migrate_passwd.pl /etc/passwd usuarios.ldif
./migrate_group.pl /etc/group grupos.ldif
Obtenemos los ficheros usuarios.ldif y grupos.ldif
Configuracin de un servidor LDAP
Fragmento de fichero ldif:
dn: uid=root,ou=People,dc=pruebas
uid: root
cn::cm9vdA==
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$1$btERS/EE$l6bMnEg3Yiyt4g0D7u6Yq.
shadowLastChange: 12809
shadowMax: 99999
Configuracin de un servidor LDAP
Pasar la informacin de los ficheros ldif al servidor LDAP
/usr/bin/ldapadd -x -c -D "cn=admin,dc=pruebas" -w admin -h IP_SERVIDOR -f usuarios.ldif
/usr/bin/ldapadd -x -c -D "cn=admin,dc=pruebas" -w admin -h IP_SERVIDOR -f grupos.ldif
Configuracin de un servidor LDAP
Salimos y volvemos a entrar en phpldapadmin, y vemos que ahora People y Group tienen multitud de entradas cada una. Seleccionando una, vemos sus detalles:
Grupo: gid
Usuario: uid, gid, directorio personal, contrasea
Configuracin de un servidor LDAP
Ahora modificamos la entrada del usuario que vamos a usar para las pruebas: test
Enlace Buscar
Introducimos test en la bsqueda por uid
Seleccionamos el resultado para acceder a su entrada
Modificamos el valor de homeDirectory a /var/home/test (porque no vamos a usar NFS)
Configuracin de un cliente LDAP
Instalacin de los paquetes necesarios
apt-get install libpam-ldap libnss-ldap
Configuracin
/etc/nsswicth.conf
shadow: files ldap
/etc/pam_ldap.conf
host: IP servidor LDAP
base: dc=pruebas
Configuracin de un cliente LDAP
Pasos:
Instalacin de los paquetes necesarios
Configuracin de nsswicth y LDAP
Creacin del directorio personal para el usuario de prueba
Reiniciar
Comprobar la autenticacin
Configuracin de un cliente LDAP
Configuracin
/etc/libnss-ldap.conf
host: IP servidor LDAP
base: dc=pruebas
Creacin del directorio home del usuario test:
mkdir /var/home/test
chmod 777 /var/home/test
Autenticacin con LDAP
Funcionamiento del protocolo LDAP
Cliente -> ServidorBIND REQUEST
Servidor -> Cliente BIND RESULT
Cliente -> ServidorSEARCH REQUEST
Servidor -> ClienteSEARCH ENTRY
Servidor -> Cliente SEARCH RESULT
Mas informacin: RFC 2251
Autenticacin con LDAP
Funcionamiento del protocolo LDAP
Operacin BIND.
Sirve para conectar a un servidor LDAP. Normalmente protegemos el acceso al servidor LDAP, de modo que solo clientes que conocen la bind password (bindpw) pueden conectarse.
Si el par usuario/contrasea suministrada al servidor no coincide con las credenciales definidas para hacer bind (en slapd.conf), no se permitir el acceso.
Autenticacin con LDAP
Funcionamiento del protocolo LDAP
Operacin SEARCH REQUEST
El cliente pide informacin al servidor
Operacin SEARCH ENTRY
El servidor entrega informacin al cliente
Operacin SEARCH RESULT
El servidor indica al cliente el resultado de la operacin de bsqueda.