Curso Redes Linex 3
Upcoming SlideShare
Loading in...5
×
 

Curso Redes Linex 3

on

  • 1,138 views

 

Statistics

Views

Total Views
1,138
Views on SlideShare
1,137
Embed Views
1

Actions

Likes
0
Downloads
20
Comments
0

1 Embed 1

http://www.slideshare.net 1

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Curso Redes Linex 3 Curso Redes Linex 3 Presentation Transcript

    • Redes en gnuLinex Configuración de servicios (II) Antonio Durán
    • Introducción a la autenticación
      • En Linux, el sistema PAM lleva la autenticación
      • Permite diferentes tipos de autenticación:
        • Contra fichero de usuarios local, directorio LDAP, etc.
      • Antes de ver LDAP, vemos como funciona PAM en general
    • PAM
      • PAM = Pluggable Authentication Modules
      • Colección de librerías que permiten al administrador elegir como se autenticarán los usuarios.
      • Permite cambiar la autenticación que usan las aplicaciones PAM sin necesidad de recompilarlas. Por ejemplo: login, gdm, etc.
    • PAM
      • Configuración:
        • Configuración basada en un solo fichero: /etc/pam.conf
        • Configuración basada en directorios: /etc/pam.d/
      • Módulos: /lib/security
    • PAM
      • PAM trata con cuatro tipos de tareas:
        • Gestión de autenticación
        • Gestión de cuentas
        • Gestión de sesiones
        • Gestión de contraseñas
    • PAM
      • Configuración mediante un único fichero
        • Una entrada por línea 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 opción por omisión para los programas que no tienen entrada específica.
    • PAM
      • Configuración
        • tipo_modulo
          • Uno de los 4 tipos de módulos actuales:
            • auth
            • account
            • session
            • password
    • PAM
      • Tipos de módulo
        • auth
          • Proporciona dos aspectos de la autenticación de usuarios. Primero establece que el usuario es quien dice ser. Segundo, puede otorgar mebresías de grupo independientemente del fichero /etc/groups, u otros privilegios.
    • PAM
      • Tipos de módulo
        • account. Se encarga de la gestión de cuentas no relacionada con la autenticación. Suele usarse para permitir/denegar accesos basandose en la hora/día, recursos del sistema disponibles o la localización del usuario (por ej: root sólo puede hacer login en la consola)
    • PAM
      • Tipos de módulo
        • session. Principalmente este módulo se encarga de las cosas que se deben hacer por el usuario antes/después de que se le conceda el servicio. Estas actividades se refieren, por ejemplo, a la escritura de información de registro sobre la apetura/cierre de sesiones, el montaje de directorios, etc.
    • PAM
      • Tipos de módulo
        • password. Es necesario para actualizar los tokens utilizados para la autenticación. Normalmente hay uno para cada módulo del tipo auth .
    • PAM
      • Configuración
        • bandera de control
          • Se utiliza para indicar como reaccionará la librería PAM al tener éxito o fracaso el módulo al que está asociada.
          • Como los módulos pueden ser apilados, la bandera de control representa la importancia relativa de cada módulo.
          • La aplicación no recibe el resultado de módulos individuales, sino sólo un resultado de la librería.
    • PAM
      • Configuración
        • bandera de control
          • 2 formas de especificar la bandera de control. Vemos sólo la simple (la más usada).
          • Representamos la bandera de control con una sola palabra que indica la severidad de un acierto o fracaso en el módulo. Las cuatro opciones son:
          • required, requisite, sufficient, optional e include.
    • PAM
      • Configuración
        • bandera de control
          • required: Indica que es necesario el éxito de este módulo.
          • requisite: como required, sin embargo si falla no se siguen ejecutando más modulos.
          • suffcient: El éxito de éste módulo se considera como suficiente para conceder el permiso.
          • optional: No es crítico para el éxito o fracaso de la aplicación.
    • PAM
      • Configuración
        • bandera de control
          • include: Indica al sistema PAM que incluya los contenidos del fichero indicado.
        • path_modulo
          • Ruta hacia el módulo.
        • args
          • Argumentos que se pasan al módulo.
    • PAM
      • Configuración
        • Argumentos opcionales generales:
          • debug: información de debug en los logs.
          • no_warn: no dar mensajes de aviso a la aplicación.
          • use_first_pass: El módulo no debe pedir una contraseña al usuario. En cambio, debe usar la contraseña introducida anteriormente en el primer módulo de tipo auth. Si no funciona, el acceso será denegado.
    • PAM
      • Configuración
        • Argumentos opcionales generales:
          • try_first_pass: El módulo debe intentar la autentiacción con la contraseña introducida anteriormente. Si no funciona, se pide otra contraseña al usuario.
          • expose_account: da mas información al usuario sobre las cuentas.
    • PAM
      • Configuración basada en directorios
        • Más flexible
        • Usa los ficheros de /etc/pam.d
        • Cada fichero tiene el nombre de un servicio, que corresponde con la configuración para ese servicio.
        • Formato de las líneas de cada fichero:
          • tipo_modulo bandera_control path_modulo args
    • PAM
      • Configuración basada en directorios. Ventajas:
        • Menos propensa al error.
        • Más facil de mantener.
        • Permite enlazar ficheros.
        • Más rápido.
        • Mejor gestión de permisos.
        • Facilita la administración de paquetes.
    • PAM
      • Configuración 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
      • Versión 1:
        • auth sufficient pam_unix.so
        • auth sufficient pam_ldap.so user_first_pass
      • Versión 2:
        • auth sufficient pam_unix.so
        • auth required pam_ldap.so user_first_pass
    • PAM
      • Descripción de los módulos
        • pam_unix: Módulo de autenticación estandar. Ficheros passwd y shadow.
        • pam_ldap: Autentiación 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: Módulo de autenticación estandar.
    • Práctica
      • Observar la configuración PAM actual
        • /etc/pam.d
          • Fichero gdm controla el acceso gráfico
          • El fichero login controla el acceso por consola
          • Ambos incluyen los ficheros comunes
        • /etc/pam.d/common-auth
          • Fichero común para la autenticación
        • /etc/pam.d/other
          • Configuración PAM para programas sin archivo de configuración específico
    • Autenticación 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 jerárquicamente y basado en atributos.
      • Al usar autenticación 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.
    • Autenticación con LDAP
      • El servicio de directorio LDAP se basa en un modelo cliente-servidor .
      • Uno o más 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 indicación de dónde puede el cliente hallar más información (normalmente otro servidor LDAP).
    • Autenticación con LDAP
      • El modelo de información de LDAP está basado en entradas. Una entrada es una colección de atributos que tienen un único y global Nombre Distinguido (DN).
      • El DN se utiliza para referirse a una entrada sin ambigüedades. Cada atributo de una entrada posee un tipo y uno o más valores.
      • Los tipos son normalmente palabras nemotécnicas, como “ cn ” para common name, o “mail” para una dirección de correo.
      • La sintaxis de los atributos depende del tipo de atributo. Por ejemplo, un atributo cn puede contener el valor “Sergio González”.
    • Autenticación con LDAP
      • En LDAP, las entradas están organizadas en una estructura jerárquica en árbol .
      • Tradicionalmente, esta estructura reflejaba los límites geográficos y organizacionales.
      • Las entradas que representan países aparecen en la parte superior del árbol.
      • Debajo de ellos, están las entradas que representan los estados y las organizaciones nacionales.
    • Autenticación con LDAP
      • Debajo de estás, 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
    • Autenticación con LDAP
    • Autenticación con LDAP
      • Programa servidor: slapd
      • Configuración: /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.
    • Autenticación con LDAP
      • Programa servidor: slapd
      • Configuración: /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.
    • Autenticación 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 configuración de un I.E.S.
    • Autenticación con LDAP
      • Opciones de tunning :
        • maxthreads n: indica el número máximo de hilos simultáneos que puede crear slapd. A este número se añade un hilo controlador y un hilo propio del uso de la librería de hilos estándar.
        • cachesize n: Número de entradas que se mantienen en la caché interna en memoria.
        • dbcachesize n: Tamaño en bytes de la memoria caché interna asociada con cada fichero abierto.
    • Autenticación con LDAP
      • Configuración en los clientes
      • Instalación del software necesario. Antes de poder autenticar a los usuarios a través 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 autenticación de usuarios (comprobación de claves) a aquellas aplicaciones que utilicen PAM.
    • Autenticación con LDAP
      • Configuración en los clientes
      • Instalación del software necesario.
        • nss-ldap permite a un servidor LDAP actuar como un servidor de nombres. Esto significa que provee la información de las cuentas de usuario, los IDs de los grupos, la información de la máquina, los alias, los grupos de red y básicamente cualquier cosa que normalmente se obtiene desde los archivos almacenados bajo /etc o desde un servidor NIS.
    • Autenticación con LDAP
      • Configuración en los clientes
      • /etc/nsswitch.conf
      • nsswitch.conf es el fichero de configuración de las Bases de Datos del Sistema y del sistema de Conmutación 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 búsqueda de la información requerida, por ejemplo, para hacer búsquedas de hosts o usuarios.
    • Autenticación con LDAP
      • Configuración 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 búsqueda(primera columna) seguida del procedimiento que se va a emplear para realizar una búsqueda sobre la misma(columnas siguientes).
      • De esta forma, basta con configurar el procedimiento de búsqueda para que haga uso de LDAP en algún momento:
        • passwd: files ldap
    • Autenticación con LDAP
      • Configuración en los clientes
      • /etc/libnss-ldap.conf
      • Configuración del servidor LDAP al que el cliente conectará. Opciones:
        • host: Indica la dirección del servidor LDAP.
        • base: Nombre distinguido de la base de búsqueda.
        • ldap_version: Número de versión LDAP a usar.
        • binddn: Nombre distinguido con el que hacer bind al servidor.
    • Autenticación con LDAP
      • Configuración en los clientes
      • /etc/libnss-ldap.conf
      • Configuración 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 opción: pam_password. Indica el cifrado a realizar por el cliente antes de enviar la contraseña.
    • Configuración de un servidor LDAP
      • Instalar paquetes necesarios
        • apt-get install slapd
      • Configurar el paquete
        • Omitir configuración (N)
        • DNS Domain Name (pruebas)
        • Nombre organización (cpr)
        • admin password (admin)
        • Permitir LDAP v2 (sí)
    • Configuración de un servidor LDAP
      • Raíz 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
    • Configuración 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”
    • Configuración 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
    • Configuración de un servidor LDAP
      • Pasar la información 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 migración
          • /usr/share/migrationtools/migrate_common.ph
            • DEFAULT_BASE= “dc=pruebas”
    • Configuración de un servidor LDAP
      • Pasar la información 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
    • Configuración 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
    • Configuración de un servidor LDAP
      • Pasar la información 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
    • Configuración 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, contraseña
    • Configuración de un servidor LDAP
      • Ahora modificamos la entrada del usuario que vamos a usar para las pruebas: test
        • Enlace “Buscar”
          • Introducimos test en la búsqueda 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)
    • Configuración de un cliente LDAP
      • Instalación de los paquetes necesarios
        • apt-get install libpam-ldap libnss-ldap
      • Configuración
        • /etc/nsswicth.conf
          • shadow: files ldap
        • /etc/pam_ldap.conf
          • host: IP servidor LDAP
          • base: dc=pruebas
    • Configuración de un cliente LDAP
      • Pasos:
        • Instalación de los paquetes necesarios
        • Configuración de nsswicth y LDAP
        • Creación del directorio personal para el usuario de prueba
        • Reiniciar
        • Comprobar la autenticación
    • Configuración de un cliente LDAP
      • Configuración
        • /etc/libnss-ldap.conf
          • host: IP servidor LDAP
          • base: dc=pruebas
      • Creación del directorio home del usuario test:
        • mkdir /var/home/test
        • chmod 777 /var/home/test
    • Autenticación con LDAP
      • Funcionamiento del protocolo LDAP
        • Cliente -> Servidor BIND REQUEST
        • Servidor -> Cliente BIND RESULT
        • Cliente -> Servidor SEARCH REQUEST
        • Servidor -> Cliente SEARCH ENTRY
        • Servidor -> Cliente SEARCH RESULT
      • Mas información: RFC 2251
    • Autenticación con LDAP
      • Funcionamiento del protocolo LDAP
        • Operación 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/contraseña suministrada al servidor no coincide con las credenciales definidas para hacer bind (en slapd.conf), no se permitirá el acceso.
    • Autenticación con LDAP
      • Funcionamiento del protocolo LDAP
        • Operación SEARCH REQUEST
          • El cliente pide información al servidor
        • Operación SEARCH ENTRY
          • El servidor entrega información al cliente
        • Operación SEARCH RESULT
          • El servidor indica al cliente el resultado de la operación de búsqueda.