Seminario de Administradores del C.P.R. de Castuera Antonio Durán Terrés Febrero, 2007
Contenidos <ul><li>Conceptos generales sobre PAM </li></ul><ul><li>Autenticación con LDAP </li></ul><ul><li>Sniffers y aná...
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>Configuración mediante un único fichero </li></ul><ul><ul><li>Una entrada por línea en /etc/pam.conf </li></ul...
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 basada en directorios </li></ul><ul><ul><li>Más flexible </li></ul></ul><ul><ul><li>Usa los fich...
PAM <ul><li>Configuración basada en directorios. Ventajas: </li></ul><ul><ul><li>Menos propensa al error. </li></ul></ul><...
PAM <ul><li>Configuración basada en directorios. </li></ul><ul><li>Ficheros comunes: </li></ul><ul><ul><li>common-account ...
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>Ejemplos de common-auth </li></ul><ul><li>Versión 1: </li></ul><ul><ul><li>auth sufficient pam_unix.so </li></...
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>Opciones de  tunning : </li></ul><ul><ul><li>maxthreads n: indica el número máximo de hilos...
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>...
Sniffers y análisis de protocolos <ul><li>¿Que es un snnifer? </li></ul><ul><ul><li>Es un programa que permite obtener el ...
Sniffers y análisis de protocolos <ul><li>¿Que es necesario saber para usar un snnifer? </li></ul><ul><ul><li>Lo primero e...
Sniffers y análisis de protocolos <ul><li>Modo promiscuo </li></ul><ul><ul><li>El interfaz recoge todos los paquetes que p...
Sniffers y análisis de protocolos <ul><li>Modo promiscuo </li></ul><ul><ul><li>En los I.E.S, red conmutada: switches. A un...
tcpdump <ul><li>tcpdump: snnifer cásico en GNU/Linux, disponible en todas las distribuciones. </li></ul><ul><li>Uso en mod...
tcpdump <ul><li>Muestra algunos o todos los paquetes que pasan por un interfaz de red. El rango de paquetes capturados pue...
tcpdump <ul><li>Mostrar todos los paquetes que pasan por el interfaz eth0: </li></ul><ul><ul><li>#tcpdump -i eth0 </li></u...
tcpdump <ul><li>Mostrar sólo los paquetes con un puerto destino determinado: </li></ul><ul><ul><li>#tcpdump dst port 21 </...
tcpdump <ul><li>Combinación de condiciones: </li></ul><ul><ul><li>tcpdump dst port 80 and source 192.168.1.1 </li></ul></u...
tcpdump <ul><li>Formato de salida </li></ul><ul><li>Para datagramas UDP: </li></ul><ul><li>15:22:41.400299 orac.erg.abdn.a...
tcpdump <ul><li>Formato de salida </li></ul><ul><li>Para datagramas TCP: </li></ul><ul><li>16:23:01.079553 churchward.erg....
tcpdump <ul><li>Formato de salida </li></ul><ul><li>Para datagramas TCP: </li></ul><ul><li>16:23:01.079553 churchward.erg....
tcpdump <ul><li>Formato de salida </li></ul><ul><li>Se puede hacer que tcpdump ofrezca más información: </li></ul><ul><ul>...
tcpdump <ul><li>Vemos algunos ejemplos de uso: </li></ul><ul><ul><li>Comprobar si un cliente conecta con el servidor DNS q...
ethereal <ul><li>ethereal es un sniffer con un interfaz gráfico más adecuado para visualización del contenido de los paque...
ethereal <ul><li>Al igual que tcpdump, ethereal puede trabajar capturando paquetes de un interfaz, o abriendo un fichero d...
ethereal <ul><li>Opciones importantes de la captura: </li></ul><ul><ul><li>interfaz: selecciona el interfaz de donde quere...
ethereal <ul><li>Vista de captura. Se divide en tres partes: </li></ul><ul><ul><li>Lista de paquetes capturados. Pueden or...
ethereal <ul><li>Detalle decodificado del datagrama seleccionado.  </li></ul><ul><ul><li>Primero aparce información del da...
ethereal <ul><li>Ejemplo: observar el tráfico LDAP para resolver algún problema. </li></ul><ul><ul><li>Ponemos ethereal ca...
ethereal <ul><li>Ethereal también puede recomponer conexiones de algunos protocolos para mostrar los datos de manera más a...
iptables <ul><li>iptables es el software de cortafuegos de GNU/Linux. </li></ul><ul><li>Aparte de filtrar paquetes hace má...
iptables <ul><li>Actualmente, en los IES se usa sobre todo para hacer redirección de puertos y NAT: </li></ul><ul><ul><li>...
iptables <ul><li>Al poder hacer muchas cosas, iptables es bastante complejo. </li></ul><ul><li>Para verlo en profundidad p...
iptables <ul><li>iptables es lo que conoce como  statefull firewall . Esto significa que realiza un seguimiento de las con...
iptables <ul><li>El procesamiento que iptables realiza con los paquetes se hace en  cadenas,  algo así como pasos. La seri...
iptables <ul><li>Eliminación de todas las reglas: </li></ul><ul><ul><li>iptables -F </li></ul></ul><ul><ul><ul><li>elimina...
iptables <ul><li>Establecer la política por defecto: </li></ul><ul><ul><li>iptables -P INPUT ACCEPT </li></ul></ul><ul><ul...
iptables <ul><li>Añadir reglas de filtrado </li></ul><ul><ul><li>iptables -A INPUT -p tcp --dport 21 -j DROP </li></ul></u...
iptables <ul><li>Añadir reglas de redirección de puertos </li></ul><ul><ul><li>iptables -t nat -A PREROUTING -i eth0 -p tc...
iptables <ul><li>Borrar reglas </li></ul><ul><ul><li>iptables -D INPUT -p tcp --dport 21 -j DROP </li></ul></ul><ul><ul><u...
iptables <ul><li>Probando las reglas con netcat </li></ul><ul><li>netcat es una pequeña utilidad que lee y escribe datos a...
iptables <ul><li>Probando las reglas con netcat </li></ul><ul><li>Ponemos una regla para denegar el acceso a VNC de un alu...
Upcoming SlideShare
Loading in …5
×

