UNIVERSIDAD DE MAGALLANES FACULTAD DE INGENIERÍA DEPARTAMENTO DE INGENIERÍA EN COMPUTACIÓN Seguridad en IPv6 con IPsec Javier Enrique Vivar Soto 2008 La presente Memoria de Titulación ha sido aprobada con la siguiente calificación: Javier Enrique Vivar Soto Memoria Examen de Tı́tulo Nota Final : : : Dr. Pedro Alberti V. Director Departamento De Ingenierı́a En Computación 06 de Agosto del 2008 UNIVERSIDAD DE MAGALLANES FACULTAD DE INGENIERÍA DEPARTAMENTO DE INGENIERÍA EN COMPUTACIÓN Seguridad en IPv6 con IPsec “Trabajo de titulación presentado en conformidad a los requisitos para obtener el tı́tulo de Ingeniero de Ejec. en Computación e Inf.”. Profesor Guı́a: José Canumán Ch. Javier Enrique Vivar Soto 2008 A mis padres, Atilio y Soledad Resumen Actualmente el motor de Internet es la pila de protocolos TCP/IP, el cual con el pasar del tiempo ha sufrido variados problemas que se arreglaban agregando nuevos protocolos a la familia. El agotamiento de direcciones IP, debido al gran crecimiento de Internet, provocó la aparición de una nueva versión del protocolo IP llamada IPv6. Integrado a IPv6 viene una solución de seguridad muy potente denominada IPsec. El presente proyecto pretende adentrar con profundidad en el tema de IPv6 con IPsec al lector, para ello se investigó de manera teórica y práctica, relacionando ambas para explicar de la mejor forma su funcionamiento. Índice general Resumen I. Introducción 1.1. Relevancia y Aportes del Proyecto de tı́tulo . . . . . . . . . . . . . . . . . . 1.2. Organización del proyecto de tı́tulo . . . . . . . . . . . . . . . . . . . . . . . 1 2 3 II. Marco Teórico 4 2.1. IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1. Cabeceras de Extensión . . . . . . . . . . . . . . . . . . . . . . . . . 6 8 2.1.2. Direccionamiento en IPv6 . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3. Compatibilidad y Actualidad . . . . . . . . . . . . . . . . . . . . . . 2.2. IPsec y Seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 11 12 2.2.1. Algoritmos de Hash o Resumen . . . . . . . . . . . . . . . . . . . . . 2.2.2. Algoritmos de Cifrado . . . . . . . . . . . . . . . . . . . . . . . . . . 13 13 2.2.3. Asociaciones y Polı́ticas de Seguridad . . . . . . . . . . . . . . . . . . 2.2.4. El Protocolo IKE (Intercambio de claves sobre Internet) . . . . . . . 2.2.5. Protocolos AH y ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 14 15 III.Desarrollo 17 3.1. Cabecera de Autenticación (AH) . . . . . . . . . . . . . . . . . . . . . . . . 3.2. Cifrado de Seguridad de Datos (ESP) . . . . . . . . . . . . . . . . . . . . . . 3.3. Aspectos prácticos en el uso de IPsec . . . . . . . . . . . . . . . . . . . . . . IV.Pruebas y Resultados 17 20 23 31 i ii V. Conclusiones 5.1. Trabajos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 38 Bibliografı́a 39 Apéndice A 40 Índice de figuras 2.1. Esquema de Capas TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2. Cabecera IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3. Estructura de Cabeceras de Extensión . . . . . . . . . . . . . . . . . . . . . 2.4. Formato Direcciones IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 8 11 2.5. Funcionamiento de IKE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.1. Cabecera de Autenticación . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.2. Funcionamiento de AH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3. Datagrama IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4. Datagrama después de aplicar AH modo transporte . . . . . . . . . . . . . . 18 19 19 3.5. Datagrama después de aplicar AH modo túnel . . . . . . . . . . . . . . . . . 3.6. Cabecera de ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 20 3.7. Funcionamiento de ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.8. Datagrama IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.9. Datagrama IPv6 luego de aplicar ESP modo transporte . . . . . . . . . . . . 21 22 22 3.10. Datagrama IPv6 luego de aplicar ESP modo túnel . . . . . . . . . . . . . . . 3.11. Conexión en Modo Transporte . . . . . . . . . . . . . . . . . . . . . . . . . . 23 24 3.12. Configuración Conexión en Modo Transporte . . . . . . . . . . . . . . . . . . 3.13. Conexión en Modo Túnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.14. Configuración Conexión en Modo Túnel . . . . . . . . . . . . . . . . . . . . 25 28 30 4.1. Configuración de Red IPv4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2. IPv6 v/s IPv4, sin IPsec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 34 4.3. Opciones de Seguridad IPsec . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4. Comparación entre Alternativas IPsec y el no emplear IPsec . . . . . . . . . 35 36 iii Índice de cuadros 2.1. Prefijos Reservados para cada Tipo de Dirección . . . . . . . . . . . . . . . . 10 3.1. Tabla con la Configuración de la Red . . . . . . . . . . . . . . . . . . . . . . 29 iv Capı́tulo I Introducción En la actualidad, Internet es uno de los medios de comunicación más importantes y extendidos en el mundo. Sin embargo, la seguridad siempre ha sido su punto débil, y con el pasar de los años han aparecido muchos parches y extensiones con el objetivo de reforzarla. Una solución integral esta por llegar, junto con un cambio sobre Internet. De la mano de la nueva versión de IP (versión 6), básicamente el pilar de Internet, viene IPsec, un protocolo dedicado a otorgar seguridad a las comunicaciones. IPsec provee principalmente tres servicios a las comunicaciones sobre Internet: autenticación del origen de los datos, integridad y confidencialidad (explicados con detalle en el punto 2.2 de este trabajo). El venir de forma integrada en la nueva versión de IP no significa que sea usada por defecto, por lo cual en el presente proyecto se profundizará en el funcionamiento de IPsec sobre IP versión 6. 1 2 1.1. Relevancia y Aportes del Proyecto de tı́tulo Frente a la transición a sufrir, en base a la actualización del Protocolo IP, surge la necesidad de tener un referente acerca de las novedades y ventajas que traerá consigo. Es ası́ que el trabajo se centra en el estudio y análisis de la seguridad otorgada por la nueva versión, IPsec. Se debe mencionar también, que IPsec es soportado por la versión actual de IP, pero posee dos puntos en contra que le quitan interés, el ser soportado como extensión (no estar integrado) y el que la versión actual tiene sus dı́as contados debido al crecimiento exponencial de Internet. Objetivo General : Este proyecto tiene como objetivo principal, estudiar la seguridad en IP versión 6 empleando el protocolo IPsec. La investigación es de caracter téorico y práctico, para lo cual se configurarán redes IPv6 con IPsec y se analizará su funcionamiento. Los aportes más importantes de este proyecto son: Un análisis teórico y práctico del funcionamiento del protocolo de Seguridad IPsec, destacando puntos importantı́simos y recomendaciones para la configuración e implementación de redes seguras IPsec. Especificamente un estudio práctico acerca del tiempo extra requerido por la Seguridad IPsec. Instruye acerca de las varias herramientas disponibles para configurar una red IPv6 con IPsec. 3 1.2. Organización del proyecto de tı́tulo El proyecto se divide en cuatro partes: El capı́tulo II, expone la teorı́a requerida para una buena comprensión del desarrollo del proyecto, introduciendo en IPv6 y explicando conceptos importantes de IPsec. El capı́tulo III abarca la investigación propiamente tal, explicando los pilares de IPsec en forma teórica, ası́ como las configuraciones realizadas y su análisis. El capı́tulo IV comprende las pruebas realizadas y los resultados obtenidos. El capı́tulo V corresponde a las conclusiones obtenidas del desarrollo del presente proyecto y posible trabajos futuros. Capı́tulo II Marco Teórico En los años 60, sólo era posible conectar computadores entre modelos de una misma marca. La incompatibilidad entre los fabricantes era casi total e impedı́a la expansión de la Informática. En los años 70 ya existı́a comunicación entre distintos tipos de computadores, esto gracias a que organismos internacionales (IEEE, ISO) regularon los mecanismos y formas en que se debı́an realizar las comunicaciones entre computadores. Fue ası́ como se definió el modelo OSI, especificando un conjunto de 7 capas que permitian aislar el computador de la red en donde se encontraba conectada. El siguiente paso, comunicar los tipos de redes existentes para formar una gran red de redes. De esta manera nace la pila o familia de protocolos TCP/IP, que permite la conectividad entre redes de computadores. Se le llama ası́ por sus dos protocolos más importantes: TCP (Protocolo de Control de Transmisión) y IP (Protocolo de Internet). TCP/IP es la base de Internet y fue desarrollado por el Departamento de Defensa de los Estados Unidos, y ejecutado primeramente en ARPANET, una red de área extensa del departamento de defensa. La familia de protocolos TCP/IP puede ser definida como una combinación de cuatro capas, donde cada capa recibe los servicios de la capa situada justo en su nivel inferior. 4 5 Figura 2.1: Esquema de Capas TCP/IP La Capa de Enlace incluye los mecanismos que permiten al sistema operativo enviar y recibir información a través de la red a la que está conectada. La Capa de Red es la encargada de mover los paquetes a través de las diferentes redes para llegar a su destino. Dentro de esta capa IP es el protocolo más importante, definiendo un espacio de direccionamiento. La Capa de Transporte es la encargada de proporcionar un flujo de datos entre dos computadores. El flujo puede ser fiable o no fiable. La Capa de Aplicación es la encargada de los detalles particulares respectivos a las diferentes aplicaciones. En cada capa existen varios protocolos, de los cuales destacan: IP: Es la pieza fundamental del sistema TCP/IP. Es un protocolo no fiable y no orientado a la conexión, que se encarga del transporte de los datos por la Red. Define la identificación de cada nodo conectado a la red, es decir, proporciona un espacio de direcciones, con el cual se construye toda la red de redes (Internet). TCP: Es un protocolo fiable y orientado a la conexión. Utiliza los servicios del Protocolo IP para mantener comunicación con el destino y ası́ poder controlar la correcta recepción de los datos. 6 La pila TCP/IP posee un diseño muy flexible, permitiendole añadir nuevos protocolos a la familia, en gran medida sin tener que alterar los ya existentes. De esta forma, con el pasar del tiempo fueron apareciendo nuevos protocolos, ejemplos de ello son: DHCP creado en base a la necesidad de automatizar la configuración de los nodos conectados a la red, todo esto con fines administrativos. SSL o S-HTTP nacen de la falta de seguridad con que TCP/IP fue diseñado, otorgan cifrado e integridad para que dos aplicaciones remotas se comuniquen de manera segura. En la década de los 90, Internet comienza a tener un gran crecimiento, con ello se prevé el agotamiento de direcciones IP. Entonces aparecen herramientas para evitar dicha situación, ejemplo de ello es la extendida NAT, que permite a un grupo de computadores conectarse a Internet usando solamente una dirección IP pública. Esta solución a largo plazo paso a ser un parche, por lo cual se comenzó a trabajar en lo que serı́a una nueva versión del protocolo IP, la cual además de solucionar el problema de agotamiento de direcciones, mejorarı́a en diversos aspectos a la versión 4 y llevarı́a por nombre IPv6 (IP versión 6). 2.1. IPv6 IPv6 además de satisfacer las necesidades de direccionamiento, trae consigo una serie de mejoras sobre IPv4, basadas en los años de experiencia con este último. Se han eliminado campos redundantes y obsoletos, ası́ como las opciones, creando una cabecera mucho más simple. Caracterı́sticas importantes: Direccionamiento de 128 bits: Espacio de direcciones suficientes para todo el planeta. Con esto se podrán minimizar las tablas de enrutamiento y permitirá conectar prácticamente todos los computadores del mundo directamente a Internet, con un simple método de agregación. Longitud Fija de Cabecera: Optimiza el procesamiento de los paquetes, ası́ como su enrutamiento. Cabeceras de Extensión: Esta estructura mantiene las funcionalidades de los campos de opciones de IPv4, como enrutamiento del paquete, fragmentación, además de entregar nuevos servicios de seguridad. Más adelante se explica con mayor profundidad. 7 Figura 2.2: Cabecera IPv6 De la Figura 2.2: Versión: Se mantiene en la misma posición, con fines de compatibilidad entre las versiones 4 y 6. Clase: Define la prioridad del datagrama. Con el fin de ayudar a tecnologias como videoconferencia, telefonı́a IP. Tipo de flujo: Especifı́ca una serie de datagramas que deben recibir el mismo trato. Tamaño de los Datos: El tamaño de los datos transportados, abarca los datos después de la cabecera IP, incluyendo las cabeceras de extensión. Siguiente Cabecera: Puede ser una cabecera de la capa de transporte como TCP o UDP, o una cabecera de extensión (más adelante se explican). Lı́mite de Saltos: Define el número máximo de enrutadores a atravesar por un datagrama, cada enrutador lo decrementa en uno. 8 2.1.1. Cabeceras de Extensión IPv6 introduce el concepto de Cabeceras de Extensión con el fin de agregarle opciones a los datagramas IP. Actualmente existen pocas cabeceras de extensión, sin embargo, se podrı́an definir más en el futuro. Estas cabeceras se ubican entre la cabecera IP y la cabecera TCP (Ver Figura 2.3), enlazándose entre sı́ con el campo Siguiente Cabecera. A continuación, Figura 2.3: Estructura de Cabeceras de Extensión se nombran las cabeceras de extensión existentes, con una breve descripción de su propósito. El orden en el que son mostradas, es el definido y recomendado en las especificaciones IPv6. Cabecera de Opciones entre Saltos: Se usa para llevar información adicional procesada por nodos intermedios. Cabecera de Opciones de Destino: Contiene opciones procesadas por el nodo destinatario. Cabecera de Enrutamiento: Lista uno o más nodos intermediarios, que debe visitar el paquete en el camino a su destino. Cabecera de Fragmentación: Se usa para dividir paquetes demasiado grandes que no pueden ser transmitidos en algunas redes. A diferencia de IPv4, la fragmentación la realizan solamente los nodos origen y destino, cuando un nodo intermedio recibe un paquete que no puede retransmitir, envı́a un mensaje al origen explicando que el paquete es muy grande. 9 Cabecera de Autenticación (AH): Proporciona integridad y autenticación al paquete. Más adelante se tratará con profundidad. Cabecera de Cifrado de Seguridad de Datos (ESP): Proporciona confidencialidad a los paquetes. Más adelante se tratará con profundidad. 2.1.2. Direccionamiento en IPv6 En IPv6 las direcciones son identificadores de 128 bits. Existen tres tipos de direcciones: Unicast: Un identificador para una sola interfaz. Un paquete enviado a una dirección unicast, se entrega a la interfaz identificada por esa dirección. Anycast: Un identificador para un grupo de interfaces (diferentes nodos). Un paquete enviado a una dirección anycast, se entrega a una de las interfaces identificada por esa dirección, generalmente la más cercana. Multicast: Un identificador para un grupo de interfaces. Un paquete enviado a una dirección multicast, se entrega a todas las interfaces identificadas por esa dirección. Cabe destacar que una interfaz puede tener multiples direcciones de todos los tipos presentados anteriormente, o sea, puede estar conectada a muchas redes. Las direcciones IPv6 se representan de la siguiente forma ’x:x:x:x:x:x:x:x’, donde x son 4 dı́gitos hexadecimales, un conjunto de 16 bits. Ejemplos: ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 2001:DB8:0:0:8:800:200C:417A Existe una forma de comprimir las direcciones utilizando :: para representar uno o más grupos de 16 bits de ceros. Cabe destacar que solamente se puede utilizar una vez. Consideremos los siguientes ejemplos de direcciones: 2001:DB8:0:0:8:800:200C:417A 0:0:0:0:0:0:0:1 FF01:0:0:0:0:0:0:101 0:0:0:0:0:0:0:0 10 Su representación comprimida: 2001:DB8::8:800:200C:417A ::1 FF01::101 :: Las direcciones IPv6 definen la red a la que pertenecen a través del termino prefijo. Al referirse a una dirección IPv6 se debe especificar el largo de su prefijo, por lo cual se utiliza la siguiente notación: Dirección-IPv6/Largo-Prefijo donde: Dirección IPv6: Una dirección válida, como las descritas anteriormente. Largo del Prefijo: Es un número decimal, especificando cuantos de los bits más a la izquierda de la dirección comprenden el prefijo. Ejemplo de Notación: 2001:0DB8:0:CD30:123:4567:89AB:CDEF/60 Los tipos de direcciones se identifican por los bits de mayor orden: Tipo de Dirección No especificada Loopback Multicast Unicast de Enlace Local Unicast de Enlace Global Prefijo Binario 00...0 (128 bits) 00...1 (128 bits) 11111111 1111111010 Cualquier otro valor Notación IPv6 ::/128 ::1/128 FF00::/8 FE80::/10 Cuadro 2.1: Prefijos Reservados para cada Tipo de Dirección Del Cuadro 2.1: No especificada: Indica que una interfaz aún no tiene definida una dirección. Loopback: Interfaz de red virtual, para trabajar con el protocolo TCP/IP sin estar conectado a una red. 11 Multicast: Se utilizan para enviar paquetes a un grupo de nodos, y comienzan con el prefijo FF. Unicast de Enlace Local: Cada interfaz llevara una de estas direcciones, que comienza con el prefijo FE80. Es utilizada para propósitos de comunicarse con la red local para compartir información. Unicast de Enlace Global: Son las utilizadas para conectarse directamente a Internet. Las direcciones unicast tienen la siguiente estructura: Figura 2.4: Formato Direcciones IPv6 Por lo general, la parte de Identificador de interfaz, corresponde a las direcciones MAC de los adaptadores de red. 2.1.3. Compatibilidad y Actualidad IPv6 ya ha sido implantado en algunos paı́ses de Asia, donde no contaban con más direccionamiento IPv4. El plan de Transición de IPv4 a IPv6 consiste en la implantación de redes IPv6, siendo islas en Internet, las cuales pueden comunicarse atravesando las redes IPv4 que existan. Se pretende que dichas islas crezcan hasta abarcar toda la Internet (o una gran parte). Existen diversos mecanismos que permiten la convivencia de ambos protocolos de Red. Ejemplos de esto, son el concepto de Dual Stack, definida como una implementación de TCP/IP que es capaz de manejar IPv4 e IPv6. También los túneles IPv4, consistentes en encapsular un paquete IPv6, en una datagrama IPv4 y de esta forma traspasar redes IPv4. Actualmente IPv6 no se ha extendido masivamente, en gran parte por decisión de los ISP (Proveedores de Servicios de Internet), los cuales aún cuentan con direcciones IPv4 12 para ofrecer sus servicios. Se estima el agotamiento total de IPv4 en 3 o 4 años más, por lo cual diversos organismos deberán anticiparse a este evento y hacer un cambio transparente. Como ejemplo, recientemente la Comisión Europea comunicó su plan de despliegue IPv6, y llamó a una Migración Masiva para el año 2010 (ver en The IPv6 Portal, http://www.ipv6tf.org). 2.2. IPsec y Seguridad En un principio el protocolo TCP/IP tenı́a como objetivo comunicar institutos y universidades repartidos en el mundo, para intercambiar información cientı́fica, por lo cual, su diseño no contempló seguridad. Como Internet sufrió un gran crecimiento (mencionado anteriormente), la cantidad de personas y empresas conectadas a Internet aumentó, y con ello comenzó a evidenciarse su inseguridad, a través de diversos ataques sufridos por bancos, instituciones y usuarios. Existen dos tipos de ataques, pasivos y activos. En los ataques pasivos, el atacante tiene acceso a la información en tránsito, pero no la altera, lo que conlleva a dificultar su detección. En los ataques activos, el atacante modifica los datos o incluso crea datos falsos, suplantando la identidad de un usuario. Producto de esto, aparecieron muchas soluciones de seguridad, básicamente en todas las capas de la Pila TCP/IP, pero no eran más que extensiones o parches, entonces se decidió añadir seguridad integrada en TCP/IP, la interrogante de entonces, ¿Cuál capa era la más adecuada para proporcionar la seguridad?, entonces la Capa de Red IP fue la elegida, aprovechando la aparición de IPv6. IPsec es un estándar que proporciona servicios de seguridad al Protocolo IP y/o Capa de Red, ası́ como a todos los protocolos superiores (TCP y UDP entre otros). IPsec tiene soporte para IPv4 e IPv6, en IPv4 como extensión mientras en IPv6 tiene soporte integrado y obligatorio (según las especificaciones de IPv6, cabecera de extensión). Una ventaja muy importante presentada por IPsec es ofrecer seguridad a todas las aplicaciones, en contraste de otras soluciones de seguridad como SSL o S-HTTP las cuales dependian de la aplicación. 13 Los servicios de seguridad proporcionados por IPsec son: Integridad: Los paquetes no han sido modificados en el camino. Autenticidad: El emisor de un paquete, es efectivamente quien dice ser. Confidencialidad: El contenido de los paquetes solamente es conocido por el emisor y el receptor. IPsec combina varios conceptos, protocolos y algoritmos para lograr su objetivo. Es necesario, explicar los siguientes puntos para comprender su funcionamiento. 2.2.1. Algoritmos de Hash o Resumen Son ocupados por IPsec para realizar la autentificación y verificar la integridad. Un algoritmo de Resumen entrega una secuencia de bits (pequeña longitud), asociada a un mensaje (paquete) y debe resultar muy difı́cil de falsificar. El problema de estos algoritmos son las colisiones, ya que el mensaje puede tener un largo infinito y nuestra salida o resumen esta limitada a una secuencia de bits de tamaño fijo. Sin embargo, generalmente los mensajes colisionantes pierden el sentido, no tienen un aspecto válido. De entre los algoritmos de resumen más populares y extendidos se encuentran: MD5: Genera un resumen de 128 bits. SHA-1: Genera un resumen de 160 bits. Los dos algoritmos forman parte de las especificaciones de IPsec. Hoy en dı́a el más seguro es SHA-1. 2.2.2. Algoritmos de Cifrado Para cifrar la información IPsec emplea algoritmos de cifrado simétrico, que ocupan una clave además del mensaje. La clave se usa para cifrar y descifrar el mensaje, mientras más grande más segura. Estos algoritmos dividen el mensaje en bloques de tamaño fijo, y aplican sobre cada uno de ellos operaciones de confusión (sustituciones) y difusión (transposiciones). La confusión tiene como objetivo ocultar la relación existente entre el mensaje claro, el mensaje cifrado y la clave. La difusión intenta repartir la influencia de cada bit del mensaje 14 original lo más posible entre el mensaje cifrado. Ejemplos de algoritmos de cifrado son: DES, 3DES, AES, BLOWFISH, etc. Actualmente DES es considerado inseguro, se le encontraron debilidades y se rompió su cifrado en menos de dos dı́as. 3DES una mejora de DES, aún no presenta debilidades prácticas, sólo teóricas. Mientras tanto AES es el nuevo estándar de cifrado, y es uno de los más seguros actualmente. DES, 3DES forman parte de las especificaciones de IPsec. 2.2.3. Asociaciones y Polı́ticas de Seguridad Una Asociación de Seguridad (SA) corresponde a un grupo de parámetros como algoritmos de cifrado, hash, clave, etc, que se emplearan para establecer una comunicación segura. También forman parte de la SA las direcciones de origen y destino, ası́ como los protocolos AH o ESP, el modo de uso (túnel o transporte) y el ı́ndice para referenciar la SA llamado SPI. Estos parámetros serán mencionados posteriormente. IPsec define una Base de Datos donde se almacenan las Asociaciones, llamada SAD. Una Polı́tica de Seguridad define el tráfico al cual aplicar IPsec, saliente o entrante. Datos como direcciones de origen y destino, el protocolo AH o ESP, el modo de uso, se deben especificar en este apartado. Las Polı́ticas de Seguridad son almacenadas en una Base de Datos llamada SPD. 2.2.4. El Protocolo IKE (Intercambio de claves sobre Internet) Es un protocolo de dos fases, brinda una comunicación cifrada y autenticada a dos nodos. La primera fase, establece los algoritmos de cifrados, claves y métodos de autenticación a utilizar para la propia conexión. La segunda fase, es la negociación basada en el canal seguro creado en la primera fase. IKE no se limita a IPsec, es un protocolo estándar de gestión de claves. La idea de IKE con IPsec es negociar una SA común a ambos hosts remotos. Un host ofrecerá sus algoritmos de cifrado y resumen, con lo cual el receptor, enviará una respuesta informando qué algoritmos acepta. A partir de los algoritmos comunes se crearán todas las SAs posibles, automatizando la creación de claves para cada una. Luego se escoge 15 la SA para la comunicación IPsec. Figura 2.5: Funcionamiento de IKE La autentificación para negociar a través de IKE se puede hacer con claves previamente compartidas (de largo variable) o certificados digitales X509v3. Para establecer la SA entre dos hosts es útil cualquiera de las dos opciones, en cambio, establecer una SA para una comunicación multicast (muchos hosts) son necesarios los certificados. 2.2.5. Protocolos AH y ESP Ambos protocolos son cabeceras de extensión en IPv6 y son los encargados directos de proporcionar la seguridad a la Capa de Red IP. La Cabecera de Autenticación (AH), garantiza la integridad y autenticación del tráfico IP, es decir, el receptor de los paquetes IP puede autenticar el origen de los datos y verificar que no han sido alterados en su trayecto. Sin embargo, los datos viajan en texto plano y pueden ser vistos por terceros. Utiliza los algoritmos de resumen mencionados anteriormente. La Cabecera de Cifrado Seguro de Datos (ESP), tiene como objetivo principal el impedir la visualización de los datos, a través de su cifrado. ESP otorga confidencialidad, 16 adicionalmente ofrece servicios de integridad y autenticación, incorporando un mecanismo similar al de AH. Los tres servicios pueden ser utilizados en conjunto para proporcionar una solución de seguridad robusta. Emplea algoritmos de cifrado y resumen. Ambos protocolos poseen dos modos de uso, modo transporte y túnel. El modo transporte sirve para establecer una comunicación segura entre dos hosts, mientras que el modo túnel, establece una comunicación segura entre dos redes, a través de la implementación de IPsec en sus enrutadores. Capı́tulo III Desarrollo 3.1. Cabecera de Autenticación (AH) AH es una cabecera de extensión en IPv6, encargada de entregar integridad y autenticación a los datos. Figura 3.1: Cabecera de Autenticación Siguiente Cabecera: Indica la siguiente cabecera a procesar, puede ser otra cabecera de extensión IPv6 o una cabecera TCP o UDP. Tamaño de los Datos: Especifica la longitud de los datos. SPI: Permite la ubicación de la Asociación de Seguridad (SA) en la SAD. En este caso algoritmos de autenticación, claves, etc. 17 18 Número de Secuencia: Identifica cada paquete y garantiza un orden, además de evitar repeticiones. ICV: Valor para comprobar la autenticidad e integridad de los datos. El funcionamiento de AH se basa en un algoritmo llamado HMAC (Código Resumido de Autenticación de Mensaje). HMAC consiste en aplicar una función de resumen (MD5 o SHA-1), a una entrada de datos (Cabeceras IP, de extensión y datos) y una clave, generando una cadena de bits (ICV). Las claves y funciones de resumen, son definidas en la Asociación de Seguridad. En la Figura 3.2, vemos el procedimiento de AH sobre los datos. Si el paquete Figura 3.2: Funcionamiento de AH fuese modificado en su viaje, el receptor no obtendrá el mismo ICV, descartándose el paquete. En cambio, si el ICV coincide con la calculada por el receptor, se asegura el origen y que el paquete no ha sido alterado. Uno de los problemas enfrentados por AH, corresponde a algunos campos de las cabeceras que sufren modificaciones en el tránsito hasta llegar a su destino (ejemplo, el campo Lı́mite de Saltos), con lo cual, cambia la entrada de datos del 19 algoritmo HMAC. AH define los campos de las cabeceras IP y de extensión, como mutables e inmutables, y autenticará sólo los inmutables y los mutables los tratará como cero. Por esta razón es rechazado en cierta manera el uso de NAT, al dejar los campos de direcciones origen y destino expuestos. Figura 3.3: Datagrama IPv6 En la Figura 3.3, se muestra la estructura normal de un datagrama IPv6. A continuación se verá como queda dicho datagrama al aplicar AH en modo transporte y modo túnel. También se observará el alcance de sus servicios. Figura 3.4: Datagrama después de aplicar AH modo transporte En el modo transporte, la cabecera de autenticación se coloca entre las cabeceras de extensión y la cabecera TCP. Los servicios son entregados solamente a los campos inmutables, por lo cual se debe procesar cuáles son los campos mutables dentro de las cabeceras IPv6 y de extensión. En el modo túnel se crea una nueva cabecera IPv6 y una copia de las cabeceras de extensión, que se antepone a la cabecera AH. En este caso, las cabecera IPv6 y de extensión originales recibirán los servicios de AH por completo. La nueva cabecera IPv6, contendrá las direcciones de los encaminadores que implementen IPsec. 20 Figura 3.5: Datagrama después de aplicar AH modo túnel 3.2. Cifrado de Seguridad de Datos (ESP) ESP es una alternativa de seguridad robusta. Ofrece confidencialidad, además de integridad y autenticidad de datos. El objetivo principal de ESP es encapsular las cabeceras de la Capa de Transporte y los datos, para cifrarlos y ası́ limitar la visualización de su contenido al emisor y el receptor. Figura 3.6: Cabecera de ESP SPI: Permite la ubicación de la Asociación de Seguridad (SA) en la SAD. En este caso algoritmos de cifrado y autenticación, claves, etc. 21 Número de Secuencia: Identifica cada paquete y garantiza un orden, además de evitar repeticiones. Datos: Contiene los datos cifrados, o sea las cabeceras TCP o UDP, y los datos. Relleno: Contiene un relleno agregado al campo de Datos, con el fin de ocultar su longitud real. Tamaño del Relleno: La cantidad de relleno agregado. Cero significa que no hay relleno. Siguiente Cabecera: Indica la siguiente cabecera a procesar, una cabecera TCP o UDP. ICV: Valor para comprobar la autenticidad e integridad de los datos. Figura 3.7: Funcionamiento de ESP 22 El funcionamiento de ESP es representado en la Figura 3.7. El emisor envı́a sus datos, que serán procesados por un algoritmo de cifrado simétrico (DES, 3DES o AES) junto a una clave previamente compartida con el receptor, produciendo el mensaje cifrado. El receptor toma el mensaje y junto a su clave lo descifra con el mismo algoritmo. Los Algoritmos de cifrado, resumen y claves están definidos en la Asociación de Seguridad ocupada para la comunicación. El funcionamiento de la autenticación e integridad ofrecida por ESP, es similar al de AH. Las especificaciones de IPsec recomiendan el uso de ESP con autenticidad e integridad, ya sea con el mismo ESP o con AH. Esto debido a la inseguridad demostrada por DES, siendo posible romper su cifrado y quedar expuesto a ataques activos. A partir del datagrama IPv6 normal, se verán los cambios al aplicar ESP en modo transporte y modo túnel. Figura 3.8: Datagrama IPv6 Figura 3.9: Datagrama IPv6 luego de aplicar ESP modo transporte En comparación con AH los servicios de integridad y autenticación de datos no tienen tanto alcance, ya que no cubren las cabeceras IPv6 y de extensión. ESP ICV, es el único campo no cifrado, porque a partir de este se chequea la integridad y autenticidad de los datos, proceso anterior al descifrado de datos. 23 Figura 3.10: Datagrama IPv6 luego de aplicar ESP modo túnel En modo túnel también se crean las copias de cabeceras, y los servicios alcanzan a las cabeceras originales solamente. 3.3. Aspectos prácticos en el uso de IPsec IPv6 e IPsec, actualmente se encuentran implementadas en los distintos Sistemas Operativos disponibles. En las distribuciones de Linux desde el Kernel 2.4 hacia adelante. Se decidió usar Debian 4.0 (Kernel 2.6.18) por simplicidad con la instalación y obtención de los paquetes, ası́ como para facilitar las pruebas, generando tráfico en la Red con protocolos como HTTP, SMTP, etc, teniendo en cuenta que dispone varios servicios de este estilo por defecto. Algunos textos indican la recomendación de compilar el Kernel para utilizar IPsec, para ası́ evitar problemas. La idea es integrar los módulos requeridos al Kernel, y no cargarlos en tiempo ejecución. Al principio se siguió este procedimiento, pero más tarde se comprobó no existir mucha diferencia entre usar el Kernel compilado y el Kernel genérico, adémas de no generar problemas. El soporte de los algoritmos de cifrado y de resumen se encuentra en el Kernel. La versión de Debian empleada, soporta los algoritmos de resumen MD5 SHA1 y los algoritmos de cifrado DES y 3DES AES 24 BLOWFISH El primer paso serı́a entonces, seleccionar las herramientas de trabajo (ver detalles en Apéndice A.1). Para establecer las Asociaciones de Seguridad (SAs) se suele utilizar el paquete ”ipsec-tools”, que permite escribir en la SAD y en la SPD. De esta forma, se pueden definir manualmente las SAs, a través de claves previamente compartidas. Para lograr una configuración automática de las SAs, es necesario utilizar una implementación del protocolo IKE, como racoon, freeswan y openswan. Por la existencia de abundante documentación, se seleccionó racoon como alternativa. Una vez definidas las herramientas, se armó una configuración básica con el siguiente esquema: Figura 3.11: Conexión en Modo Transporte La comunicación entre dos hosts en modo transporte, con sólo AH, sólo ESP y conjuntamente ambos. En modo transporte cada host implementa IPsec. La idea, era comprobar la aplicación de IPsec sobre el tráfico IPv6, por lo cual, se deberı́a utilizar una herramienta para monitorear los paquetes y ver su efecto. Se empleo tcpdump, una herramienta de monitoreo y análisis de red muy potente y ampliamente extendida. Era necesario generar tráfico, quizás la manera más sencilla de hacerlo es con el comando ping, en IPv6 se denomina ping6. Pero, como es interesante ver si efectivamente IPsec es aplicado sobre todo tipo de tráfico y no solo ICMP6 (ping6), se optó por montar un servidor web y un servidor de correo. Con esto, se comprobarı́a su aplicación sobre tráfico HTTP, SMTP e ICMP. El servidor web Apache2 viene integrado en Debian 4 y soporta IPv6 en su configuración por defecto. 25 El servidor de correo Postfix incluye soporte IPv6 con una pequeña modificación en su archivo de configuración. inet_protocols = ipv6 La configuración de la Red: Figura 3.12: Configuración Conexión en Modo Transporte Mediante el comando setkey (ipsec-tools) se pueden definir las Asociaciones y Polı́ticas de Seguridad, para lo cual se debe editar el archivo /etc/ipsec-tools.conf. Para especificar una SA, seguir la siguiente sintáxis: add direccion-fuente direccion-destino ah|esp spi -m tunnel|transport -A algoritmo clave #Para algoritmos de resumen -E algoritmo clave #Para algoritmos de cifrado ; #Para terminar la sentencia Para adicionar se utiliza add, seguido de la dirección origen del paquete (puede ser un host o una red) y dirección del destinatario. El protocolo a usar, AH o ESP. El SPI (ı́ndice de Parámetros de Seguridad). El modo, con el parámetro -m, puede ser túnel o transporte. -A (algoritmo de resumen) o -E (algoritmo de cifrado) seguido de los algoritmos y sus respectivas claves. Las claves deben ser del largo requerido por el algoritmo, y pueden estar en ASCII o hexadecimal, de la última forma anteponer ’0x’. 26 En el caso de ESP, primero van los algoritmos de cifrado y luego los algoritmos de resumen. Esta es la sintaxis básica de las Asociaciones de Seguridad, y deben ser iguales en ambos extremos de la comunicación. Para las Polı́ticas de Seguridad se realiza de manera similar. spdadd dir-fuente[puerto] dir-destino[puerto] protocolo -P out|in ipsec|discard ah|esp/transport|tunnel/dir_gw_fuente-dir_gw_destino/use|require #Se pueden emplear ah y esp simultaneamente. #direccion_gw solamente en modo tunel ; spdadd seguido de las direcciones origen y destino (host o red), al lado de cada dirección si se desea se puede especificar algún puerto entre corchetes (ejemplo, puerto 80 HTTP). El protocolo de los datos a proteger (debe estar en el archivo /etc/protocols). Si se coloca any se protegerá todo el tráfico. -P y el sentido del paquete, entrante o saliente (in/out), esto depende de las direcciones origen y destino. ipsec o discard, ipsec significa aplicarle la seguridad que tenga definida, mientras que discard, descartará el paquete. El protocolo AH o ESP. El modo de uso, transporte o túnel. En el caso de ser modo túnel, se deben indicar las direcciones de los enrutadores que implementan IPsec. Finalmente use o require. use, significa que de haber seguridad asociada al tráfico se aplica, de no haber simplemente se comunican sin seguridad. Mientras tanto, require significa que sólo se comunican si hay seguridad asociada al tráfico. Para escribir en la SAD y SPD, ejecutar setkey -f /etc/ipsec-tools.conf. Los archivos de configuración de las SAs y SPs se pueden ver en Apéndice A.1. Las Polı́ticas de Seguridad son bastante flexibles y permiten aplicar filtros, pudiendo proteger solamente algunos 27 puertos o protocolos. Esto es muy útil, debido a que generalmente no se necesita proteger todo el tráfico IP. Se podrı́a brindar seguridad solamente al protocolo TCP por ejemplo, o más especificamente al puerto 21 (FTP). La generación del tráfico se hizo con eventos como cargar una página HTML del servidor web, conectarse con el comando telnet al puerto 25 (SMTP) para redactar un correo, o un simple ping (ping6). Al analizar el tráfico con tcpdump se aprecia claramente la estructura de cabeceras encadenadas de IPv6. Comienza la cabecera IPv6 y le sigue AH o ESP dependiendo de cual se esté usando. Cuando estén presentes ambos, se ven las tres cabeceras en el orden IPv6, AH, ESP. Ver detalles en Apéndice A.2. Para la comprobación del correcto funcionamiento de IPsec, primeramente se monitoreó sobre distinto tráfico sin IPsec. Una vez hecho esto, se procedió a monitorear el tráfico con IPsec aplicado. Con tcpdump ejecutado de esta forma: tcpdump -X -s 1500 se puede apreciar el contenido de los paquetes, en hexadecimal y en ASCII, ası́ se verifica el cifrado correcto de datos. Ver Apéndice A.3. La configuración manual de IPsec, debe llevarse a cabo en ambos extremos de la comunicación, estableciendo las mismas Asociaciones de Seguridad. Obviamente esto puede parecer bastante engorroso, sobre todo si se quiere tener muchos canales de comunicación segura, por lo cual el Protocolo IKE nos otorga la automatización de este proceso. Racoon es una implementación de IKE, y nos permite de manera sencilla manejar las Asociaciones de Seguridad. Requiere de una autentificación para comenzar la negociación, se optó por el método de claves previamente compartidas. Esto nos brinda, una forma de agregar canales seguros, solamente indicando la clave pre-compartida, los algoritmos de cifrado y resumen. A partir de esta información, los hosts remotos crearán sus Asociaciones de Seguridad y decidirán cual aplicar. Como ejemplo, si un host, dispone de DES, 3DES, SHA1 y MD5, este tendrá dos SAs para usar con AH (SHA1, MD5) y cuatro SAs para ESP (DES con SHA1, 3DES con 28 SHA1, DES con MD5, 3DES con MD5) (Ver archivo de configuración en Apéndice A.1). Las Polı́ticas de Seguridad deberán ser cargadas manualmente usando el comando setkey y el archivo /etc/ipsec-tools.conf mencionado antes. Racoon soporta autentificación mediante certificados digitales, lo cual resulta mucho más escalable para comunicación entre más de dos hosts. Esta funcionalidad no fué probada, ya que solamente se montaron redes pequeñas. Con estas herramientas, teniendo en cuenta la alternativa entre una configuación manual o automática de las SAs, se puede establecer una conexión segura entre dos nodos. Es costoso configurar cada equipo de una red con IPsec, por lo cual, el modo túnel es una muy buena opción para los administradores de grandes redes. La idea del modo túnel es conectar dos redes remotas de forma segura, esto a través de la implementación de IPsec en sus enrutadores, el esquema se muestra a continuación. Figura 3.13: Conexión en Modo Túnel A todo el tráfico saliente de LAN 1 en dirección a LAN 2 el enrutador 1 aplica IPsec. Al llegar los datos al enrutador 2 este le aplica IPsec y lo envı́a a su destinatario final. Además de esto, los paquetes son modificados, y las direcciones IP ahora corresponderán a la de los enrutadores (origen y destino), por consiguiente, en el caso de emplear cifrado 29 (ESP), si alguien intercepta un paquete en el trayecto entre el Enrutador 1 y 2, no prodrı́a obtener las direcciones de origen y destino, porque se encuentran cifradas junto a los datos. Este esquema, donde se ocultan las identidades del emisor y receptor además de cifrar y autenticar los datos, es conocido como VPN (Red Privada Virtual), un canal de comunicación seguro sobre un medio de comunicación inseguro (Internet). Para poner a prueba el modo túnel, se dispuso de cuatro computadores, en donde dos cumplı́an el rol de enrutadores y los otros dos eran clientes, obviamente de redes diferentes. A continuación se muestra la configuración de los equipos: Como se aprecia en la tabla se tienen tres redes, cada una definida a través de su prefijo de Host pc1 pc2 gw1 gw1 gw2 gw2 Dirección IPv6 2001:db8:100::1 2001:db8:200::1 2001:db8:100::100 2001:db8:150::1 2001:db8:200::100 2001:db8:150::2 Prefijo de Red 2001:db8:100::/64 2001:db8:200::/64 2001:db8:100::/64 2001:db8:150::/64 2001:db8:200::/64 2001:db8:150::/64 Interfaz de Red eth0 eth0 eth0 eth1 eth0 eth1 Cuadro 3.1: Tabla con la Configuración de la Red red. La arquitectura de red, fue Ethernet 10 Base T. En este escenario, el pc1 también será el servidor web y de correo. Con el esquema de la figura 3.14 se realizaron las pruebas de comprobación. Con el comando tpcdump se comprobó el cifrado de los datos, y la modificación de la cabecera IP con las direcciones de los respectivos enrutadores seguros. Efectivamente se pierde la identidad del origen y destino. Si un tercero interceptara el paquete solamente verı́a las direcciones de los enrutadores. Ver Apéndice A.4. También se observó como son tratados los paquetes al llegar a los enrutadores, sacándole las cabeceras hasta dejarlo con la cabecera IP original. Como ejemplo, si se emplea AH con ESP, se procesará primero la cabecera AH realizando la comprobación de la autenticación e integridad y se extraerá. Le seguirá el procesamiento de la cabecera ESP, descifrando los datos y finalmente se llega a la cabecera IP original. Ver Apéndice A.5. Racoon también fue empleado en modo túnel. Para ver la configuración Apéndice A.6. 30 Figura 3.14: Configuración Conexión en Modo Túnel Con el comando tcpdump se puede ver el contenido del tráfico en los enrutadores, o sea es una herramienta potente que fácilmente puede ser utilizada en contra del objetivo que persigue IPsec, brindar seguridad. Si una tercera persona lograse monitorear desde un enrutador, entonces su LAN quedarı́a totalmente expuesta. Para restringir el acceso al enrutador y a la Red se recomienda la implantación de un Firewall. ip6tables es una buena alternativa, solamente cambia el manejo de direcciones IPv4 por IPv6 respecto del original (iptables) y no implementa NAT (no es necesario en IPv6). En el transcurso del análisis de funcionamiento de IPsec, se pudo evidenciar el trabajo que realiza sobre los datos transmitidos, cambiar cabeceras, procesar los algoritmos, analizar a qué tráfico aplicar, etc. Por lo cual se asume un aumento en el tiempo de transmisión, debido al procesamiento requerido. En el modo túnel toma una importancia mayor, ya que un enrutador deberá procesar todo el tráfico saliente y entrante de su LAN. En base a esta suposición se propuso investigar el impacto en el tiempo asociado a una red protegida con IPsec. Capı́tulo IV Pruebas y Resultados El objetivo de las pruebas, es ver el impacto en el tiempo entre una red protegida con IPsec y una red no protegida. Se transferirán archivos de tamaño creciente, para ası́ poder ver los efectos en el tiempo de la transmisión de datos. Se utilizará la configuración en modo túnel montada con anterioridad, añadiéndole un servidor FTP al pc1, para poder transferir los archivos de prueba. El servidor FTP es ProFtp, el cual trae soporte integrado de IPv6. Como es una red apartada, no habrá tráfico que provoque congestión, aunque de todas maneras se comprobó monitoreando con tcpdump. En base a esto se definió un total de 10 transferencias para cada archivo de prueba, obteniendo finalmente un promedio. Los tamaños de los archivos de prueba. 50 MB 95 MB 145 MB 195 MB 31 32 Las Asociaciones de Seguridad a probar fueron las siguientes: AH con SHA-1 AH y ESP con SHA-1 - 3DES ESP con SHA-1 - 3DES Se descartó ESP con sólo cifrado, por no ser una opción muy segura, como se mencionó antes queda expuesto a ataques activos. Los algoritmos 3DES y SHA-1 fueron seleccionados por ser de los más seguros actualmente. Los archivos de configuración se encuentran en Apéndice A.7. Para crear otro escenario de prueba, se usó el comando ping6, que permite cambiar el tamaño de los paquetes con el parámetro -s. Ası́ se podrá estudiar tiempos mucho más pequeños. A partir de esta opción, se definieron los siguientes tamaños de paquetes. 64 bytes 128 bytes 256 bytes 512 bytes 1024 bytes 33 Por último se estudiará la diferencia de tiempo de transmisión de datos usando IPv6 e IPv4. En la configuración de la red IPv4 se ocupó iptables en los enrutadores, implementando NAT. Esto debido a que hoy en dı́a las redes locales IPv4 con frecuencia lo emplean, para conectarse a Internet. Ver Apéndice A.8. Figura 4.1: Configuración de Red IPv4 La ejecución de las pruebas se hizo con un script, que se puede ver en Apéndice A.9. A continuación el gráfico obtenido con las transferencias FTP y tráfico ICMP6. 34 Transferencias FTP 300 IPv4 IPv6 Tiempos (segundos) 250 200 150 100 50 0 0 50 100 Tamaño de Datos (MB) 150 200 Paquetes ICMP con Ping 3.5 IPv4 IPv6 Tiempos (milisegundos) 3 2.5 2 1.5 1 0.5 100 200 300 400 500 600 700 Tamaño de Datos (bytes) 800 900 1000 Figura 4.2: IPv6 v/s IPv4, sin IPsec Ambos tienen un comportamiento lineal muy similar, la diferencia de tiempo es totalmente mı́nima. Quizás sin el uso de NAT IPv4 tendrı́a un mejor rendimiento, pero hoy en dı́a está tan extendido, que no serı́a muy representativo no considerarlo en el esquema. 35 A continuación el comportamiento al aplicar de IPsec con las Asociaciones de Seguridad definidas anteriormente. Transferencias FTP 300 AH−ESP ESP AH Tiempo (segundos) 250 200 150 100 50 0 0 50 100 Tamaño de Datos (MB) 150 200 Paquetes ICMP con Ping 3.5 AH−ESP ESP AH Tiempo (milisegundos) 3 2.5 2 1.5 1 0.5 100 200 300 400 500 600 700 Tamaño de Datos (bytes) 800 900 1000 Figura 4.3: Opciones de Seguridad IPsec Claramente AH al emplear solamente un algoritmo de resumen, logra mejores resultados que las otras dos alternativas. ESP-AH y ESP mantienen un comportamiento similar, ambos funcionando con los mismos algoritmos. En base a esto, es mejor opción ESP con AH, recordando que el alcance de sus servicios de autenticidad e integridad es mayor al de ESP. 36 Transferencias FTP 300 AH−ESP AH Sin IPsec Tiempo (segundos) 250 200 150 100 50 0 0 50 100 Tamaño de Datos (MB) 150 200 Paquetes ICMP con Ping 3.5 AH−ESP AH Sin IPsec Tiempo (milisegundos) 3 2.5 2 1.5 1 0.5 100 200 300 400 500 600 700 Tamaño de Datos (bytes) 800 900 1000 Figura 4.4: Comparación entre Alternativas IPsec y el no emplear IPsec A primera vista, podrı́a ser poco considerable el aumento de tiempo entre una red con y sin IPsec. Sin embargo, si se tuviera una LAN mucho más grande los enrutadores podrı́an provocar una diferencia de tiempo mucho mayor, dependiendo del tráfico concurrente que reciban y que deban procesar. Capı́tulo V Conclusiones IPsec es una solución de seguridad muy potente y flexible, además de ser totalmente transparente al usuario. Dependiendo de su configuración se puede proteger todo el tráfico de una red o solamente un tipo particular. La base de sus servicios son los algoritmos de cifrado y resumen, al mismo tiempo en que algunos algoritmos se vayan debilitando irán apareciendo otros más potentes, por lo cual, se tiene una estructura escalable a tráves de los años. El uso de IPsec trae consigo procesamiento extra, como agregar cabeceras, modificar cabeceras, aplicar diversos algoritmos, etc. Las pruebas realizadas para ver el efecto de dicho procesamiento sobre el tiempo de transmisión tuvieron resultados muy lineales, debido a la uniformidad del proceso aplicado a cada paquete, generalmente dado por los algoritmos utilizados, y que no varı́a con el aumento del tamaño de los datos. Sin embargo, si se tuviera una red demasiado grande en modo túnel, el enrutador que implementa IPsec, podrı́a verse sobrecargado si no es una máquina de procesamiento potente. En base a esto, se aconseja poner énfasis en las caracterı́sticas del enrutador que implemente IPsec, para que sea capaz de procesar gran cantidad de tráfico concurrente y no aumentar el tiempo de transmisión. De las opciones de seguridad proporcionadas por IPsec, combinar ESP con AH resulta ser la más aconsejable aunque requiere de mayor procesamiento. El modo túnel con ambos protocolos permite establecer una VPN (Red Privada Virtual) sobre Internet. En general, IPsec es altamente configurable según las necesidades de la red en cuestión. 37 38 Es altamente recomendable complementar la seguridad proporcionada por IPsec con herramientas como un Firewall, con el fin de restringir el acceso a la máquina que implemente IPsec, para evitar la intercepción o visualización de paquetes por parte de terceros. Es decir, en el caso particular de tener un enrutador con IPsec, no conectarlo directamente a Internet, anteponer un Firewall. Finalmente, al estar ligados directamente IPsec con IPv6, a medida que IPv6 se vaya extendiendo con el pasar de los años, IPsec se irá convirtiendo en la solución de seguridad estándar en Internet. 5.1. Trabajos Futuros A continuación se exponen algunos trabajos que podrı́an complementar el tema abordado por el presente proyecto. Investigar en profundidad algoritmos de Resumen y Cifrado, ver como funcionan y cuales son las mejores alternativas para usar con IPsec. Investigar el nuevo Protocolo IPv6, para tener un referente acerca de las otras novedades y mejoras que trae consigo, a parte del tema central de este trabajo. Bibliografı́a [1] C. Madson & R. Glenn. The Use of HMAC-MD5-96 within ESP and AH (RFC 2403), pages 1-7, November 1998. [2] C. Madson & R. Glenn. The Use of HMAC-SHA-1-96 within ESP and AH (RFC 2404), pages 1-7, November 1998. [3] S. Deering & R. Hinden. Internet Protocol, Version 6 (IPv6) Specification (RFC 2460), pages 1-39, December 1998. [4] S. Deering & R. Hinden. IP Version 6 Addressing Architecture (RFC 4291), pages 1-22, February 2006. [5] S. Kent & K. Seo. Security Architecture for the Internet Protocol (RFC 4301), pages 1-99, December 2005. [6] S. Kent. IP Authentication Header (RFC 4302), pages 1-33, December 2005. [7] S. Kent. IP Encapsulating Security Payload (RFC 4303), pages 1-43, December 2005. [8] Ralf Spenneberg. IPsec How To, 2003. [9] Fco. Javier Aliaga. IPsec y Firewalls en IPv6. [10] Manuel J. Lucena. Criptografı́a y Seguridad en Computadores, Cuarta Edición, Versión 0.7.0. [11] Pello Xabier Altadill. IPTABLES Manual Práctico. 39 Apéndice A Este apéndice contiene los archivos de configuración para las pruebas realizadas y las capturas obtenidas con tcpdump. A.1 Herramientas y Configuraciones Modo Transporte Herramientas Utilizadas para las pruebas. Apache 2.2.3. ProFTPD 1.3.0. Postfix 2.3.8. Tcpdump 3.9.5. ipsec-tools 0.6.6. Configuración de IPsec con AH en pc2. # Config de 2001:db8:100::2 ## Borra el contenido de SAD y SPD flush; spdflush; # SAs para AH, MD5 claves de 128 bits add 2001:db8:100::1 2001:db8:100::2 ah 0x200 -m transport -A hmac-md5 0x7aeaca3f87d060a12f4a4487d5a5c335; add 2001:db8:100::2 2001:db8:100::1 ah 0x300 -m transport -A hmac-md5 0xf6ddb555acfd9d77b03ea3843f265325; ## Politicas de seguridad spdadd 2001:db8:100::1 2001:db8:100::2 any -P in ipsec ah/transport//require; spdadd 2001:db8:100::2 2001:db8:100::1 any -P out ipsec ah/transport//require; 40 41 Configuración de IPsec con AH y ESP. # Config de 2001:db8:100::2 ## Borra el contenido de SAD y SPD flush; spdflush; # SAs para AH, SHA-1 claves de 160 bits add 2001:db8:100::1 2001:db8:100::2 ah 0x200 -m transport -A hmac-sha1 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae6; add 2001:db8:100::2 2001:db8:100::1 ah 0x300 -m transport -A hmac-sha1 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5; # SAs para ESP, 3DES con claves de 192 bits add 2001:db8:100::1 2001:db8:100::2 esp 0x201 -m transport -E 3des-cbc 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831; add 2001:db8:100::2 2001:db8:100::1 esp 0x301 -m transport -E 3des-cbc 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df; ## Politicas de seguridad con ESP y AH conjuntamente spdadd 2001:db8:100::1 2001:db8:100::2 any -P in ipsec esp/transport//require ah/transport//require; spdadd 2001:db8:100::2 2001:db8:100::1 any -P out ipsec esp/transport//require ah/transport//require; Archivo de Configuración racoon en modo transporte. path pre_shared_key "/etc/racoon/psk.txt"; remote 2001:db8:100::2 { exchange_mode main; proposal { encryption_algorithm des; hash_algorithm sha1; authentication_method pre_shared_key; dh_group 2; } } sainfo anonymous { pfs_group 1; encryption_algorithm 3des; authentication_algorithm hmac_md5; compression_algorithm deflate; } 42 A.2 Capturas Modo Transporte Captura de tráfico ICMP6 sin seguridad. reading from file trafico_icmp_sin_seguridad.cap, link-type EN10MB (Ethernet) 20:21:00.427752 IP6 2001:db8:100::2 > 2001:db8:100::1: ICMP6, echo request, seq 1, length 64 20:21:00.427903 IP6 2001:db8:100::1 > 2001:db8:100::2: ICMP6, echo reply, seq 1, length 64 20:21:01.426760 IP6 2001:db8:100::2 > 2001:db8:100::1: ICMP6, echo request, seq 2, length 64 20:21:01.426908 IP6 2001:db8:100::1 > 2001:db8:100::2: ICMP6, echo reply, seq 2, length 64 Captura de tráfico ICMP6 con autenticación e integridad (AH). reading from file trafico_icmp_con_ah.cap, link-type EN10MB (Ethernet) 20:47:59.150557 IP6 2001:db8:100::2 > 2001:db8:100::1: AH(spi=0x00000300,seq=0x20): ICMP6, echo request, seq 1, length 64 20:47:59.150746 IP6 2001:db8:100::1 > 2001:db8:100::2: AH(spi=0x00000200,seq=0x1b): ICMP6, echo reply, seq 1, length 64 20:48:00.150210 IP6 2001:db8:100::2 > 2001:db8:100::1: AH(spi=0x00000300,seq=0x21): ICMP6, echo request, seq 2, length 64 20:48:00.150395 IP6 2001:db8:100::1 > 2001:db8:100::2: AH(spi=0x00000200,seq=0x1c): ICMP6, echo reply, seq 2, length 64 Captura de tráfico ICMP6 con autenticación, integridad (AH) y confidencialidad. reading from file trafico_icmp_con_ah_esp.cap, link-type EN10MB (Ethernet) 19:49:52.349591 IP6 2001:db8:100::2 > 2001:db8:100::1: AH(spi=0x00000300,seq=0x81): ESP(spi=0x00000301,seq=0x81), length 88 19:49:52.349826 IP6 2001:db8:100::1 > 2001:db8:100::2: AH(spi=0x00000200,seq=0x75): ESP(spi=0x00000201,seq=0x75), length 88 19:49:53.348762 IP6 2001:db8:100::2 > 2001:db8:100::1: AH(spi=0x00000300,seq=0x82): ESP(spi=0x00000301,seq=0x82), length 88 19:49:53.348978 IP6 2001:db8:100::1 > 2001:db8:100::2: AH(spi=0x00000200,seq=0x76): ESP(spi=0x00000201,seq=0x76), length 88 Captura de tráfico HTTP sin IPsec. 19:54:30.592300 IP6 win 19:54:30.592320 IP6 ack 2001:db8:100::2.4351 > 2001:db8:100::1.www: S 1810558380:1810558380(0) 5760 <mss 1440,sackOK,timestamp 392731 0,nop,wscale 3> 2001:db8:100::1.www > 2001:db8:100::2.4351: S 385639318:385639318(0) 1810558381 win 5712 <mss 1440,sackOK,timestamp 687439 392731,nop,wscale 7> Captura de tráfico HTTP con autenticación e integridad (AH). 20:45:22.998726 IP6 2001:db8:100::2 > 2001:db8:100::1: AH(spi=0x00000300,seq=0x9): 4622 > www: [|tcp] 20:45:22.998836 IP6 2001:db8:100::1 > 2001:db8:100::2: AH(spi=0x00000200,seq=0x8): www > 4622: [|tcp] 43 Captura de tráfico HTTP con autenticación, integridad (AH) y cifrado (ESP). 19:41:55.481737 IP6 2001:db8:100::2 > 2001:db8:100::1: AH(spi=0x00000300,seq=0x43): ESP(spi=0x00000301,seq=0x43), length 64 19:41:55.481934 IP6 2001:db8:100::1 > 2001:db8:100::2: AH(spi=0x00000200,seq=0x3f): ESP(spi=0x00000201,seq=0x3f), length 64 Captura de tráfico SMTP sin seguridad. 20:18:05.953217 IP6 win 20:18:05.953323 IP6 ack 2001:db8:100::2.3887 > 2001:db8:100::1.smtp: S 3293761812:3293761812(0) 5760 <mss 1440,sackOK,timestamp 746569 0,nop,wscale 3> 2001:db8:100::1.smtp > 2001:db8:100::2.3887: S 1647253497:1647253497(0) 3293761813 win 5712 <mss 1440,sackOK,timestamp 1698 746569,nop,wscale 7> Captura de tráfico SMTP con autenticación e integridad (AH). 20:46:33.120777 IP6 2001:db8:100::2 > 2001:db8:100::1: AH(spi=0x00000300,seq=0xf): 4961 > smtp: [|tcp] 20:46:33.120917 IP6 2001:db8:100::1 > 2001:db8:100::2: AH(spi=0x00000200,seq=0xd): smtp > 4961: [|tcp] Captura de tráfico SMTP con autenticación, integridad (AH) y cifrado (ESP). 19:47:05.318088 IP6 2001:db8:100::2 > 2001:db8:100::1: AH(spi=0x00000300,seq=0x70): ESP(spi=0x00000301,seq=0x70), length 64 19:47:05.318298 IP6 2001:db8:100::1 > 2001:db8:100::2: AH(spi=0x00000200,seq=0x65): ESP(spi=0x00000201,seq=0x65), length 64 A.3 Comprobación de Cifrado ESP Captura de tráfico HTTP sin IPsec. 20:33:26.757226 IP6 2001:db8:100::2.4130 > 2001:db8:100::1.www: P ack 1 win 720 <nop,nop,timestamp 976769 231890> 0x0000: 6000 0000 01d7 0640 2001 0db8 0100 0000 0x0010: 0000 0000 0000 0002 2001 0db8 0100 0000 0x0020: 0000 0000 0000 0001 1022 0050 ffeb f58a 0x0030: 9b9b 9d04 8018 02d0 1e1a 0000 0101 080a 0x0040: 000e e781 0003 89d2 4745 5420 2f20 4854 0x0050: 5450 2f31 2e31 0d0a 486f 7374 3a20 5b32 0x0060: 3030 313a 6462 383a 3130 303a 3a31 5d0d 0x0070: 0a55 7365 722d 4167 656e 743a 204d 6f7a 0x0080: 696c 6c61 2f35 2e30 2028 5831 313b 2055 0x0090: 3b20 4c69 6e75 7820 6936 3836 3b20 656e 0x00a0: 2d55 533b 2072 763a 312e 382e 302e 3134 0x00b0: 656f 6c29 2047 6563 6b6f 2f32 3030 3730 0x00c0: 3530 3520 2844 6562 6961 6e2d 312e 382e 0x00d0: 302e 3135 7e70 7265 3038 3033 3233 622d 0x00e0: 3065 7463 6832 2920 4570 6970 6861 6e79 0x00f0: 2f32 2e31 340d 0a41 6363 6570 743a 2074 0x0100: 6578 742f 786d 6c2c 6170 706c 6963 6174 0x0110: 696f 6e2f 786d 6c2c 6170 706c 6963 6174 1:440(439) ‘......@........ ................ .........".P.... ................ ........GET./.HT TP/1.1..Host:.[2 001:db8:100::1]. .User-Agent:.Moz illa/5.0.(X11;.U ;.Linux.i686;.en -US;.rv:1.8.0.14 eol).Gecko/20070 505.(Debian-1.8. 0.15~pre080323b0etch2).Epiphany /2.14..Accept:.t ext/xml,applicat ion/xml,applicat 44 0x0120: 0x0130: 0x0140: 0x0150: 0x0160: 0x0170: 0x0180: 0x0190: 0x01a0: 0x01b0: 0x01c0: 0x01d0: 0x01e0: 0x01f0: 696f 7874 7874 6d61 2e35 6167 302e 6469 7465 6574 7466 2e37 3330 206b 6e2f 2f68 2f70 6765 0d0a 653a 350d 6e67 0d0a 3a20 2d38 0d0a 300d 6565 7868 746d 6c61 2f70 4163 2065 0a41 3a20 4163 4953 3b71 4b65 0a43 702d 746d 6c3b 696e 6e67 6365 732d 6363 677a 6365 4f2d 3d30 6570 6f6e 616c 6c2b 713d 3b71 2c2a 7074 636c 6570 6970 7074 3838 2e37 2d41 6e65 6976 786d 302e 3d30 2f2a 2d4c 2c65 742d 2c64 2d43 3539 2c2a 6c69 6374 650d 6c2c 392c 2e38 3b71 616e 733b 456e 6566 6861 2d31 3b71 7665 696f 0a0d 7465 7465 2c69 3d30 6775 713d 636f 6c61 7273 2c75 3d30 3a20 6e3a 0a ion/xhtml+xml,te xt/html;q=0.9,te xt/plain;q=0.8,i mage/png,*/*;q=0 .5..Accept-Langu age:.es-cl,es;q= 0.5..Accept-Enco ding:.gzip,defla te..Accept-Chars et:.ISO-8859-1,u tf-8;q=0.7,*;q=0 .7..Keep-Alive:. 300..Connection: .keep-alive.... Captura de tráfico HTTP con autenticación, integridad y cifrado. 20:55:47.258710 IP6 2001:db8:100::2 > 2001:db8:100::1: AH(spi=0x00000300,seq=0x5): ESP(spi=0x00000301,seq=0x5), length 496 0x0000: 6000 0000 0208 3340 2001 0db8 0100 0000 ‘.....3@........ 0x0010: 0000 0000 0000 0002 2001 0db8 0100 0000 ................ 0x0020: 0000 0000 0000 0001 3204 0000 0000 0300 ........2....... 0x0030: 0000 0005 ea62 8a82 4577 a01c b7ee 5057 .....b..Ew....PW 0x0040: 0000 0301 0000 0005 b92c c88c 8a4d ca9e .........,...M.. 0x0050: 7b52 dcf6 a415 8a91 823c 60ce b77a c959 {R.......<‘..z.Y 0x0060: 5aaa 2b11 4d69 8185 76b0 1dbb 3383 772f Z.+.Mi..v...3.w/ 0x0070: 881b b06a e569 c232 cc1f 8657 f760 283b ...j.i.2...W.‘(; 0x0080: f0b6 0c27 84ed 5213 d340 4ebb cd6a bdf2 ...’..R..@N..j.. 0x0090: 196d 6712 a405 70d5 f278 4757 b9e9 86a0 .mg...p..xGW.... 0x00a0: b16f 9ae5 2970 1d01 f715 dee3 fc50 6a93 .o..)p.......Pj. 0x00b0: b0b7 fdfc dc8d dd8d f9b1 830b 12bc 835d ...............] 0x00c0: 25b7 54c7 27c4 8586 2b72 7bb5 794d 454e %.T.’...+r{.yMEN 0x00d0: 3ccf d310 0237 c60f acda 63f7 f058 ee11 <....7....c..X.. 0x00e0: f328 e37c f3d5 45c1 fba9 d9e9 e8d6 8cf2 .(.|..E......... 0x00f0: a37f b6f1 967c 6a97 5866 c615 2872 d745 .....|j.Xf..(r.E 0x0100: 4be3 5276 4c95 2258 41ac 8f65 8e19 8bb0 K.RvL."XA..e.... 0x0110: a0d9 20b4 e79a 26e1 b66a b8d5 b9cf 2d6c ......&..j....-l 0x0120: 79ae e5aa 7ab1 9c9e c807 7cab 849a 09a9 y...z.....|..... 0x0130: c12c 89fe 5a72 bf83 eafe 7c82 0442 06de .,..Zr....|..B.. 0x0140: 9b17 b656 ca6d b7a7 6dad 64ae 9852 7622 ...V.m..m.d..Rv" 0x0150: 8264 99ea 7cbe 6aad bbd5 30ec fe2b 28f2 .d..|.j...0..+(. 0x0160: 9ce6 680b 27d8 14bf 391f c4cb b4d7 b81f ..h.’...9....... 0x0170: 3e95 1f18 7a6b 0099 dc38 c041 ea48 389a >...zk...8.A.H8. 0x0180: ea54 9b84 7d85 4d44 cc12 7653 871d 617d .T..}.MD..vS..a} 0x0190: 2aca ee40 5195 ea8d 2f75 a9d3 b31c 3406 *..@Q.../u....4. 0x01a0: 4f5e 2899 cd58 b79a 0fd3 7850 b612 852f O^(..X....xP.../ 0x01b0: 5df5 5837 8b5b f21a e773 7e3f b1c1 3185 ].X7.[...s~?..1. 0x01c0: efe1 b036 05aa f3ec 6ec0 df1c 0935 100e ...6....n....5.. 0x01d0: c3f8 0ec8 c6e7 2d07 a5f0 ffeb 85f2 3915 ......-.......9. 0x01e0: fc51 e6f9 4ce1 afd7 b02a 6833 4a56 2513 .Q..L....*h3JV%. 0x01f0: 98ca 819c f300 edfb 3d17 d09c 94fc c817 ........=....... 45 0x0200: 0x0210: 0x0220: f5ef f456 635a c497 176f 4cd0 6a61 3913 e182 f5bb bff4 3af5 2a34 0d20 b540 2dee 8303 2627 a5cc c078 4e45 cb54 90d1 763a ...VcZ...oL.ja9. ......:.*4...@-. ..&’...xNE.T..v: A.4 Intercepción de Paquetes Captura de tráfico ICMP con autenticación, integridad y cifrado. De ser una tercera persona e interceptar paquetes, verı́a solamente las direcciones de los enrutadores. 17:21:55.551142 IP6 2001:db8:150::2 > 2001:db8:150::1: AH(spi=0x00000300,seq=0x1): [|ip6] 17:21:56.550034 IP6 2001:db8:150::2 > 2001:db8:150::1: AH(spi=0x00000300,seq=0x2): [|ip6] A.5 Procesamiento de Paquetes en los Enrutadores Captura de tráfico ICMP con autenticación e integridad (AH) en el Enrutador 1 2001:db8:150::1. 17:21:55.551142 17:21:55.551160 17:21:55.556218 17:21:56.550034 17:21:56.550034 17:21:56.550260 IP6 IP6 IP6 IP6 IP6 IP6 2001:db8:150::2 2001:db8:200::1 2001:db8:150::1 2001:db8:150::2 2001:db8:200::1 2001:db8:150::1 > > > > > > 2001:db8:150::1: 2001:db8:100::1: 2001:db8:150::2: 2001:db8:150::1: 2001:db8:100::1: 2001:db8:150::2: AH(spi=0x00000300,seq=0x1): ICMP6, echo request, seq 1, AH(spi=0x00000200,seq=0x1): AH(spi=0x00000300,seq=0x2): ICMP6, echo request, seq 2, AH(spi=0x00000200,seq=0x2): [|ip6] length 64 [|ip6] [|ip6] length 64 [|ip6] Captura de tráfico ICMP con autenticación, integridad (AH) y confidencialidad (ESP), en el Enrutador 1 2001:db8:150::1. 16:30:16.848881 16:30:16.848898 16:30:16.848900 16:30:16.849041 16:30:17.850008 16:30:17.850008 16:30:17.850008 16:30:17.850268 IP6 IP6 IP6 IP6 IP6 IP6 IP6 IP6 2001:db8:150::2 2001:db8:150::2 2001:db8:200::1 2001:db8:150::1 2001:db8:150::2 2001:db8:150::2 2001:db8:200::1 2001:db8:150::1 > > > > > > > > 2001:db8:150::1: 2001:db8:150::1: 2001:db8:100::1: 2001:db8:150::2: 2001:db8:150::1: 2001:db8:150::1: 2001:db8:100::1: 2001:db8:150::2: AH(spi=0x00000300,seq=0xb): [|ip6] ESP(spi=0x00000301,seq=0xb), length 128 ICMP6, echo request, seq 1, length 64 AH(spi=0x00000200,seq=0xb): [|ip6] AH(spi=0x00000300,seq=0xc): [|ip6] ESP(spi=0x00000301,seq=0xc), length 128 ICMP6, echo request, seq 2, length 64 AH(spi=0x00000200,seq=0xc): [|ip6] A.6 Configuración de Racoon Modo Túnel Archivo de configuración de racoon en modo túnel en Enrutador 2 2001:db8:150::2. path pre_shared_key "/etc/racoon/psk.txt"; remote 2001:db8:150::1 { exchange_mode main; proposal { encryption_algorithm des; hash_algorithm sha1; authentication_method pre_shared_key; dh_group 2; } } 46 sainfo address 2001:db8:200::/64 any address 2001:db8:100::/64 any { pfs_group 1; encryption_algorithm 3des; authentication_algorithm hmac_md5; compression_algorithm deflate; } A.7 Configuración de IPsec para Pruebas Archivo de configuración de IPsec para las pruebas en modo túnel. Configuración con ESP. # Config de 2001:db8:150::1 Gateway 1 ## Borra el contenido de SAD y SPD flush; spdflush; # SAs para ESP 3des con claves de 192 bits para el cifrado y # sha-1 con claves de 160 bits add 2001:db8:150::1 2001:db8:150::2 esp 0x201 -m tunnel -E 3des-cbc 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831 -A hmac-sha1 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae6; add 2001:db8:150::2 2001:db8:150::1 esp 0x301 -m tunnel -E 3des-cbc 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df -A hmac-sha1 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5; ## Politicas de Seguridad spdadd 2001:db8:100::/64 2001:db8:200::/64 any -P out ipsec esp/tunnel/2001:db8:150::1-2001:db8:150::2/require; spdadd 2001:db8:200::/64 2001:db8:100::/64 any -P in ipsec esp/tunnel/2001:db8:150::2-2001:db8:150::1/require; Configuración de ESP con AH. # Config de 2001:db8:150::1 Gateway 1 ## Borra el contenido de SAD y SPD # flush; spdflush; # SAs para AH claves de 160 bits add 2001:db8:150::1 2001:db8:150::2 ah 0x200 -m tunnel -A hmac-sha1 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae6; add 2001:db8:150::2 2001:db8:150::1 ah 0x300 47 -m tunnel -A hmac-sha1 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5; # SAs para ESP claves de 192 bits add 2001:db8:150::1 2001:db8:150::2 esp 0x201 -m tunnel -E 3des-cbc 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831; add 2001:db8:150::2 2001:db8:150::1 esp 0x301 -m tunnel -E 3des-cbc 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df; ## Politicas de seguridad spdadd 2001:db8:100::/64 2001:db8:200::/64 any -P out ipsec esp/tunnel/2001:db8:150::1-2001:db8:150::2/require ah/tunnel/2001:db8:150::1-2001:db8:150::2/require; spdadd 2001:db8:200::/64 2001:db8:100::/64 any -P in ipsec esp/tunnel/2001:db8:150::2-2001:db8:150::1/require ah/tunnel/2001:db8:150::2-2001:db8:150::1/require; Configuración IPsec con AH. # Config de 2001:db8:150::1 Gateway 1 ## Borra el contenido de SAD y SPD flush; spdflush; # SAs para AH claves de 160 bits add 2001:db8:150::1 2001:db8:150::2 ah 0x200 -m tunnel -A hmac-sha1 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae6; add 2001:db8:150::2 2001:db8:150::1 ah 0x300 -m tunnel -A hmac-sha1 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5; spdadd 2001:db8:100::/64 2001:db8:200::/64 any -P out ipsec ah/tunnel/2001:db8:150::1-2001:db8:150::2/require; spdadd 2001:db8:200::/64 2001:db8:100::/64 any -P in ipsec ah/tunnel/2001:db8:150::2-2001:db8:150::1/require; A.8 Configuración iptables IPv4 Archivo de Configuración iptables con NAT, en Enrutador 1 10.9.0.1. #!/bin/sh ## SCRIPT de IPTABLES - ejemplo del manual de iptables ## Ejemplo de script para firewall entre red-local e internet ## ## Pello Xabier Altadill Izura 48 ## www.pello.info - pello@pello.info echo -n Aplicando Reglas de Firewall... ## FLUSH iptables iptables iptables iptables de reglas -F -X -Z -t nat -F ## Establecemos politica por defecto iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT ## Empezamos a filtrar ## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN # El localhost se deja (por ejemplo conexiones locales a mysql) iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -s 10.9.0.0/24 -j ACCEPT # Al firewall tenemos acceso desde la red local iptables -A INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT # Ahora hacemos enmascaramiento de la red local # y activamos el BIT DE FORWARDING (imprescindible!!!!!) iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE # Con esto permitimos hacer forward de paquetes en el firewall, o sea # que otras m~ A¡quinas puedan salir a traves del firewall. echo 1 > /proc/sys/net/ipv4/ip_forward iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 3690 -j ACCEPT iptables -A INPUT -p udp --dport 3690 -j ACCEPT #iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 1:1024 -j DROP #iptables -A INPUT -s 0.0.0.0/0 -p udp --dport 1:1024 -j DROP 49 A.9 Script para las Pruebas El script empleado para realizar las pruebas. Se ejecutó con cada configuración de IPsec. #!/bin/sh echo ’50MB’ for n in 10 9 8 7 6 5 4 3 2 1; do time php5 descarga_ftp.php 50MB.tar.bz2 sleep 2 rm 50MB.tar.bz2 echo ’Borrado 50MB satisfactorio’ done echo ’95MB’ for n in 10 9 8 7 6 5 4 3 2 1; do time php5 descarga_ftp.php 95MB.zip sleep 2 rm 95MB.zip echo ’Borrado 95MB satisfactoriamente’ done echo ’145MB’ for n in 10 9 8 7 6 5 4 3 2 1; do time php5 descarga_ftp.php 145MB.tar.gz sleep 2 rm 145MB.tar.gz echo ’Borrado 145MB satisfactoriamente’ done echo ’195MB’ for n in 10 9 8 7 6 5 4 3 2 1; do time php5 descarga_ftp.php 195MB.tar.gz sleep 2 rm 195MB.tar.gz echo ’Borrado 195MB satisfactoriamente’ done ping6 -c 100 -s 56 -q 2001:db8:100::1 sleep 2 ping6 -c 100 -s 120 -q 2001:db8:100::1 sleep 2 ping6 -c 100 -s 248 -q 2001:db8:100::1 sleep 2 ping6 -c 100 -s 504 -q 2001:db8:100::1 sleep 2 ping6 -c 100 -s 1016 -q 2001:db8:100::1 sleep 2