Curso Avanzado de  Administradores Seguridad en sistemas GNU/Linux: Acceso a sistemas Antonio Durán Terrés
Contenidos <ul><li>Entrada al sistema de los usuarios </li></ul><ul><ul><li>Ficheros Unix </li></ul></ul><ul><ul><li>Conce...
Ficheros Unix <ul><li>/etc/passwd </li></ul><ul><ul><li>Cuentas de los usuarios del sistema, incluyendo sus contraseñas si...
Ficheros Unix <ul><li>/etc/passwd </li></ul><ul><ul><li>Cuentas de los usuarios del sistema, incluyendo sus contraseñas si...
Ficheros Unix <ul><li>En la actualidad, el algoritmo de cifrado de claves más usado es MD5, que obtiene a partir de la cla...
Ficheros Unix <ul><li>El algorimto de hash es de sólo de ida, lo que significa que a partir del hash no se puede obtener l...
PAM <ul><li>PAM = Pluggable Authentication Modules </li></ul><ul><li>Colección de librerías que permiten al administrador ...
PAM <ul><li>Objetivo: separar el SW dedicado a otorgar privilegios del SW dedicado a desarrollar sistemas de autenticación...
PAM <ul><li>PAM trata con cuatro tipos de tareas: </li></ul><ul><ul><li>Gestión de autenticación </li></ul></ul><ul><ul><l...
PAM <ul><li>En los I.E.S. se usa configuración basada en directorios </li></ul><ul><ul><li>Usa los ficheros de /etc/pam.d ...
PAM <ul><li>Configuración </li></ul><ul><ul><li>tipo_modulo </li></ul></ul><ul><ul><ul><li>Uno de los 4 tipos de módulos a...
PAM <ul><li>Tipos de módulo </li></ul><ul><ul><li>auth </li></ul></ul><ul><ul><ul><li>Proporciona dos aspectos de la auten...
PAM <ul><li>Tipos de módulo </li></ul><ul><ul><li>account. Se encarga de la gestión de cuentas no relacionada con la auten...
PAM <ul><li>Tipos de módulo </li></ul><ul><ul><li>session. Principalmente este módulo se encarga de las cosas que se deben...
PAM <ul><li>Tipos de módulo </li></ul><ul><ul><li>password. Es necesario para actualizar los tokens utilizados para la aut...
PAM <ul><li>Configuración </li></ul><ul><ul><li>bandera de control </li></ul></ul><ul><ul><ul><li>Se utiliza para indicar ...
PAM <ul><li>Configuración </li></ul><ul><ul><li>bandera de control </li></ul></ul><ul><ul><ul><li>2 formas de especificar ...
PAM <ul><li>Configuración </li></ul><ul><ul><li>bandera de control </li></ul></ul><ul><ul><ul><li>required: Indica que es ...
PAM <ul><li>Configuración </li></ul><ul><ul><li>bandera de control </li></ul></ul><ul><ul><ul><li>include: Indica al siste...
PAM <ul><li>Configuración </li></ul><ul><ul><li>Argumentos opcionales generales: </li></ul></ul><ul><ul><ul><li>debug: inf...
PAM <ul><li>Configuración </li></ul><ul><ul><li>Argumentos opcionales generales: </li></ul></ul><ul><ul><ul><li>try_first_...
PAM <ul><li>Programas sin fichero asociado en pam.d/ </li></ul><ul><li>En lugar de una entrada other en pamd.conf, hay un ...
PAM <ul><li>Ejemplos de common-auth usados en los clientes </li></ul><ul><li>Versión 1: </li></ul><ul><ul><li>auth suffici...
PAM <ul><li>Descripción de los módulos </li></ul><ul><ul><li>pam_unix: Módulo de autenticación estandar. Ficheros passwd y...
Autenticación con LDAP <ul><li>LDAP: Lightweight Directory Access Protocol. </li></ul><ul><li>LDAP es un protocol de acces...
Autenticación con LDAP <ul><li>El servicio de directorio LDAP se basa en un modelo  cliente-servidor .  </li></ul><ul><li>...
Autenticación con LDAP <ul><li>El modelo de información de LDAP está basado en entradas. Una entrada es una colección de a...
Autenticación con LDAP <ul><li>En LDAP, las entradas están organizadas en una estructura  jerárquica en árbol . </li></ul>...
Autenticación con LDAP <ul><li>Debajo de estás, pueden estar las entradas que representan las unidades organizacionales, e...
Autenticación con LDAP
Autenticación con LDAP <ul><li>Programa servidor: slapd </li></ul><ul><li>Configuración: /etc/ldap/slapd.conf </li></ul><u...
Autenticación con LDAP <ul><li>Programa servidor: slapd </li></ul><ul><li>Configuración: /etc/ldap/slapd.conf </li></ul><u...
Autenticación con LDAP <ul><li>Control de acceso. Indica: </li></ul><ul><ul><li>Atributos a los que se concede acceso. </l...
Autenticación con LDAP <ul><li>Para importar y exportar información de directorio entre servidores de directorios basados ...
Autenticación con LDAP <ul><li>Fragmento de fichero ldif: </li></ul><ul><li>dn: uid=root,ou=People,dc=elbrocense,dc=ex </l...
Autenticación con LDAP <ul><li>Ejemplo: preparación de un servidor alternativo de LDAP con una réplica del real. </li></ul...
Autenticación con LDAP <ul><li>Actualización del directorio en los I.E.S. </li></ul><ul><ul><li>Actualización por phpldapa...
Autenticación con LDAP <ul><li>Actualización del directorio en los I.E.S. </li></ul><ul><ul><li>/usr/bin/migrar </li></ul>...
Autenticación con LDAP <ul><li>Actualización del directorio en los I.E.S. </li></ul><ul><ul><li>/usr/bin/migrar </li></ul>...
Autenticación con LDAP <ul><li>Configuración en los clientes </li></ul><ul><li>Instalación del software necesario.  Antes ...
Autenticación con LDAP <ul><li>Configuración en los clientes </li></ul><ul><li>Instalación del software necesario. </li></...
Autenticación con LDAP <ul><li>Configuración en los clientes </li></ul><ul><li>/etc/nsswitch.conf </li></ul><ul><li>nsswit...
Autenticación con LDAP <ul><li>Configuración en los clientes </li></ul><ul><li>/etc/nsswitch.conf </li></ul><ul><li>La for...
Autenticación con LDAP <ul><li>Configuración en los clientes </li></ul><ul><li>/etc/libnss-ldap.conf </li></ul><ul><li>Con...
Autenticación con LDAP <ul><li>Configuración en los clientes </li></ul><ul><li>/etc/libnss-ldap.conf </li></ul><ul><li>Con...
Autenticación con LDAP <ul><li>Funcionamiento del protocolo LDAP </li></ul><ul><ul><li>Cliente -> Servidor BIND REQUEST </...
Autenticación con LDAP <ul><li>Funcionamiento del protocolo LDAP </li></ul><ul><ul><li>Operación BIND. </li></ul></ul><ul>...
Autenticación con LDAP <ul><li>Funcionamiento del protocolo LDAP </li></ul><ul><ul><li>Operación SEARCH REQUEST </li></ul>...
Seguridad física <ul><li>Servidor </li></ul><ul><ul><ul><li>Lugar de acceso restringido </li></ul></ul></ul><ul><ul><ul><l...
Seguridad física <ul><li>Clientes </li></ul><ul><ul><li>Instruir a los usuarios para no dejar sesiones abiertas </li></ul>...
Seguridad física <ul><li>Clientes </li></ul><ul><ul><li>No permitir acceso de root desde las consolas </li></ul></ul><ul><...
Seguridad física <ul><li>BIOS </li></ul><ul><ul><li>Desactivar arranque desde medios removibles </li></ul></ul><ul><ul><li...
Seguridad física <ul><li>GRUB </li></ul><ul><ul><li>Activar la contraseña en GRUB para que sea necesario introducirla para...
Seguridad física <ul><li>Contraseña de GRUB </li></ul><ul><ul><li>Ejecutar: </li></ul></ul><ul><ul><ul><li># /sbin/grub-md...
Asegurando PAM <ul><li>Tener un /etc/pam.d/other fuerte </li></ul><ul><ul><li>Este fichero se aplica a programas que no ti...
Asegurando PAM <ul><li>Otra posibilidad menos paranoica es: </li></ul><ul><ul><li>auth required pam_unix.so </li></ul></ul...
Asegurando PAM <ul><li>Eliminar accesos sin contraseña </li></ul><ul><ul><li>No usar nullok en los módulos de autenticació...
Asegurando LDAP <ul><li>El acceso al servidor LDAP está restringido por la bind password, que permite iniciar el diálogo <...
Contraseñas seguras <ul><li>Riesgo de que usuarios no autorizados accedan a información confidencial si averiguan la contr...
Contraseñas seguras <ul><li>Métodos </li></ul><ul><ul><li>Curar: Usar herramientas que comprueban la calidad de las contra...
Contraseñas por defecto <ul><li>Algunos programas necesitan para funcionar usuarios locales en los clientes </li></ul><ul>...
Seguridad de ficheros y sistemas de ficheros <ul><li>No permitir programas SUID/SGID en los directorios de los usuarios </...
Seguridad de ficheros y sistemas de ficheros <ul><li>Configurar en el servidor /etc/exports del modo más restrictivo posib...
Seguridad de ficheros y sistemas de ficheros <ul><li>La lista de programas SUID instalados en el sistema debe ser controla...
Seguridad de ficheros y sistemas de ficheros <ul><li>Los ficheros .rhosts son peligrosos, ya que permiten el acceso sin pe...
Seguridad de ficheros y sistemas de ficheros <ul><li>Configurar los directorios personales de los usuarios con permisos só...
Seguridad de ficheros y sistemas de ficheros <ul><li>Instruir a los usuarios sobre el funcionamiento del sistema de usuari...
Upcoming SlideShare
Loading in …5
×

