ongreen4 1 Universidad Simón Bolı́var Laboratorio Docente de Computación Trimestre Enero-Marzo 2011 FIREWALLS, IPTABLES, NAT, DMZ Javier I Argüello Sosa 09-10047 1 de mayo de 2011 Índice general 1. Introducción 3 2. Conceptos básicos 2.1. Modelo TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. Segmentos TCP, datagramas UDP y Paquetes IP . . . . . . . . . . . . 2.3. Tipos de Mensaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 5 5 3. Firewalls 3.1. Qué puede hacer un Firewall? . . . . . . . . . . . . . . . . . . . . . . . 3.2. Tipos de firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3. Polı́ticas de un firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 7 8 4. Iptables 4.1. Tablas y cadenas . . . . . 4.2. Destinos de las reglas . . . 4.3. Seguimiento de conexiones 4.4. El comando iptables . . . 4.5. Especificando las reglas . . . . . . . 10 10 11 12 13 13 5. Proxy 5.1. Ventajas y Desventajas de un Proxy . . . . . . . . . . . . . . . . . . . . 5.2. Tipos de proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 15 16 6. Nat 6.1. NAT estática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2. NAT dinámico o PAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 17 17 7. DMZ 18 8. Implementación 8.1. Objetivos . . . . . . . . . 8.2. Requisitos . . . . . . . . . 8.3. Descripción de la red . . . 8.4. Instalación y configuración 20 20 20 20 21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . de un servidor DHCP 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.5. Implementación de un NAT haciendo uso de iptables . . . . . . . . . . 8.6. Implementación NAT mediante un servidor Proxy . . . . . . . . . . . . 2 21 23 Capı́tulo 1 Introducción Los origenes de Internet, se remontan a los años setenta, época en la que una masa minoritaria y privilegiada disfrutaba de una tecnologı́a que no habı́a tenido su momento de explosión. No existı́a la seguridad y tampoco era un aspecto de importancia. Se utilizaban los routers para mantener separadas las redes unas de otras.La visión de Internet como una comunidad relativamente pequeña de usuarios con máquinas compatibles, que valoraba la predisposición para el intercambio y la colaboración, terminó con una serie de importantes violaciones de seguridad de internet que se produjo a finales de los años ochenta cuando surgieron los primeros intrusos ”hackers”. En este momento la seguridad se convirtió en un aspecto vital de la administración de redes. Poco a poco las empresas fueron percatándose del peligro a base de perder tiempo, dinero e información, se empezaron a crear sistemas de seguridad para redes, entre los cuales se encuentran los famosos Firewalls o Cortafuegos. Este trabajo tiene como objetivo introducir al lector en los conceptos básicos de Firewall y sus posibles aplicaciones para mejorar la seguridad de su sistema. Por otro lado, mostrar los conceptos, usos y beneficios de implementar un NAT y DMZ a la hora de evaluar la seguridad de nuestra red. Por último, se mostrará como compartir la conexión de Internet mediante la configuración de un NAT haciendo uso de la herramienta Iptables e implementando un servidor Proxy haciendo uso de Squid. 3 Capı́tulo 2 Conceptos básicos 2.1. Modelo TCP/IP A finales de los años setenta y comienzo de los ochenta, se comenzaron a implementar las redes cuyo desarrollo surgió con mucho desorden en todos los sentidos. Inmediatamente la redes comenzaron a tomar gran tamaño y comenzaron los problemas de comunicación entre estas debido a las dificultades para intercambiar información. Por esta razón, se desarrolló un segundo modelo conocido como el modelo de referencia TCP/IP, donde los fabricantes y programadores de este modelo lograron llegar a un acuerdo sobre las comunicaciones de Internet. El modelo TCP/IP describe un conjunto de protocolos que permiten que una computadora se comunique en una red. TCP/IP posee cuatro capas de abstracción (los datos que viajan por la red atraviesan distintos niveles de protocolos) las cuales están jerarquizadas de la siguiente manera: Capa de aplicación: incorpora aplicaciones de red estándar (Telnet, SMTP, FTP, etc.). Se encuentra en la parte superior de las capas del protocolo TCP/IP y es la que contiene las aplicaciones de red que permiten la comunicación mediante las capas inferiores. Capa de transporte: brinda los datos de enrutamiento, junto con los mecanismos que permiten conocer el estado de la transmisión. Permite que las aplicaciones que se ejecutan en un equipo remoto puedan comunicarse. Capa de Internet: es responsable de proporcionar el paquete de datos (datagrama). Capa de acceso a la red: Especifica la forma en que los datos deben enrutarse. 4 2.2. Segmentos TCP, datagramas UDP y Paquetes IP Tanto TCP (Protocolo de Control de Transmisión)como UDP(User Datagram Protocol) son protocolos de nivel de tranporte (capa de transporte) los cuales permiten el flujo de datos a través de la red. La diferencia principal entre estos es la fiabilidad. UDP añade al datagrama la información necesaria para la comunicación extremo a extremo, lo que proporciona gran velocidad y baja fiabilidad, mientras que TCP envı́a grandes cantidades de información de forma fiable, lo que tiene un coste en su eficiencia debido a que se debe añadir bastante información a los paquetes a enviar.Para que los mensajes de la capa de transporte se entreguen entre los dos programas, es necesario enviar dichos mensajes a las respectivas máquinas donde corren los programas. Para esto, se hace uso de TCP o UDP para encapsular los mensajes en un datagrama de Internet adecuado para enviarlo al otro equipo. Estos datagramas son paquetes IP. 2.3. Tipos de Mensaje Mesajes ICMP: es un mensaje de control y estado IP de la capa de red. Su encabezado contiene: Las direcciones de origen y destino El identificador de Protocolo ICMP Mensajes ICMP Un mensaje ICMP indica si el paquete es un comando, una respuesta a un comando, información de estado o una condición de error. Estos no se envı́an entre programas, sino entre las máquinas de origen y destino. Un ejemplo de un mensaje ICMP es un mensaje de error cuando se intenta conectarse a un servidor web remoto y el servidor web no se está ejecutando en el host remoto, el host remoto devolverá un mensaje de error ICMP indicando que el servicio no existe. Mensajes UDP: UDP es un protocolo de entrega de transporte sin estado y no confiable. No ofrece control de flujo, por lo que el datagrama es eliminado si no se puede procesar durante el camino. Su encabezado solo contiene las direcciones IP de origen y destino ası́ como los números de puerto de servicios de origen y destino. Se dice que no es confiable ya que no asegura la entrega correcta de los paquetes, pero tiene a su favor que es varias veces más rápida que la transferencia de datos basadas en TCP. 5 Mensajes TCP: los mensajes TCP se envı́an de forma confiable en ambas direcciones. Se entregan sin errores, sin pérdida o duplicaciones y de forma ordenada. La gran mayorı́a de los servicios de red se ejecutan sobre TCP. Su encabezado contiene: Las direcciones IP de origen y destino. El tipo de mensaje de Protocolo TCP. Los puertos de servicio de destino. Los números de secuencia y de confirmación. Indicadores de control (permiten crear y mantener un circuito virtual confiablei). 6 Capı́tulo 3 Firewalls Los firewalls son dispositivos que evitan el acceso de usuarios no autorizados a un host determinado. Estos dispositivos son instalados tomando en cuenta la arquitectura de la red, de los servicio que tienen que quedar disponibles para los usuarios. En otras palabras, se puede definir un firewall como aquel sistema que crea una barrera segura entre dos redes. 3.1. Qué puede hacer un Firewall? Manejar y controlar el tráfico en la red. Autenticar accesos. Actuar como intermediario. Proteger los recursos. Registrar y almacenar información sobre eventos. 3.2. Tipos de firewall El término ”firewall”tiene varios significados dependiendo del mecanismo que se use para implementarlo, el nivel de pila del protocolo TCP/Ip sobre el que funciona y las arquitecturas de red y enrutamiento que se usen. Firewall de filtrado de paquetes: está implementado en el sistema operativo y funciona en las capas de transporte y de red de la red. Su función es proteger el sistema filtrando los paquetes basándose en la información de sus encabezados. Un firewall de filtrado de paquetes realiza un enrutado selectivo, trabajando a nivel de Transporte y de Red. Éste consta de una lista de reglas de aceptación y negación, las cuales definen explicitamente los paquetes que pueden pasar y los que no a través de una interfaz de red. 7 Firewall proxy: implementado como aplicación independiente para cada servicio con el que se usa un proxy. Una aplicación proxy aparece ante el servidor como el programa cliente, y ante el cliente como el servidor real. Su función es garanatiar la integridad de los datos, es decir, que se estén intercambiando los datos apropiados para el servicio, filtrarlos contra virus y hacer cumplir las directivas de alto nivel de control de acceso detallado. La finalidad más habitual de un proxy es la de servir de servidor proxy, el cual permite acceso a internet a todos los equipos de una organización cuando sólo se dispone de un único equipo conectado. Dual Homed Host: es una arquitectura de firewall basada en un único equipo que implementa funciones de filtrado tanto a nivel de red como de aplicación mediante el uso de dos interfaces. Este modelo bloquea el ruteo de paquetes de forma directa obligando a establecer las conexiones siempre usando este proxy o host bastion como intermediario. Es más segura que el modelo anterior pero presenta una gran desventaja ya que si el servidor es traspasado, la totalidad de la red interna queda sin protección. Screened Host: este modelo combina dos de las alternativas antes mencionadas, Firewall de filtrado y Dual Homed Host. En primera instancia se filtran paquetes mediante el router, más adelante y como segunda lı́nea de defensa se encuentra el host bastion el cual tiene un número reducido de servicios publicados hacia el exterior. Screened Subnet: mejor conocida como Zona Desmilitarizada (DMZ), es actualmente la más utilizada e implementada ya que incrementa el nivel de seguridad agregando una subred intermedia entre las redes externa e interna, donde se ubican los servidores y servicios públicos. Este modelo evita tener un único punto débil como en el caso del host bastion. 3.3. Polı́ticas de un firewall Hay dos maneras de implementar un firewall: 1. Polı́tica por defecto ACEPTAR: en principio todo lo que entra y sale por el firewall se acepta y solo se denegará lo que se diga explı́citamente. 2. Polı́tica por defecto DENEGAR: todo esta denegado y solo se permitirá pasar por el firewall aquellos que se permita explı́citamente. La primera polı́tica facilita mucho la gestión del firewall, ya que simplemente nos tenemos que preocupar de proteger aquellos puertos o direcciones que sabemos que nos 8 interesa; el resto no importa tanto y se deja pasar. El único problema que podemos tener es que no controlemos que es lo que esta abierto, o que en un momento dado se instale un software nuevo que abra un puerto determinado, o que no sepamos que determinados paquetes ICMP son peligrosos. Si la polı́tica por defecto es ACEPTAR y no se protege explı́citamente, el sistema estarı́a expuesto a posibles ataques. 9 Capı́tulo 4 Iptables Iptables y Netfilter Ipables es un sistema de firewall vinculado al kernel de linux, el cual se ha extendido a partir del kernel 2.4 de este sistema operativo. Iptables es una interfaz que permite definir una serie de reglas las cuales indican qué hacer con los paquetes de red. Iptables es el componente más popular construido sobre Netfilter, el cual es el responsable de filtrar, interceptar y manipular paquetes de red. Netfilter busca en los encabezamiento de cada paquete que pasa por la pasarela y toma una decisión sobre que hacer con estos. Netfilter comienza con tres grupos de normas: INPUT OUTPUT FORWARD En Iptables, las reglas se agrupan en cadenas y éstas a su vez se agrupan en tablas. Cada tabla está asociada con un tipo diferente de procesamiento de paquetes. Cada cadena representa una lista de normas que se consultarán secuencialmente para cada paquete. Estas normas especifican qué paquetes las cumplen y cual es el destino final de estos. 4.1. Tablas y cadenas Existen tres tipos de reglas en Iptables: Mangle Nat 10 Filter Tabla de filtrado (filter table): responsable del filtrado de paquetes, los cuales pasarán por alguna de las cadenas predefinidas. 1. Input: es atravesado por los paquetes que tienen como destino el propio sistema. 2. Output: son recorridos por los paquetes generados por el propio sistema. 3. Forward: recorrido por aquellos paquetes que pasan por el sistema para ser ruteados al verdadero destino. Tabla Nat (Nat table): encargada de configurar las reglas de reescritura de direcciones o puertos. Cadenas 1. Prerouting: es atravesada por los paquetes entrantes antes de que se consulte la tabla de ruteo local. 2. Postrouting: por donde circulan los paquetes luego de haber elegido el camino de ruteo. Tabla Mangle: esta tabla está diseñada para manejos más avanzados como por ejemplo la calidad de servicio. Contiene las demás cadenas y es usada principalmente para modificar paquetes. 4.2. Destinos de las reglas Cada una de las cadenas pueden tener diferentes destinos ya incorporados, como accept, drop, queue o return. Cuando un destino es el nombre de una cadena definida por el usuario, el paquete es dirigido a esa cadena para ser procesado. Accept (aceptar): el paquete es aceptado por Netfilter, donde dependiendo del caso de la cadena, puede que apruebe su ingreso al host (Input), su egreseo (Output), o se acepte su ruteo a través del host (Forward). Drop (descartar): indica que los paquetes deben ser descartados sin ningún tipo procesamiento. Esto se refleja en el sistema que envı́a el paquete como .alcance del máximo tiempo de espera en la comunicación”(communication timeout). Queue (encolar): hace que el paquete sea enviado a una cola en el espacio de usuario que una aplicación personalizada los tomo y modifique. Si no existe dicha apliacación el tratamiento es similiar a un Drop. 11 Return (retorno): hace que el paquete deje de circular por la cadena en cuya regla se ejecutó el destino return. Si esta cadena es una subcadena de otra, el paquete continuará por la cadena superior. Si la cadena es una cadena principal, al paquete se le aplicará la polı́tica por defecto de la cadena. Reject (rechazo): tiene el mismo efecto que drop, con excepción de que envı́a al origen un paquete de error como puede ser un tcp-reset, para conexiones TCP denegadas, un icmp-protocol-unreachable para sesiones UDP denegadas. Este se usa principalmente en las cadenas de Input y Forward de la tabla de filtrado, y es controlado a través del parametro -reject-with. Log (bitácora): este destino se usa para enviar un mensaje a un archivo y es generalmente utilizado para debuggear el tráfico (analizar fallos). Dnat: hace que la dirección Ip y opcionalmente el puerto sean reescritos para la traducción de direcciones de red. Se utiliza la opción -to-destination para indicar el destino a usar. Snat: hace que la dirección Ip y opcionalmente el puerto sean reescritos para la traducción de red. Se utiliza la opción -to-source para indicar el origen a usar. Masquerade: trabaja de manera similar a Snat pero automatiza la traducción de la Ip de salida (generalmente es utilizado con direcciones públicas dinámicas). En vez de cambiar la regla de Snat cada vez que la dirección Ip cambia, se calcula la dirección Ip de origen a la cual se hace NAT fijándose en la dirección IP de la interfaz de salida cuando un paquete coincide con esta regla. 4.3. Seguimiento de conexiones El seguimiento de conexiones le permite al núcleo llevar la cuenta de las sesiones lógicas de la red y de este modo relacionarlos de manera que se puedan analizar las conexiones en su conjunto. La traducción de dirección de red depende de esta información para traducir todos los paquetes relacionados de la misma manera e iptables puede usarla para actuar como un firewall stateful. Los cuatro estados en que se clasifican son: New: creando una nueva conexión. Established: forma parte de una conexión existente. Related: relacionada pero no parte de una conexión. Invalid: no es parte de una conexión existente ni capaz de crear una nueva conexión. 12 4.4. El comando iptables Iptables es un comando que permite la gestión del filtrado de paquetes en sistemas Linux. El filtrado de paquetes está basado en una serie de reglas establecidas por el administrador, las cuales permite monitorizar y controlar las conexiones realizadas a través de una interfaz de red. -t tabla:hace que el comando se aplique a la tabla especificada. La tabla por defecto es la tabla filter. -v: produce una salida con detalles. -n: produce una salida numérica, es decir, muestra los números de puerto en vez de los nombre de los servicios y direcciones IP en lugar de los dominios. 4.5. Especificando las reglas Las reglas especifican los parámetros que deben cumplir los paquetes para que se les apliquen dichas reglas y luego la acción a tomar (destino). -s –source dirección/máscara: indican la dirección IP (y su máscara) del origen del paquete. Esta dirección puede ser una dmirección IP, una dirección IP con un prefijo de red asociado, o un nombre de terminal (hostname). Si ! precede al origen, indica que se van a filtrar los paquetes que no vienen del origen especificado. -d –destination: indica la dirección IP (y su máscara) de destino del paquete. -p –protocol: compara paquetes del nombre de protocolo especificado. Si ! precede el nombre del portocolo, se comparan todos los paquetes que no son el protocolo especificado. Se puede encontrar una lista de todos los protocolos en el archivo /etc/protocols. -i –in-interface: nombre de una interfaz a través de la cual un paquete va a ser recibido (solo para paquetes entrando en las cadenas INPUT, FOWARD y PREROUTING). El argumento ! invierte el significado de la expresión. Si el nombre de la interfaz termina con ’+’, entonces cualquier interfaz que comience con este nombre será comparada. –destination-port –sport [puerto[:puerto]]: matchea paquete TCP o UDP (dependiendo del argumento a la opción -p) que vienen de los puertos o rango de puertos (cuando se usa la forma puerto:puerto) especificados. Si el argumento ! precede la especificación,se matchean todos los paquetes TCP o UDP que no vienen de los puertos o rango de puertos especificados. 13 tcp-flags mask comp: Matchea paquetes TCP que tienen marcadas o desmarcadas ciertas banderas del protocolo TCP. El primer argumento especifica las banderas a examinar en cada paquete TCP, escritas en una lista separada por comas (no se permiten espacios). El segundo argumento es otra lista separada por comas de banderas que deben estar marcadas dentro de las que se debe examinar. Estas banderas son: SYN, ACK, FIN, RST, URG, PSH, ALL, y NONE. Por lo tanto, la opción -tcp flags SYN, ACK, FIN, RST SYNsolo va a matchear paquetes con la bandera SYN marcada y las banderas ACK, FIN y RST desmarcadas. –syn: Matchea paquetes TCP que tienen la bandera SYN marcada y las banderas ACK, FIN y RST desmarcadas. Estos paquetes son los que se usan para iniciar conexiones TCP. Al bloquear tales paquetes en la cadena de INPUT, se previenen conexiones TCP entrantes, pero conexiones TCP salientes no serán afectadas. Esta opción puede combinarse con otras, como –source, para bloquear o dejar pasar conexiones TCP entrantes solo de ciertas terminales o redes. Esta opción es equivalente a -tcp-flags SYN, RST, ACK SYN”. Si ’ !’ precede a –syn, el significado de la opción se invierte. 14 Capı́tulo 5 Proxy Un Proxy es un programa o dispositivo que realiza una acción en representación de otro. Su finalidad más habitual es la de servidor proxy, donde sirve de intermediario entre un navegador Web e Internet y permite el acceso a Internet a una red de computadoras cuando solo se dispone de un único equipo conectado, es decir, una única dirección IP. El uso más común es el de servidor Proxy, el cual permite dar seguridad y mejorar el acceso a páginas Web, conservándolas en la caché. De este modo, cuando un usuario envı́a una petición para acceder a una página Web que está almacenada en la caché, la respuesta y el tiempo de visualización es más rápido. Los servidores Proxy aumentan también la seguridad ya que pueden filtrar cierto contenido Web y programas maliciosos. 5.1. Ventajas y Desventajas de un Proxy Ventajas 1. Control: sólo el intermediario hace el trabajo real, por tanto se pueden limitar y restringir los derechos de los usuarios, y dar permisos sólo al proxy. 2. Ahorro: sólo el usuario(s) proxy requiere del equipo necesario para realizar el trabajo real. 3. Velocidad: El proxy puede hacer un caché en el cual guardará las respuestas de las peticiones para darlas de manera directa cuando otro usuario las solicite. 4. Filtrado: El proxy puede negarse a responder algunas peticiones si detecta que están prohibidas. 5. Modificación: como intermediario, el proxy puede modificar información basándose en un algoritmo. 15 Desventajas 1. Abuso: Se debe controlar quién tiene acceso y quién no a sus servicios, tarea que normalmente es muy difı́cil. 2. Carga: Un proxy tiene que hacer el trabajo de muchos usuarios. 3. Intromisión: algunos usuarios pueden no querer pasar por el proxy, sobretodo si éste hace de caché y guarda copias de los datos. 4. Irregularidad: un proxy puede representar problemas en ciertos escenarios donde se presupone la comunicación directa entre un emisor y un receptor. 5.2. Tipos de proxy Proxy Transparente: es un proxy que no necesita ninguna configuración especial en los clientes. Se denomina transparente porque el cliente no sabe que los está usando, es decir, es transparente para él. Muchas organizaciones usan proxies para reforzar las polı́ticas de uso de la red o para proporcionar seguridad y servicios de caché. Normalmente, un proxy Web o NAT no es transparente a la aplicación cliente, por lo cual el usuario puede evadir el proxy cambiando su configuración. Un proxy transparente combina un servidor proxy con NAT de manera que las conexiones son enrutadas dentro del proxy sin configuración por parte del cliente, y habitualmente sin que el propio cliente conozca de su existencia. Proxy inverso: Es un servidor proxy que, en lugar de permitirles el acceso a Internet a usuarios internos, permite a usuarios de Internet acceder indirectamente a determinados servidores internos. Con un proxy inverso, el servidor web está protegido de ataques externos directos, lo cual fortalece la red interna. Proxy abierto: este tipo de proxy acepta peticiones desde cualquier ordenador, esté o no conectado a su red. Este tipo de proxy ejecutará cualquier petición de cualquier máquina que pueda conectarse a él, realizándola como si fuera una petición del proxy. Por lo que permite que este tipo de proxy se use como pasarela para el envı́o masivo de correos de spam. Un proxy es una herramienta con grandes beneficios como por ejemplo, almacenar y redirigir servicios como el DNS o la navegación web mediante el cacheo de peticiones en el servidor proxy, mejora la velocidad general de los usuarios, pero al aplicar una configuración abierta a todo internet, se convierte en una herramienta para su uso indebido. 16 Capı́tulo 6 Nat La tecnologı́a NAT permite que las redes privadas que utilicen direcciones IP no registradas se puedan conectar a redes públicas. Este mecanismo consiste en utilizar una dirección IP enrutable para conectar todas las máquinas a la red pública utilizando la traducción en tiempo real de las direcciones usadas por los paquetes transportados. Un router NAT cambia las direcciones origen de cada paquete de salida y, dependiendo del método, también el puerto origen para que sea único. Estas traducciones de dirección se almacenan en una tabla, para recordar qué dirección y puerto le corresponde a cada dispositivo cliente y ası́ saber donde deben regresar los paquetes de respuesta. 6.1. NAT estática Cada dirección privada tiene su dirección pública equivalente. Este tipo de traducción se conoce como traducción de direcciones una a una. Este tipo de NAT no permite ningún ahorro de direcciones IP ya que es necesaria una dirección pública para cada estación con una dirección privada. Por otra parte implica una gran dificulltad de gestión si el número de traducciones es elevado. 6.2. NAT dinámico o PAT Permite compartir una dirección IP enrutable entre varias máquinas con direcciones privadas. De esta manera todas las máquinas poseen la misma dirección IP virtual en forma externa. Para lograr compartir diferentes direcciones IP con una o más direcciones IP enrutables, la NAT dinámica utiliza la traducción de direcciones de IP del router. 17 Capı́tulo 7 DMZ El término ”zona desmilitarizada”, DMZ hace referencia a esta zona aislada que posee aplicaciones disponibles para el público. Es una red local que se encuentra entre la red interna y la red externa, generalmente Internet. El objetivo de una DMZ es permitir las conexiones desde la red interna y la externa a la DMZ, mientras que las conexiones desde la DMZ solo se permiten a la red externa. Los equipos que se encuentran en la zona desmilitarizada no pueden conectar con la red interna. Esto permite la posibilidad de dar servicios a la red externa a la vez que protegen la red interna. 18 La DMZ se usa habitualmente para ubicar servidores que es necesario que sean accedidos desde fuera, como servidores de correo electrónico, Web y DNS. Por lo general, la polı́tica de seguridad para la DMZ es la siguiente: El tráfico de la red externa a la DMZ está autorizado. El tráfico de la red externa a la red interna está prohibido. El tráfico de la red interna a la DMZ está autorizado. Habitualmente una configuración DMZ es usar dos cortafuegos, donde la DMZ se sitúa en medio y se conecta a ambos cortafuegos, uno conectado a la red interna y el otro a la red externa. Esta configuración ayuda a prevenir configuraciones erróneas accidentales que permitan el acceso desde la red externa a la interna. Este tipo de configuración también es llamado cortafuegos de subred monitoreada (screened-subnet firewall). 19 Capı́tulo 8 Implementación 8.1. Objetivos Para finalizar este trabajo y dejar claro los conceptos mencionados en los capı́tulos anteriores, se mostrará un ejemplo práctico en el cual se implementará un NAT de tres maneras completamente diferentes. En primer lugar, se utilizará la herramienta iptables, la cual nos permitirá definir una lista de reglas. Por otro lado, se configurará el NAT haciendo uso de un Servidor Proxy y se mostrará sus ventajas a la hora de filtrar el contenido de las páginas web. Por último, se utilizará una distribución llamada Smoothwall, distribución GNU/LINUX diseñado especialmente para que actue como un cortafuegos. 8.2. Requisitos Para poder llevar a cabo la configuración de un NAT, es necesario tener disponibles al menos dos computadoras de las cuales una debe tener dos interfaces de red fı́sicas. Por otro lado, se hará uso de un servidor DHCP con la finalidad de otorgar automáticamenta las direcciones IP y las configuraciones de red a las máquinas que se conecten a la red privada. 8.3. Descripción de la red Se utilizará una computadora con dos interfaces de red. La red externa 192.168.1.0 La red interna 192.168.2.0 Máscara de red 255.255.255.0 eth0 es la interfaz conectada a la red privada o interna. 20 eth1 es la interfaz conectada a la red externa y sirve como gateway. 8.4. Instalación y configuración de un servidor DHCP El servidor DHCP será el encargado de proporcionar automáticamente las direcciones ip y las configuraciones de red a las computadoras que se conecten a la red privada. Para su intalación debemos instalar el paquete dhcp3-server sudo apt-get install dhcp3-server La configuración del servidor se realiza editando el archivo de configuración dhcpd.conf ubicado en /etc/dhcp3/dhcpd.conf. La configuración que utilizaremos es la siguiente: ddns-update-style none; option domain-name-servers 192.168.1.1; default-lease-time 4000; max-lease-time 7200; authoritative; subnet 192.168.2.0 netmask 255.255.255.0 range 192.168.2.60 192.168.2.80; option routers 192.168.2.1; option broadcast-address 192.168.1.255; option domain-name-servers 72.14.204.147; default-lease-time 6000 Antes de iniciar el servicio, debemos configurar la interfaz eth0 sudo ifconfig eth0 192.168.2.1 netmask 255.255.255.0 Iniciamos el servidor dhcp sudo /etc/init.d/dhcp3-server start 8.5. Implementación de un NAT haciendo uso de iptables Como se explicó en el capı́tulo 6, un NAT (Network Address Translation) permite intercambiar paquetes entre dos redes que poseen direcciones incompatibles. Esto se 21 logra mediante la traducción en tiempo real de las direcciones ip, para lo cual también es necesario editar los paquetes para permitir la operación de protocolos que incluyen información de direcciones dentro de la conversación del protocolo. En este caso utilizaremos la herramienta iptables para establecer las relgas necesarias para realizar el NAT, con la posibilidad de establecer reglas para el filtrado de paquetes lo que permite configurar el firewall. Con la finalidad que esta configuración sea permanente, realizaremos un script que se ejecute cada vez que la máquina inicie. El contenido del script es el siguiente #!/bin/sh echo -n Aplicando Reglas de Firewall... ##FLUSH de reglas (Borramos todas las reglas y cadenas existentes) iptables -F iptables -X iptables -Z iptables -t nat -F ##Establecemos la polı́tica por defecto iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P PROSTROUTING ACCEPT #interfaz conectada a la red externa eth1 #interfaz conectada a la red interna eth0 iptables -A INPUT -s 192.168.2.0/24 -i eth0 -j ACCEPT 22 ## Enmascaramiento de la red local iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth1 -j MASQUERADE ##Activamos el bit de FORWARDING echo 1 > /proc/sys/net/ipv4/ip forward 8.6. Implementación NAT mediante un servidor Proxy Para implementar el NAT mediante un servidor proxy, utilizaremos Squid un programa de software libre que implementa un servidor proxy y un dominio para caché de páginas web. Instalación del proxy: sudo apt-get install squid Configuración del proxy: La configuración del proxy se lleva a cabo editando el archivo de configuración squid.conf ubicado en /etc/squid/squid.conf 1. Nombrar el proxy: para esto ubicamos la lı́nea visibles eos 2. Elegimos el puerto: por defecto el puerto de escucha del servidor proxy es 3128. 3. Modificar el tamañ del caché: el caché del squid está activado por defecto lo que permite que las páginas se carguen más rápido. El tamaño por defecto es de 100 MB (ubicado en /var/spool/squid). Para modificarlo, encuentra la lı́nea cache dir ufs /var/spool/squid. 4. Definir los derechos de acceso: Crearemos tres listas de acceso: a) acl all src 0.0.0.0/0.0.0.0 b) acl localhost src 127.0.0.0/255.255.255.255 c) acl mired src 192.168.2.0/255.255.255.0 Permitimos el acceso a localhost, mired y denegamos el acceso a la lista all. a) http acces allow localhost b) http acces allow miredt c) http acces deny all 5. Autorizar los puertos no estándar: Por defecto, Squid sólo autoriza el tráfico HTTP en algunos puertos (80, etc.) Esto puede ocasionar problemas a algunas páginas web que utilizan otros puertos. Para evitar que lo bloquee, encuentra la 23 siguiente lı́nea y comentamos: http access deny !Safe ports 6. Para filtrar el contenido de páginas web, es decir, bloquear aquellas páginas que no queremos que los clientes visiten, debemos crear una lista de acceso acl nopermitidos url regex /etc/squid/prohibidas” http access allow mired !nopermitidos Creamos un archivo en /etc/squid llamado prohibidas el cual contendrá una lista con todas las palabras que queremos filtren las págnias que serán bloqueadas. Luego reiniciamos nuestro servidor squid y todo quedará configurado. Para configuraciones más avanzadas de bloqueo de páginas y contenido se puede instalar y configurar un módulo de squid llamado Squidguard. Los clientes los tenemos que configurar para que utilicen el servidor proxy y de esta manera puedan compartir Internet. En el caso de aquellos que utilcen Mozilla Firefox, entrar en Preferencias - Avanzadas - Configuración - Manual Proxy configuration, y colocar la dirección ip correspondiente, en nuestro caso serı́a 192.168.2.1. 24 Bibliografı́a [1] Jordi I. Griera, José M. Barceló, Ordinas Llorenc, Cerdá Alabern, Enric P. Olivé, Jaume Abella, Guiomar Corral, Estructura de redes de computadoras, UOC. [2] Robert L. Zielger, Firewalls Linux, Pentice Hall. [3] Xabier Pello, IPTABLES Manual Práctico. [4] Configuración de un router Linux empleando NAT, http://www.merlos.org/ documentos/linux/13-configuracion-de-un-router-linux-empleando-nat. html [5] Juan Pablo Sarubbi, Seguridad Informática Técnicas de defensa comunes bajo variantes del sistema operativo Unix [6] PROXY, http://dns.bdat.net/blog/index.php?option=com_content&view= article&id=397:proxy-transparente&catid=21:squid [7] Proxy, http://es.wikipedia.org/wiki/Proxy [8] DMZ (Zona desmiltarizada), dmz-cloisonnement.php3 http://es.kioskea.net/contents/protect/ [9] Servidores Proxy, http://es.kioskea.net/contents/lan/proxy.php3 [10] Seguridad, http://club.telepolis.com/websecure/preliminares.htm [11] Qué es un firewall, http://www.desarrolloweb.com/articulos/513.php [12] Iptables, http://cfievalladolid2.net/tecno/linux/iptables.htm [13] Firewall Original,http://es.tldp.org/Manuales-LuCAS/GARL2/garl2/ x-087-2-firewall.original.html [14] A Brief History of Netfilter, http://book.opensourceproject.org.cn/ enterprise/cluster/linuxcluster/opensource/11021/bbl0017.html [15] TCP/IP, http://es.kioskea.net/contents/internet/tcpip.php3 25