Seminario Administradores Febrero 2007

1,038 views

Published on

  • Be the first to comment

  • Be the first to like this

Seminario Administradores Febrero 2007

  1. 1. Seminario de Administradores del C.P.R. de Castuera Antonio Durán Terrés Febrero, 2007
  2. 2. Contenidos <ul><li>Conceptos generales sobre PAM </li></ul><ul><li>Autenticación con LDAP </li></ul><ul><li>Sniffers y análisis de protocolos </li></ul><ul><li>Introducción a iptables </li></ul>
  3. 3. 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>
  4. 4. 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>
  5. 5. 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>
  6. 6. PAM <ul><li>Configuración mediante un único fichero </li></ul><ul><ul><li>Una entrada por línea en /etc/pam.conf </li></ul></ul><ul><ul><ul><li>nombre_servicio tipo_modulo flag_control path_modulo args </li></ul></ul></ul><ul><ul><li>nombre_servicio </li></ul></ul><ul><ul><ul><li>El nombre del servicio asociado a la entrada. Suele ser el nombre del programa. </li></ul></ul></ul><ul><ul><ul><li>Puede ser 'other' para indicar una opción por omisión para los programas que no tienen entrada específica. </li></ul></ul></ul>
  7. 7. 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>
  8. 8. 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>
  9. 9. 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>
  10. 10. 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>
  11. 11. 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>
  12. 12. 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>
  13. 13. 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>
  14. 14. 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>
  15. 15. 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>
  16. 16. PAM <ul><li>Configuración basada en directorios </li></ul><ul><ul><li>Más flexible </li></ul></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>
  17. 17. PAM <ul><li>Configuración basada en directorios. Ventajas: </li></ul><ul><ul><li>Menos propensa al error. </li></ul></ul><ul><ul><li>Más facil de mantener. </li></ul></ul><ul><ul><li>Permite enlazar ficheros. </li></ul></ul><ul><ul><li>Más rápido. </li></ul></ul><ul><ul><li>Mejor gestión de permisos. </li></ul></ul><ul><ul><li>Facilita la administración de paquetes. </li></ul></ul>
  18. 18. PAM <ul><li>Configuración basada en directorios. </li></ul><ul><li>Ficheros comunes: </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><ul><li>En lugar de una entrada other en pamd.conf, hay un fichero other que incluye estos cuatro. </li></ul>
  19. 19. 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>
  20. 20. 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>
  21. 21. PAM <ul><li>Ejemplos de common-auth </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>
  22. 22. 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>
  23. 23. 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>
  24. 24. 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>
  25. 25. 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>
  26. 26. 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>
  27. 27. 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,cn=admin,cn=cliente </li></ul></ul><ul><ul><li>uid=alb | cn=ALE </li></ul></ul><ul><ul><li>dn: uid=alb,ou=People,dc=instituto,dc=ex </li></ul></ul>
  28. 28. Autenticación con LDAP
  29. 29. 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>
  30. 30. 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>
  31. 31. 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 ejemplos en los ficheros de configuración proporcionados. </li></ul>
  32. 32. Autenticación con LDAP <ul><li>Opciones de tunning : </li></ul><ul><ul><li>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. </li></ul></ul><ul><ul><li>cachesize n: Número de entradas que se mantienen en la caché interna en memoria. </li></ul></ul><ul><ul><li>dbcachesize n: Tamaño en bytes de la memoria caché interna asociada con cada fichero abierto. </li></ul></ul>
  33. 33. 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>
  34. 34. 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>
  35. 35. 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>
  36. 36. 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>
  37. 37. 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>
  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>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. </li></ul></ul></ul>
  39. 39. 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>
  40. 40. 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>
  41. 41. 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 hosts o usuarios. </li></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>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>
  43. 43. 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>
  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>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>
  45. 45. 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>
  46. 46. 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>
  47. 47. 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>
  48. 48. Sniffers y análisis de protocolos <ul><li>¿Que es un snnifer? </li></ul><ul><ul><li>Es un programa que permite obtener el tráfico que circula por un interfaz de red. Visión orientada a concentradores. </li></ul></ul><ul><ul><li>Es un programa que permite obtener el tráfico que circula por la red. Visión orientada a conmutadores. </li></ul></ul><ul><ul><li>Es un programa que permite obtener el tráfico que circula por las redes. Vision orientada a wifi. </li></ul></ul>
  49. 49. Sniffers y análisis de protocolos <ul><li>¿Que es necesario saber para usar un snnifer? </li></ul><ul><ul><li>Lo primero es saber que estamos buscando: si vamos a usar un sniffer normalmente será para ayudarnos en la solución de algún problema. </li></ul></ul><ul><ul><li>Conocer, al menos en parte, el funcionamiento del protocolo de red con el que estemos trabajando: </li></ul></ul><ul><ul><ul><li>Negociación TCP y protocolos de aplicación </li></ul></ul></ul><ul><ul><ul><ul><li>HTTP, LDAP, etc. </li></ul></ul></ul></ul><ul><ul><ul><li>Protocolos de apliación sobre UDP </li></ul></ul></ul><ul><ul><ul><ul><li>DNS, DHCP, etc. </li></ul></ul></ul></ul>
  50. 50. Sniffers y análisis de protocolos <ul><li>Modo promiscuo </li></ul><ul><ul><li>El interfaz recoge todos los paquetes que pasan por él, incluyendo aquellos que no van dirigidos a su dirección MAC ni a la de difusión. </li></ul></ul><ul><ul><li>Útil en redes en bus: hubs. Desde un ordenador podemos ver todo el tráfico del segmento compartido de la red. </li></ul></ul><ul><ul><li>En los I.E.S, red conmutada: switches. A una máquina sólo llegan los paquetes que van destinados a ella. No podemos ver el tráfico completo de la red. Posibles soluciones: </li></ul></ul><ul><ul><ul><li>ARP poisoning (dsniff): muy ruidoso. </li></ul></ul></ul>
  51. 51. Sniffers y análisis de protocolos <ul><li>Modo promiscuo </li></ul><ul><ul><li>En los I.E.S, red conmutada: switches. A una máquina sólo llegan los paquetes que van destinados a ella. No podemos ver el tráfico completo de la red. Posibles soluciones: </li></ul></ul><ul><ul><ul><li>Observar el tráfico en un punto central: todos los clientes salen a Internet por el servidor, miramos alli el tráfico. </li></ul></ul></ul><ul><ul><ul><li>Problemas: </li></ul></ul></ul><ul><ul><ul><ul><li>no detecta si alguien configura su ruta de salida por el router. </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Solución: Conectar un hub entre el router y la red y poner en él el ordenador con el sniffer. </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><li>no detecta tráfico interno a la red local. </li></ul></ul></ul></ul>
  52. 52. tcpdump <ul><li>tcpdump: snnifer cásico en GNU/Linux, disponible en todas las distribuciones. </li></ul><ul><li>Uso en modo texto por consola. </li></ul><ul><li>Rápido y facil de usar en remoto. </li></ul><ul><li>En general, útil para saber si los paquetes llegan o no llegan, pero menos para mirar dentro de los paquetes. </li></ul>
  53. 53. tcpdump <ul><li>Muestra algunos o todos los paquetes que pasan por un interfaz de red. El rango de paquetes capturados puede especificarse usando una combinación de operadores lógicos y parámetros como el origen o destino IP, el tipo de protocolo o el número de puerto. </li></ul><ul><li>Los paquetes capturados pueden guardarse en formato binario a un fichero, o pueden mostrarse por pantalla. Los ficheros escritos deben ser leídos con tcpdump (u otros programas que soporten el estándar pcap) </li></ul>
  54. 54. tcpdump <ul><li>Mostrar todos los paquetes que pasan por el interfaz eth0: </li></ul><ul><ul><li>#tcpdump -i eth0 </li></ul></ul><ul><li>Mostrar solo los paquetes del puerto 80: </li></ul><ul><ul><li>#tcpdump port 80 </li></ul></ul><ul><li>Mostrar sólo los paquetes con origen o destino en una dirección o nombre de máquina determinados: </li></ul><ul><ul><li>#tcpdump host 172.21.232.2 </li></ul></ul><ul><li>Mostrar sólo los paquetes con origen en una dirección o nombre de máquina determinado: </li></ul><ul><ul><li>#tcpdump source 172.21.232.2 </li></ul></ul>
  55. 55. tcpdump <ul><li>Mostrar sólo los paquetes con un puerto destino determinado: </li></ul><ul><ul><li>#tcpdump dst port 21 </li></ul></ul><ul><li>Mostrar sólo paquetes TCP: </li></ul><ul><ul><li>#tcpdump tcp </li></ul></ul><ul><li>Mostrar todos los paquetes menos algunos: </li></ul><ul><ul><li>#tcpdump not port 22 </li></ul></ul><ul><li>No hacer resolución de nombres: </li></ul><ul><ul><li>#tcpdump -n </li></ul></ul>
  56. 56. tcpdump <ul><li>Combinación de condiciones: </li></ul><ul><ul><li>tcpdump dst port 80 and source 192.168.1.1 </li></ul></ul><ul><li>Forzar salida inmediata por pantalla: </li></ul><ul><ul><li>#tcpdump -l </li></ul></ul><ul><li>No mostrar timestamps: </li></ul><ul><ul><li>#tcpdump -t </li></ul></ul><ul><li>Formato recomendado: </li></ul><ul><ul><li>#tcpdump -nlt [filtro] </li></ul></ul>
  57. 57. tcpdump <ul><li>Formato de salida </li></ul><ul><li>Para datagramas UDP: </li></ul><ul><li>15:22:41.400299 orac.erg.abdn.ac.uk.1052 > 224.2.156.220.57392: udp 110 </li></ul><ul><ul><li>Timestamp: 15:22:41.400299 </li></ul></ul><ul><ul><li>Dirección origen: orac.erg.abdn.ac.uk </li></ul></ul><ul><ul><li>Puerto origen: 1052 </li></ul></ul><ul><ul><li>Dirección destino: 224.2.156.220 </li></ul></ul><ul><ul><li>Puerto destino: 57392 </li></ul></ul><ul><ul><li>Protocolo: udp </li></ul></ul><ul><ul><li>Tamaño: 110 </li></ul></ul>
  58. 58. tcpdump <ul><li>Formato de salida </li></ul><ul><li>Para datagramas TCP: </li></ul><ul><li>16:23:01.079553 churchward.erg.abdn.ac.uk.33635 > gordon.erg.abdn.ac.uk.32772: P 12765:12925(160) ack 19829 win 24820 (DF) </li></ul><ul><ul><li>Timestamp: 16:23:01.079553 </li></ul></ul><ul><ul><li>Dirección origen: churchward.erg.abdn.ac.uk </li></ul></ul><ul><ul><li>Puerto origen: 33635 </li></ul></ul><ul><ul><li>Dirección destino: gordon.erg.abdn.ac.uk </li></ul></ul><ul><ul><li>Puerto destino: 32772 </li></ul></ul><ul><ul><li>Indica que la PUSH flag está puesta (P) </li></ul></ul>
  59. 59. tcpdump <ul><li>Formato de salida </li></ul><ul><li>Para datagramas TCP: </li></ul><ul><li>16:23:01.079553 churchward.erg.abdn.ac.uk.33635 > gordon.erg.abdn.ac.uk.32772: P 12765:12925(160) ack 19829 win 24820 (DF) </li></ul><ul><ul><li>Número de secuencia: 12765 </li></ul></ul><ul><ul><li>Contiene bytes de datos desde el número de secuencia hasta 12925, sin incluirlo. </li></ul></ul><ul><ul><li>Número de bytes de datos en el datagrama (160) </li></ul></ul><ul><ul><li>Detalles de asentimientos, tamaño de ventana y flags de la cabcera: ack 19829 win 24820 (DF) </li></ul></ul>
  60. 60. tcpdump <ul><li>Formato de salida </li></ul><ul><li>Se puede hacer que tcpdump ofrezca más información: </li></ul><ul><ul><li>tcpdump -v <expresion> </li></ul></ul><ul><ul><li>tcpdump -vv <expresion> </li></ul></ul><ul><ul><li>tcpdump -vvv <expresion> </li></ul></ul><ul><li>También se puede aumentar el snaplen , que representa el tamaño máximo del paquete que decodifica tcpdump. Esto puede hacer que en la captura veamos paquetes que terminan con [|rip] o [|domain]. Para aumentar el tamaño por defecto: </li></ul><ul><ul><li>tcpdump -s tamaño_en_bytes </li></ul></ul>
  61. 61. tcpdump <ul><li>Vemos algunos ejemplos de uso: </li></ul><ul><ul><li>Comprobar si un cliente conecta con el servidor DNS que debe, y ver el resultado de las consultas. </li></ul></ul><ul><ul><li>Ver como se cierra una conexión TCP por el uso de los TCP Wrappers. </li></ul></ul><ul><ul><li>Una página no funciona, investiguemos que pasa exactamente. </li></ul></ul>
  62. 62. ethereal <ul><li>ethereal es un sniffer con un interfaz gráfico más adecuado para visualización del contenido de los paquetes. </li></ul><ul><li>Como desventaja, necesita de un entorno gráfico para funcionar. No es grave, ya que se puede usar un entorno remoto. </li></ul><ul><li>Dispone de una cantidad enorme de definiciones de protocolos, facilitando el análisis de los datos. </li></ul>
  63. 63. ethereal <ul><li>Al igual que tcpdump, ethereal puede trabajar capturando paquetes de un interfaz, o abriendo un fichero de datos existente. </li></ul><ul><li>Para realizar una nueva captura, pinchamos en el menú Capture->Start, y aparece un diálogo para configurar las opciones de la captura. </li></ul>
  64. 64. ethereal <ul><li>Opciones importantes de la captura: </li></ul><ul><ul><li>interfaz: selecciona el interfaz de donde queremos capturar paquetes. </li></ul></ul><ul><ul><li>Capturar paquetes en modo promiscuo: poco útil en redes conmutadas. </li></ul></ul><ul><ul><li>Filtro: filtro igual al usado en tcpdump. </li></ul></ul><ul><ul><li>Actualizar vista de paquetes mientras dura la captura. </li></ul></ul><ul><ul><li>Activar resolución de nombres: desaconsejado por el tráfico adicional generado. </li></ul></ul>
  65. 65. ethereal <ul><li>Vista de captura. Se divide en tres partes: </li></ul><ul><ul><li>Lista de paquetes capturados. Pueden ordenarse por varios campos. </li></ul></ul><ul><ul><li>Detalle decodificado del datagrama seleccionado. Muestra, para cada capa de protocolos presente en el paquete, el contenido de todas sus opciones. Esta es la parte interesante al analizar protocolos. </li></ul></ul><ul><ul><li>Detalle en hexadecimal y ASCII del datagrama seleccionado. </li></ul></ul>
  66. 66. ethereal <ul><li>Detalle decodificado del datagrama seleccionado. </li></ul><ul><ul><li>Primero aparce información del datagrama en general, como su tamaño o cuando se capturó. </li></ul></ul><ul><ul><li>A continuación van aparenciendo los distintos protocolos: </li></ul></ul><ul><ul><ul><li>Ethernet </li></ul></ul></ul><ul><ul><ul><li>IP </li></ul></ul></ul><ul><ul><ul><li>TCP </li></ul></ul></ul><ul><ul><ul><li>LDAP </li></ul></ul></ul>
  67. 67. ethereal <ul><li>Ejemplo: observar el tráfico LDAP para resolver algún problema. </li></ul><ul><ul><li>Ponemos ethereal capturando paquetes con puerto destino 389 TCP. </li></ul></ul><ul><ul><li>Comprobamos paso a paso el diálogo LDAP: </li></ul></ul><ul><ul><ul><li>Operación BIND </li></ul></ul></ul><ul><ul><ul><ul><li>Comprobando el resultado </li></ul></ul></ul></ul><ul><ul><ul><li>Operación SEARCH </li></ul></ul></ul><ul><ul><ul><ul><li>Comprobando el resultado </li></ul></ul></ul></ul><ul><ul><ul><ul><li>y los campos devueltos de la entrada solicitada </li></ul></ul></ul></ul>
  68. 68. ethereal <ul><li>Ethereal también puede recomponer conexiones de algunos protocolos para mostrar los datos de manera más accesible. </li></ul><ul><li>Por ejemplo: boton derecho->Follow TCP Stream sobre un paqute de una conexión HTTP, nos mostrará una ventana con la conversación HTTP entre cliente y servidor en modo texto, juntando todos los paquetes de la conexión. </li></ul>
  69. 69. iptables <ul><li>iptables es el software de cortafuegos de GNU/Linux. </li></ul><ul><li>Aparte de filtrar paquetes hace más cosas: </li></ul><ul><ul><li>NAT </li></ul></ul><ul><ul><li>Redirección de puertos </li></ul></ul><ul><ul><li>Modificación de paquetes </li></ul></ul><ul><ul><li>Integración con otras herramientas: con iptables+iproute2 podemos tener reservas de ancho de banda por aplicaciones. </li></ul></ul>
  70. 70. iptables <ul><li>Actualmente, en los IES se usa sobre todo para hacer redirección de puertos y NAT: </li></ul><ul><ul><li>Hacer que los clientes pasen por Squid </li></ul></ul><ul><ul><li>Hacer que los clientes sólo puedan usar los servidores POP y SMTP de la Junta. </li></ul></ul><ul><li>También para filtrar en los clientes: </li></ul><ul><ul><li>ControlAula incluye una regla para solo permitir acceso VNC al profesor. </li></ul></ul>
  71. 71. iptables <ul><li>Al poder hacer muchas cosas, iptables es bastante complejo. </li></ul><ul><li>Para verlo en profundidad probablemente necesitariámos una sesión entera. </li></ul><ul><li>Vemos una introducción que nos permita lo básico: </li></ul><ul><ul><li>Entender los scripts usados </li></ul></ul><ul><ul><li>Crear nuevas reglas para proteger servicios o redirigir tráfico. </li></ul></ul>
  72. 72. iptables <ul><li>iptables es lo que conoce como statefull firewall . Esto significa que realiza un seguimiento de las conexiones, sabiendo que paquetes pertenecen a cada conexión. </li></ul><ul><li>iptables se divide en dos partes: </li></ul><ul><ul><li>parte de kernel: módulos o compilado en el propio kernel. </li></ul></ul><ul><ul><li>parte de usuario: utilidades para modificar las reglas. </li></ul></ul>
  73. 73. iptables <ul><li>El procesamiento que iptables realiza con los paquetes se hace en cadenas, algo así como pasos. La serie específica de pasos depende de si se trata de una conexión entrante, saliente o forwarded . </li></ul><ul><li>Tenemos tres tipos de reglas. Cada una se puede usar en determinados pasos, llamadas cadenas y cada cadena usa unas tablas: </li></ul><ul><ul><li>MANGLE: Todas </li></ul></ul><ul><ul><li>NAT: reglas PREROUTING, POSTROUTING </li></ul></ul><ul><ul><li>FILTER: reglas INPUT, OUTPUT, FORWARD. </li></ul></ul>
  74. 74. iptables <ul><li>Eliminación de todas las reglas: </li></ul><ul><ul><li>iptables -F </li></ul></ul><ul><ul><ul><li>elimina las reglas de filtrado, ya que por defecto se usa la tabla filter. </li></ul></ul></ul><ul><ul><li>iptables -X </li></ul></ul><ul><ul><ul><li>elimina las cadenas definidas por el usuario </li></ul></ul></ul><ul><ul><li>iptables -Z </li></ul></ul><ul><ul><ul><li>resetea los contadores </li></ul></ul></ul><ul><ul><li>iptables -t nat -F </li></ul></ul><ul><ul><ul><li>elimina las reglas de NAT. </li></ul></ul></ul>
  75. 75. iptables <ul><li>Establecer la política por defecto: </li></ul><ul><ul><li>iptables -P INPUT ACCEPT </li></ul></ul><ul><ul><li>iptables -P OUTPUT ACCEPT </li></ul></ul><ul><ul><li>iptables -P FORWARD ACCEPT </li></ul></ul><ul><li>Estas reglas se aplican a los paquetes que no coinciden con ninguna regla. </li></ul><ul><li>Añadir reglas </li></ul><ul><ul><li>iptables -A ... </li></ul></ul><ul><ul><ul><li>La regla se añade al final de la lista, y se mirará, si se mira, la última. </li></ul></ul></ul>
  76. 76. iptables <ul><li>Añadir reglas de filtrado </li></ul><ul><ul><li>iptables -A INPUT -p tcp --dport 21 -j DROP </li></ul></ul><ul><ul><ul><li>Deniega conexiones FTP a esta máquina: </li></ul></ul></ul><ul><ul><ul><ul><li>INPUT indica que la regla debe aplicarse al tráfico cuyo destino es local. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>-p tcp indica que la regla debe aplicarse a paquetes TCP. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>--dport 21 indica que la regla debe aplicar a paquetes con puerto destino 21. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>-j DROP indica la acción a realizar con el paquete, en este caso tirarlo. Las opciones son: </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>ACCEPT, DROP, REJECT, MASQUERADE (sólo para la tabla nat) </li></ul></ul></ul></ul></ul>
  77. 77. iptables <ul><li>Añadir reglas de redirección de puertos </li></ul><ul><ul><li>iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 </li></ul></ul><ul><ul><ul><li>-t nat usar la tabla de nat </li></ul></ul></ul><ul><ul><ul><li>PREROUTING, el cambio de puerto hay que hacerlo antes de enrutar. </li></ul></ul></ul><ul><ul><ul><li>REDIRECT, hace que el paquete sea redirigido a otro puerto en la misma máquina. </li></ul></ul></ul><ul><ul><ul><li>--to-port 3128 hace que el paquete sea redirigido al puerto 3128. </li></ul></ul></ul>
  78. 78. iptables <ul><li>Borrar reglas </li></ul><ul><ul><li>iptables -D INPUT -p tcp --dport 21 -j DROP </li></ul></ul><ul><ul><ul><li>Se especifica la misma regla, cambiando -A por -D. </li></ul></ul></ul><ul><li>Mostrar reglas </li></ul><ul><ul><li>iptables -L </li></ul></ul><ul><li>Mostrar reglas de NAT: </li></ul><ul><ul><li>iptables -t nat -L </li></ul></ul>
  79. 79. iptables <ul><li>Probando las reglas con netcat </li></ul><ul><li>netcat es una pequeña utilidad que lee y escribe datos a través de conexiones de red, usando los protocolos tcp y udp. Muy útil a la hora de solucionar problemas relacionados con la accesibilidad. </li></ul><ul><ul><ul><li>Crear una conexión para comprobar si el servidor ssh es accesible: </li></ul></ul></ul><ul><ul><ul><ul><ul><li>$nc 172.21.232.2 22 </li></ul></ul></ul></ul></ul><ul><ul><ul><li>Todo lo que escribas se manda al servidor remoto, y todo lo que el servidor envíe se muestra por pantalla. </li></ul></ul></ul>
  80. 80. iptables <ul><li>Probando las reglas con netcat </li></ul><ul><li>Ponemos una regla para denegar el acceso a VNC de un alumno a otro: </li></ul><ul><ul><ul><li>#iptables -A INPUT -i eth0 -s ! $PROFESOR -p tcp --destination-port 5900 -j DROP </li></ul></ul></ul><ul><li>Comprobamos que realmente hace lo que debe: </li></ul><ul><ul><ul><ul><li>Poner netcat escuchando en el puerto 5900 (VNC) en un alumno. </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>$netcat -l -p 5900 </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><li>Comprobar que desde otro alumno no podemos acceder al servicio: </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>$netcat aula-o01 5900 </li></ul></ul></ul></ul></ul>

×