Curso Avanzado Seguridad Acceso

2,553 views

Published on

1 Comment
2 Likes
Statistics
Notes
  • He descargado este material pero no se como verlo localmente en mi PC
    alguien me podria ayudar!
    Thanks
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
2,553
On SlideShare
0
From Embeds
0
Number of Embeds
83
Actions
Shares
0
Downloads
162
Comments
1
Likes
2
Embeds 0
No embeds

No notes for slide

Curso Avanzado Seguridad Acceso

  1. 1. Curso Avanzado de Administradores Seguridad en sistemas GNU/Linux: Acceso a sistemas Antonio Durán Terrés
  2. 2. Contenidos <ul><li>Entrada al sistema de los usuarios </li></ul><ul><ul><li>Ficheros Unix </li></ul></ul><ul><ul><li>Conceptos generales sobre PAM </li></ul></ul><ul><ul><li>Autenticación con LDAP </li></ul></ul><ul><li>Asegurando la autenticación de usuarios </li></ul><ul><ul><li>Seguridad física </li></ul></ul><ul><ul><li>PAM </li></ul></ul><ul><ul><li>LDAP </li></ul></ul><ul><ul><li>Contraseñas </li></ul></ul>
  3. 3. Ficheros Unix <ul><li>/etc/passwd </li></ul><ul><ul><li>Cuentas de los usuarios del sistema, incluyendo sus contraseñas si no se usan shadow passwords. </li></ul></ul><ul><ul><li>Este fichero es legible por todos los usuarios </li></ul></ul><ul><li>/etc/shadow </li></ul><ul><ul><li>Contraseñas cifradas de los usuarios, si se usan shadow passwords. </li></ul></ul><ul><ul><li>Este fichero solo es accesible para root </li></ul></ul>
  4. 4. Ficheros Unix <ul><li>/etc/passwd </li></ul><ul><ul><li>Cuentas de los usuarios del sistema, incluyendo sus contraseñas si no se usan shadow passwords. </li></ul></ul><ul><li>/etc/shadow </li></ul><ul><ul><li>Contraseñas cifradas de los usuarios, si se usan shadow passwords. </li></ul></ul><ul><li>En la actualidad, el algoritmo de cifrado de claves más usado es MD5, que obtiene a partir de la clave un hash de 16 bytes. </li></ul>
  5. 5. Ficheros Unix <ul><li>En la actualidad, el algoritmo de cifrado de claves más usado es MD5, que obtiene a partir de la clave un hash de 16 bytes. </li></ul><ul><li>El algorimto de hash es de sólo de ida, lo que significa que a partir del hash no se puede obtener la clave. </li></ul><ul><li>Aunque en los sistemas GNU/Linux modernos siempre se activan por defecto contraseñas MD5, en algunas instalaciones de LDAP de los I.E.S. se usa crypt, que es un algoritmo mucho más débil </li></ul>
  6. 6. Ficheros Unix <ul><li>El algorimto de hash es de sólo de ida, lo que significa que a partir del hash no se puede obtener la clave. </li></ul><ul><li>Este mismo algoritmo se usa para verificar los paquetes que bajamos de Internet </li></ul><ul><li>Aunque en los sistemas GNU/Linux modernos siempre se activan por defecto contraseñas MD5, en algunas instalaciones de LDAP de los I.E.S. se usa crypt, que es un algoritmo mucho más débil </li></ul>
  7. 7. PAM <ul><li>PAM = Pluggable Authentication Modules </li></ul><ul><li>Colección de librerías que permiten al administrador elegir como se autenticarán los usuarios. </li></ul><ul><li>Permite cambiar la autenticación que usan las aplicaciones PAM sin necesidad de recompilarlas. Por ejemplo: login, gdm, etc. </li></ul>
  8. 8. PAM <ul><li>Objetivo: separar el SW dedicado a otorgar privilegios del SW dedicado a desarrollar sistemas de autenticación seguros y apropiados. </li></ul><ul><li>Configuración: </li></ul><ul><ul><li>Configuración basada en un solo fichero: /etc/pam.conf </li></ul></ul><ul><ul><li>Configuración basada en directorios: /etc/pam.d/ </li></ul></ul><ul><li>Módulos: /lib/security </li></ul>
  9. 9. PAM <ul><li>PAM trata con cuatro tipos de tareas: </li></ul><ul><ul><li>Gestión de autenticación </li></ul></ul><ul><ul><li>Gestión de cuentas </li></ul></ul><ul><ul><li>Gestión de sesiónes </li></ul></ul><ul><ul><li>Gestión de contraseñas </li></ul></ul>
  10. 10. PAM <ul><li>En los I.E.S. se usa configuración basada en directorios </li></ul><ul><ul><li>Usa los ficheros de /etc/pam.d </li></ul></ul><ul><ul><li>Cada fichero tiene el nombre de un servicio, que corresponde con la configuración para ese servicio. </li></ul></ul><ul><ul><li>Formato de las líneas de cada fichero: </li></ul></ul><ul><ul><ul><li>tipo_modulo bandera_control path_modulo args </li></ul></ul></ul>
  11. 11. PAM <ul><li>Configuración </li></ul><ul><ul><li>tipo_modulo </li></ul></ul><ul><ul><ul><li>Uno de los 4 tipos de módulos actuales: </li></ul></ul></ul><ul><ul><ul><ul><li>auth </li></ul></ul></ul></ul><ul><ul><ul><ul><li>account </li></ul></ul></ul></ul><ul><ul><ul><ul><li>session </li></ul></ul></ul></ul><ul><ul><ul><ul><li>password </li></ul></ul></ul></ul>
  12. 12. PAM <ul><li>Tipos de módulo </li></ul><ul><ul><li>auth </li></ul></ul><ul><ul><ul><li>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. </li></ul></ul></ul>
  13. 13. PAM <ul><li>Tipos de módulo </li></ul><ul><ul><li>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) </li></ul></ul>
  14. 14. PAM <ul><li>Tipos de módulo </li></ul><ul><ul><li>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. </li></ul></ul>
  15. 15. PAM <ul><li>Tipos de módulo </li></ul><ul><ul><li>password. Es necesario para actualizar los tokens utilizados para la autenticación. Normalmente hay uno para cada módulo del tipo auth . </li></ul></ul>
  16. 16. PAM <ul><li>Configuración </li></ul><ul><ul><li>bandera de control </li></ul></ul><ul><ul><ul><li>Se utiliza para indicar como reaccionará la librería PAM al tener éxito o fracaso el módulo al que está asociada. </li></ul></ul></ul><ul><ul><ul><li>Como los módulos pueden ser apilados, la bandera de control representa la importancia relativa de cada módulo. </li></ul></ul></ul><ul><ul><ul><li>La aplicación no recibe el resultado de módulos individuales, sino sólo un resultado de la librería. </li></ul></ul></ul>
  17. 17. PAM <ul><li>Configuración </li></ul><ul><ul><li>bandera de control </li></ul></ul><ul><ul><ul><li>2 formas de especificar la bandera de control. Vemos sólo la simple (la que usamos en los IES). </li></ul></ul></ul><ul><ul><ul><li>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: </li></ul></ul></ul><ul><ul><ul><li>required, requisite, sufficient, optional e include. </li></ul></ul></ul>
  18. 18. PAM <ul><li>Configuración </li></ul><ul><ul><li>bandera de control </li></ul></ul><ul><ul><ul><li>required: Indica que es necesario el éxito de este módulo. </li></ul></ul></ul><ul><ul><ul><li>requisite: como required, sin embargo si falla no se siguen ejecutando más modulos. </li></ul></ul></ul><ul><ul><ul><li>suffcient: El éxito de éste módulo se considera como suficiente para conceder el permiso. </li></ul></ul></ul><ul><ul><ul><li>optional: No es crítico para el éxito o fracaso de la aplicación. </li></ul></ul></ul>
  19. 19. PAM <ul><li>Configuración </li></ul><ul><ul><li>bandera de control </li></ul></ul><ul><ul><ul><li>include: Indica al sistema PAM que incluya los contenidos del fichero indicado. </li></ul></ul></ul><ul><ul><li>path_modulo </li></ul></ul><ul><ul><ul><li>Ruta hacia el módulo. </li></ul></ul></ul><ul><ul><li>args </li></ul></ul><ul><ul><ul><li>Argumentos que se pasan al módulo. </li></ul></ul></ul>
  20. 20. PAM <ul><li>Configuración </li></ul><ul><ul><li>Argumentos opcionales generales: </li></ul></ul><ul><ul><ul><li>debug: información de debug en los logs. </li></ul></ul></ul><ul><ul><ul><li>no_warn: no dar mensajes de aviso a la aplicación. </li></ul></ul></ul><ul><ul><ul><li>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. </li></ul></ul></ul>
  21. 21. PAM <ul><li>Configuración </li></ul><ul><ul><li>Argumentos opcionales generales: </li></ul></ul><ul><ul><ul><li>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. </li></ul></ul></ul><ul><ul><ul><li>expose_account: da mas información al usuario sobre las cuentas. </li></ul></ul></ul>
  22. 22. PAM <ul><li>Programas sin fichero asociado en pam.d/ </li></ul><ul><li>En lugar de una entrada other en pamd.conf, hay un fichero other que incluye estos cuatro : </li></ul><ul><ul><li>common-account </li></ul></ul><ul><ul><li>common-auth </li></ul></ul><ul><ul><li>common-password </li></ul></ul><ul><ul><li>common-session </li></ul></ul>
  23. 23. PAM <ul><li>Ejemplos de common-auth usados en los clientes </li></ul><ul><li>Versión 1: </li></ul><ul><ul><li>auth sufficient pam_unix.so </li></ul></ul><ul><ul><li>auth sufficient pam_ldap.so user_first_pass </li></ul></ul><ul><li>Versión 2: </li></ul><ul><ul><li>auth sufficient pam_unix.so </li></ul></ul><ul><ul><li>auth required pam_ldap.so user_first_pass </li></ul></ul>
  24. 24. PAM <ul><li>Descripción de los módulos </li></ul><ul><ul><li>pam_unix: Módulo de autenticación estandar. Ficheros passwd y shadow. </li></ul></ul><ul><ul><li>pam_ldap: Autentiación contra directorios LDAP. </li></ul></ul><ul><ul><li>pam_nologin: Encargado de la funcionalidad Unix nologin, que deshabilita la entrada de usuarios que no sean root. </li></ul></ul><ul><ul><li>pam_env: Para asignar valores a variables de entorno. </li></ul></ul><ul><ul><li>pam_unix_auth: Módulo de autenticación estandar. </li></ul></ul>
  25. 25. Autenticación con LDAP <ul><li>LDAP: Lightweight Directory Access Protocol. </li></ul><ul><li>LDAP es un protocol de acceso a un servicio de directorio. </li></ul><ul><li>Basicamente es como una base de datos, pero organizado jerárquicamente y basado en atributos. </li></ul><ul><li>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. </li></ul>
  26. 26. Autenticación con LDAP <ul><li>El servicio de directorio LDAP se basa en un modelo cliente-servidor . </li></ul><ul><li>Uno o más servidores LDAP contienen los datos que conforman el árbol del directorio LDAP o base de datos troncal. </li></ul><ul><li>El cliente ldap se conecta con el servidor LDAP y le hace una consulta. </li></ul><ul><li>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). </li></ul>
  27. 27. Autenticación con LDAP <ul><li>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). </li></ul><ul><li>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. </li></ul><ul><li>Los tipos son normalmente palabras nemotécnicas, como “ cn ” para common name, o “mail” para una dirección de correo. </li></ul><ul><li>La sintaxis de los atributos depende del tipo de atributo. Por ejemplo, un atributo cn puede contener el valor “Sergio González”. </li></ul>
  28. 28. Autenticación con LDAP <ul><li>En LDAP, las entradas están organizadas en una estructura jerárquica en árbol . </li></ul><ul><li>Tradicionalmente, esta estructura reflejaba los límites geográficos y organizacionales. </li></ul><ul><li>Las entradas que representan países aparecen en la parte superior del árbol. </li></ul><ul><li>Debajo de ellos, están las entradas que representan los estados y las organizaciones nacionales. </li></ul>
  29. 29. Autenticación con LDAP <ul><li>Debajo de estás, pueden estar las entradas que representan las unidades organizacionales, empleados, impresoras, documentos o todo aquello que pueda imaginarse. </li></ul><ul><li>En nuestro caso tenemos: </li></ul><ul><ul><li>dc=ex </li></ul></ul><ul><ul><li>dc=instituto </li></ul></ul><ul><ul><li>ou=People, ou=Groups </li></ul></ul>
  30. 30. Autenticación con LDAP
  31. 31. Autenticación con LDAP <ul><li>Programa servidor: slapd </li></ul><ul><li>Configuración: /etc/ldap/slapd.conf </li></ul><ul><li>Para conocer todas las opciones: </li></ul><ul><ul><li>$man 5 slapd.conf </li></ul></ul><ul><li>Opciones importantes: </li></ul><ul><ul><li>replogfile: Fichero de logs del servidor. </li></ul></ul><ul><ul><li>loglevel: Nivel de detalle en los logs. Dejar a 0 para mejorar el rendimiento. </li></ul></ul><ul><ul><li>database: estilo de BD. Usamos ldbm. </li></ul></ul>
  32. 32. Autenticación con LDAP <ul><li>Programa servidor: slapd </li></ul><ul><li>Configuración: /etc/ldap/slapd.conf </li></ul><ul><li>Opciones importantes: </li></ul><ul><ul><li>sufix: La base del directorio. </li></ul></ul><ul><ul><li>directory: donde se almacena fisicamente la BD. </li></ul></ul><ul><ul><li>access: indican permisos para diferentes acciones y usuarios. </li></ul></ul>
  33. 33. Autenticación con LDAP <ul><li>Control de acceso. Indica: </li></ul><ul><ul><li>Atributos a los que se concede acceso. </li></ul></ul><ul><ul><li>A que usuarios ser permite cada acceso. </li></ul></ul><ul><ul><li>El tipo de acceso concedido. </li></ul></ul><ul><li>Vemos la configuración de los I.E.S. </li></ul>
  34. 34. Autenticación con LDAP <ul><li>Para importar y exportar información de directorio entre servidores de directorios basados en LDAP, o para describir una serie de cambios que han de aplicarse al directorio, se usa en general del fichero de formato conocido como LDIF (siglas de &quot;LDAP interchange format&quot;, «formato de intercambio de LDAP»). </li></ul><ul><li>Un fichero LDIF almacena información en jerarquías de entradas orientadas a objeto. </li></ul>
  35. 35. Autenticación con LDAP <ul><li>Fragmento de fichero ldif: </li></ul><ul><li>dn: uid=root,ou=People,dc=elbrocense,dc=ex </li></ul><ul><li>uid: root </li></ul><ul><li>cn::cm9vdA== </li></ul><ul><li>objectClass: account </li></ul><ul><li>objectClass: posixAccount </li></ul><ul><li>objectClass: top </li></ul><ul><li>objectClass: shadowAccount </li></ul><ul><li>userPassword: {crypt}$1$btERS/EE$l6bMnEg3Yiyt4g0D7u6Yq. </li></ul><ul><li>shadowLastChange: 12809 </li></ul><ul><li>shadowMax: 99999 </li></ul>
  36. 36. Autenticación con LDAP <ul><li>Ejemplo: preparación de un servidor alternativo de LDAP con una réplica del real. </li></ul><ul><ul><li>Parar slapd y sacar los datos de la BD actual, mediante slapcat. </li></ul></ul><ul><ul><li>Editar el fichero ldif de forma que preserve un orden lógico en la creación de entradas. Esto es necesario porque no puedes añadir entradas hijas de entradas no creadas. Al usar muy poca ramificación en los IES, es facil hacer esto manualmente. </li></ul></ul><ul><ul><li>Instalar slapd en el servidor alternativo y pararlo. </li></ul></ul><ul><ul><li>Introducir los nuevos datos mediante slapadd. </li></ul></ul>
  37. 37. Autenticación con LDAP <ul><li>Actualización del directorio en los I.E.S. </li></ul><ul><ul><li>Actualización por phpldapadmin </li></ul></ul><ul><ul><ul><li>Los cambios sólo se aplican al directorio LDAP. </li></ul></ul></ul><ul><ul><ul><li>Acceso por web </li></ul></ul></ul><ul><ul><li>Actualización de la BD local de usuarios y grupos del servidor, y posterior migración de los datos al directorio LDAP. </li></ul></ul><ul><ul><ul><li>Los cambios se hacen en LDAP y en la BD local del servidor. </li></ul></ul></ul><ul><ul><ul><li>Acceso por consola: migrar </li></ul></ul></ul><ul><ul><li>Actualizaciones de los usuarios al cambiar sus claves. </li></ul></ul>
  38. 38. Autenticación con LDAP <ul><li>Actualización del directorio en los I.E.S. </li></ul><ul><ul><li>/usr/bin/migrar </li></ul></ul><ul><ul><ul><li>Script encargado de realizar la migración de datos de la BD local del servidor al directorio LDAP. </li></ul></ul></ul><ul><ul><ul><li>Pasos: </li></ul></ul></ul><ul><ul><ul><ul><li>Construir ficheros ldif a partir de la BD de usuarios y grupos del servidor: </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>migrate_passwd.pl y migrate_group.pl </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><li>Hacer el trasvase de información al directorio LDAP: </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>ldapadd, ldapmodify </li></ul></ul></ul></ul></ul>
  39. 39. Autenticación con LDAP <ul><li>Actualización del directorio en los I.E.S. </li></ul><ul><ul><li>/usr/bin/migrar </li></ul></ul><ul><ul><ul><li>Añade los nuevos usuarios creados. </li></ul></ul></ul><ul><ul><ul><li>Añade los nuevos grupos creados. </li></ul></ul></ul><ul><ul><ul><li>NO modifica los atributos de usuarios o grupos que ya estén creados. </li></ul></ul></ul><ul><ul><li>/usr/bin/migrar2 </li></ul></ul><ul><ul><ul><li>Cambio de ldapadd por ldapmodify en la migración de grupos, para aplicar los cambios. No en los usuarios, ya que se perderían los cambios de contraseña de los usuarios, hechos solo en LDAP mediante herramientas web. </li></ul></ul></ul>
  40. 40. Autenticación con LDAP <ul><li>Configuración en los clientes </li></ul><ul><li>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 . </li></ul><ul><ul><li>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. </li></ul></ul>
  41. 41. Autenticación con LDAP <ul><li>Configuración en los clientes </li></ul><ul><li>Instalación del software necesario. </li></ul><ul><ul><li>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. </li></ul></ul>
  42. 42. Autenticación con LDAP <ul><li>Configuración en los clientes </li></ul><ul><li>/etc/nsswitch.conf </li></ul><ul><li>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). </li></ul><ul><li>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 usuarios y contraseñas. </li></ul>
  43. 43. Autenticación con LDAP <ul><li>Configuración en los clientes </li></ul><ul><li>/etc/nsswitch.conf </li></ul><ul><li>La forma de configurar este archivo es muy simple: </li></ul><ul><li>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). </li></ul><ul><li>De esta forma, basta con configurar el procedimiento de búsqueda para que haga uso de LDAP en algún momento: </li></ul><ul><ul><li>passwd: files ldap </li></ul></ul>
  44. 44. Autenticación con LDAP <ul><li>Configuración en los clientes </li></ul><ul><li>/etc/libnss-ldap.conf </li></ul><ul><li>Configuración del servidor LDAP al que el cliente conectará. Opciones: </li></ul><ul><ul><li>host: Indica la dirección del servidor LDAP. </li></ul></ul><ul><ul><li>base: Nombre distinguido de la base de búsqueda. </li></ul></ul><ul><ul><li>ldap_version: Número de versión LDAP a usar. </li></ul></ul><ul><ul><li>binddn: Nombre distinguido con el que hacer bind al servidor. </li></ul></ul>
  45. 45. Autenticación con LDAP <ul><li>Configuración en los clientes </li></ul><ul><li>/etc/libnss-ldap.conf </li></ul><ul><li>Configuración del servidor LDAP al que el cliente conectará. Opciones: </li></ul><ul><ul><li>bindpw: Las credenciales con las que hacer bind . </li></ul></ul><ul><li>/etc/pam-ldap.conf </li></ul><ul><ul><li>Mismo contenido que libnss-ldap.conf </li></ul></ul><ul><ul><li>Nueva opción: pam_password. Indica el cifrado a realizar por el cliente antes de enviar la contraseña. </li></ul></ul>
  46. 46. Autenticación con LDAP <ul><li>Funcionamiento del protocolo LDAP </li></ul><ul><ul><li>Cliente -> Servidor BIND REQUEST </li></ul></ul><ul><ul><li>Servidor -> Cliente BIND RESULT </li></ul></ul><ul><ul><li>Cliente -> Servidor SEARCH REQUEST </li></ul></ul><ul><ul><li>Servidor -> Cliente SEARCH ENTRY </li></ul></ul><ul><ul><li>Servidor -> Cliente SEARCH RESULT </li></ul></ul><ul><li>Mas información: RFC 2251 </li></ul>
  47. 47. Autenticación con LDAP <ul><li>Funcionamiento del protocolo LDAP </li></ul><ul><ul><li>Operación BIND. </li></ul></ul><ul><ul><ul><li>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. </li></ul></ul></ul><ul><ul><ul><li>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. </li></ul></ul></ul>
  48. 48. Autenticación con LDAP <ul><li>Funcionamiento del protocolo LDAP </li></ul><ul><ul><li>Operación SEARCH REQUEST </li></ul></ul><ul><ul><ul><li>El cliente pide información al servidor </li></ul></ul></ul><ul><ul><li>Operación SEARCH ENTRY </li></ul></ul><ul><ul><ul><li>El servidor entrega información al cliente </li></ul></ul></ul><ul><ul><li>Operación SEARCH RESULT </li></ul></ul><ul><ul><ul><li>El servidor indica al cliente el resultado de la operación de búsqueda. </li></ul></ul></ul>
  49. 49. Seguridad física <ul><li>Servidor </li></ul><ul><ul><ul><li>Lugar de acceso restringido </li></ul></ul></ul><ul><ul><ul><li>No dejar sesiones abiertas, en caso de usar la consola. </li></ul></ul></ul><ul><ul><ul><li>No usar X </li></ul></ul></ul><ul><ul><ul><li>Eliminar cuentas inactivas (apagado1,...) </li></ul></ul></ul><ul><li>Clientes </li></ul><ul><ul><li>Limitar el acceso a los usuarios que deben usar cada puesto -> no alumnos en puesto profesor </li></ul></ul>
  50. 50. Seguridad física <ul><li>Clientes </li></ul><ul><ul><li>Instruir a los usuarios para no dejar sesiones abiertas </li></ul></ul><ul><ul><ul><li>Usar salvapantallas con contraseña por si esto no funciona </li></ul></ul></ul><ul><ul><li>No dar a los usuarios privilegios de administrador </li></ul></ul><ul><ul><li>No permitir el uso de cuentas de grupo, como general </li></ul></ul><ul><ul><li>No permitir acceso de root ni de Configuración en GDM </li></ul></ul><ul><ul><ul><li>AllowRoot=false </li></ul></ul></ul><ul><ul><ul><li>ConfigAvailable=false </li></ul></ul></ul>
  51. 51. Seguridad física <ul><li>Clientes </li></ul><ul><ul><li>No permitir acceso de root desde las consolas </li></ul></ul><ul><ul><ul><li>/etc/securetty </li></ul></ul></ul><ul><ul><li>No permitir acceso de alumnos en ordenadores de profesor </li></ul></ul><ul><ul><ul><li>Fichero /etc/security/limits.conf </li></ul></ul></ul><ul><ul><ul><ul><li>@alumnos - maxlogins 0 </li></ul></ul></ul></ul><ul><ul><li>Comprobar que el profesor tiene sesión abierta al enceder los alumnos </li></ul></ul><ul><ul><ul><li>comprueba_profesor_logged.sh </li></ul></ul></ul>
  52. 52. Seguridad física <ul><li>BIOS </li></ul><ul><ul><li>Desactivar arranque desde medios removibles </li></ul></ul><ul><ul><li>Activar contraseña en la BIOS </li></ul></ul><ul><ul><ul><li>No muy seguro </li></ul></ul></ul><ul><ul><ul><ul><li>Contraseñas por defecto </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Eliminación de la contraseña reseteando la BIOS abriendo la caja </li></ul></ul></ul></ul>
  53. 53. Seguridad física <ul><li>GRUB </li></ul><ul><ul><li>Activar la contraseña en GRUB para que sea necesario introducirla para editar las opciones de arranque </li></ul></ul><ul><ul><ul><li>Impide arrancar como root en modo single si el usuario conoce la contraseña de administrador pero no la de GRUB </li></ul></ul></ul><ul><ul><ul><li>Impide el problema de de añadir init=/bin/sh a la linea de arranque para arrancar con una shell de root directamente </li></ul></ul></ul>
  54. 54. Seguridad física <ul><li>Contraseña de GRUB </li></ul><ul><ul><li>Ejecutar: </li></ul></ul><ul><ul><ul><li># /sbin/grub-md5-crypt </li></ul></ul></ul><ul><ul><ul><li>introducir una contraseña </li></ul></ul></ul><ul><ul><ul><li>Devuelve un hash MD5 de la clave </li></ul></ul></ul><ul><ul><li>Editar menu.lst </li></ul></ul><ul><ul><ul><li>Añadir password --md5 <password-hash> debajo de la línea de timeout </li></ul></ul></ul><ul><ul><li>Ahora, antes de editar grub, pulsar 'p' para meter la clave </li></ul></ul>
  55. 55. Asegurando PAM <ul><li>Tener un /etc/pam.d/other fuerte </li></ul><ul><ul><li>Este fichero se aplica a programas que no tienen fichero concreto </li></ul></ul><ul><ul><li>Si configuramos los ficheros de todos los programas necesarios, este fichero no debería usarse nunca. </li></ul></ul><ul><li>Por ejemplo, un common-auth así: </li></ul><ul><ul><li>auth required pam_deny.so </li></ul></ul><ul><ul><li>auth required pam_warn.so </li></ul></ul>
  56. 56. Asegurando PAM <ul><li>Otra posibilidad menos paranoica es: </li></ul><ul><ul><li>auth required pam_unix.so </li></ul></ul><ul><ul><li>auth required pam_warn.so </li></ul></ul><ul><li>De este modo, cuando una aplicación que no tenga configuración PAM específica se ejecute, quedará reflejados en los logs. </li></ul><ul><li>Sería buena idea tener un common-passwd que no permita el cambio de contraseñas, de modo que controlemos los programas usados para realizar esta tarea. </li></ul>
  57. 57. Asegurando PAM <ul><li>Eliminar accesos sin contraseña </li></ul><ul><ul><li>No usar nullok en los módulos de autenticación, de modo que los usuarios que no tengan una contraseña puesta no pueda entrar al sistema </li></ul></ul><ul><li>Eliminar servicios no usados </li></ul><ul><ul><li>Es buena idea eliminar los ficheros de configuración de los servicios que no se usen, de modo que tengan que recaer en la configuración por defecto, más restrictiva. </li></ul></ul>
  58. 58. Asegurando LDAP <ul><li>El acceso al servidor LDAP está restringido por la bind password, que permite iniciar el diálogo </li></ul><ul><li>Las contraseñas actuales usadas en los I.E.S. son de dominio público, por lo que deberían cambiarse en cada I.E.S. para mejorar la seguridad. </li></ul><ul><li>Para ello, es necesario: </li></ul><ul><ul><li>Cambiar la contraseña de cn=cliente (en phpmyadmin) </li></ul></ul><ul><ul><li>Cambiar en los clientes /etc/libnss-ldap y /etc/pam-ldap la bind pw </li></ul></ul>
  59. 59. Contraseñas seguras <ul><li>Riesgo de que usuarios no autorizados accedan a información confidencial si averiguan la contraseña de un usuario legítimo </li></ul><ul><li>Es necesario que las contraseñas elegidas sean fuertes, y que no puedan ser sacadas por prueba y error </li></ul><ul><li>Métodos </li></ul><ul><ul><li>Prevenir: Hacer que los usuarios usen herramientas para cambiar las contraseñas que implementen una pólitica sobre como deben ser las contraseñas. </li></ul></ul>
  60. 60. Contraseñas seguras <ul><li>Métodos </li></ul><ul><ul><li>Curar: Usar herramientas que comprueban la calidad de las contraseñas elegidas intentando crackearlas. </li></ul></ul><ul><ul><ul><li>Uso del john the ripper </li></ul></ul></ul><ul><li>Para que las contraseñas sean seguras, deben cumplir: </li></ul><ul><ul><li>Más de un determinado número de caracteres </li></ul></ul><ul><ul><li>Usar números, letras y signos de puntuación. </li></ul></ul><ul><ul><li>No hacer referencia a datos personales facilmente accesibles. </li></ul></ul>
  61. 61. Contraseñas por defecto <ul><li>Algunos programas necesitan para funcionar usuarios locales en los clientes </li></ul><ul><ul><li>Aulalinex,... </li></ul></ul><ul><ul><li>Las contraseñas por defecto que usan son de acceso público, por lo que cualquier atacante podría usarlas como punto de entrada al sistema </li></ul></ul><ul><ul><li>Estas contraseñas deberían cambiarse para que no puedan ser usadas </li></ul></ul>
  62. 62. Seguridad de ficheros y sistemas de ficheros <ul><li>No permitir programas SUID/SGID en los directorios de los usuarios </li></ul><ul><ul><li>Opción nosuid en /etc/fstab en /home </li></ul></ul><ul><li>También debemos usar: </li></ul><ul><ul><li>noexec: impide ejecución de programas </li></ul></ul><ul><ul><ul><li>Los usuarios deben pedir que el administrador instale los programas que desee. </li></ul></ul></ul><ul><ul><li>nodev: impide creación de ficheros de dispositivo. </li></ul></ul>
  63. 63. Seguridad de ficheros y sistemas de ficheros <ul><li>Configurar en el servidor /etc/exports del modo más restrictivo posible </li></ul><ul><li>Configurar, en /etc/exports, las opciones antes comentadas para el home local </li></ul><ul><ul><li>nosuid, nodev, noexec </li></ul></ul><ul><li>Los programas SUID son una amenaza para la seguridad </li></ul><ul><ul><li>Si un atacante explota un fallo en un programa que se ejecuta con privilegios de root, puede obtener una cuenta </li></ul></ul>
  64. 64. Seguridad de ficheros y sistemas de ficheros <ul><li>La lista de programas SUID instalados en el sistema debe ser controlada </li></ul><ul><li>Este comando encuentra todos los ficheros SUID/SGID instalados en el sistema: </li></ul><ul><ul><li># find / -type f ( -perm -04000 -o -perm -02000 ) </li></ul></ul><ul><li>Los ficheros con acceso de escritura para todos pueden ser un riesgo, sobre todo en ficheros de sistema. Para encontrarlos todos: </li></ul><ul><ul><li># find / -perm -2 ! -type l -ls </li></ul></ul>
  65. 65. Seguridad de ficheros y sistemas de ficheros <ul><li>Los ficheros .rhosts son peligrosos, ya que permiten el acceso sin pedir contraseña, y no deberían estar permitidos. Para encontrarlos: </li></ul><ul><ul><li># find /home -name .rhosts -print </li></ul></ul>
  66. 66. Seguridad de ficheros y sistemas de ficheros <ul><li>Configurar los directorios personales de los usuarios con permisos sólo para el propietario. </li></ul><ul><li>Configurar los directorios comunes con permisos solo para aquellos que deban usarlos </li></ul><ul><ul><li>Creación de grupos específicos para actividades concretas </li></ul></ul><ul><li>Usar la configuración de umask más restrictiva posible </li></ul><ul><ul><li>0022 es la más usual, y es la que usamos por defecto, creando ficheros con permisos de lectura para el resto de los usuarios. </li></ul></ul>
  67. 67. Seguridad de ficheros y sistemas de ficheros <ul><li>Instruir a los usuarios sobre el funcionamiento del sistema de usuarios, grupos y permisos. </li></ul><ul><li>Instruir a los usuarios para que no apliquen permisos generales a sus ficheros cuando quieran compartirlos, si no sólo a los grupos necesarios. </li></ul>

×