Ongreen4 1

   EMBED

Share

Preview only show first 6 pages with water mark for full document please download

Transcript

ongreen4 1 ´ n Bol´ıvar Universidad Simo ´n Laboratorio Docente de Computacio Trimestre Enero-Marzo 2011 FIREWALLS, IPTABLES, NAT, DMZ Javier I Arg¨ uello Sosa 09-10047 1 de mayo de 2011 ´Indice general 1. Introducci´ on 3 2. Conceptos b´ asicos 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´e 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´atica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2. NAT din´amico o PAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 17 17 7. DMZ 18 8. Implementaci´ on 8.1. Objetivos . . . . . . . . . 8.2. Requisitos . . . . . . . . . 8.3. Descripci´on de la red . . . 8.4. Instalaci´on y configuraci´on 20 20 20 20 21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . de un servidor DHCP 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.5. Implementaci´on de un NAT haciendo uso de iptables . . . . . . . . . . 8.6. Implementaci´on NAT mediante un servidor Proxy . . . . . . . . . . . . 2 21 23 Cap´ıtulo 1 Introducci´ on Los origenes de Internet, se remontan a los a˜ nos setenta, ´epoca en la que una masa minoritaria y privilegiada disfrutaba de una tecnolog´ıa que no hab´ıa tenido su momento de explosi´on. 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´on de Internet como una comunidad relativamente peque˜ na de usuarios con m´aquinas compatibles, que valoraba la predisposici´on para el intercambio y la colaboraci´on, termin´o con una serie de importantes violaciones de seguridad de internet que se produjo a finales de los a˜ nos ochenta cuando surgieron los primeros intrusos ”hackers”. En este momento la seguridad se convirti´o en un aspecto vital de la administraci´on de redes. Poco a poco las empresas fueron percat´andose del peligro a base de perder tiempo, dinero e informaci´on, 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´asicos 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 u ´ltimo, se mostrar´a como compartir la conexi´on de Internet mediante la configuraci´on de un NAT haciendo uso de la herramienta Iptables e implementando un servidor Proxy haciendo uso de Squid. 3 Cap´ıtulo 2 Conceptos b´ asicos 2.1. Modelo TCP/IP A finales de los a˜ nos setenta y comienzo de los ochenta, se comenzaron a implementar las redes cuyo desarrollo surgi´o con mucho desorden en todos los sentidos. Inmediatamente la redes comenzaron a tomar gran tama˜ no y comenzaron los problemas de comunicaci´on entre estas debido a las dificultades para intercambiar informaci´on. Por esta raz´on, se desarroll´o 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´on (los datos que viajan por la red atraviesan distintos niveles de protocolos) las cuales est´an jerarquizadas de la siguiente manera: Capa de aplicaci´ on: incorpora aplicaciones de red est´andar (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´on mediante las capas inferiores. Capa de transporte: brinda los datos de enrutamiento, junto con los mecanismos que permiten conocer el estado de la transmisi´on. 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´on)como UDP(User Datagram Protocol) son protocolos de nivel de tranporte (capa de transporte) los cuales permiten el flujo de datos a trav´es de la red. La diferencia principal entre estos es la fiabilidad. UDP a˜ nade al datagrama la informaci´on necesaria para la comunicaci´on extremo a extremo, lo que proporciona gran velocidad y baja fiabilidad, mientras que TCP env´ıa grandes cantidades de informaci´on de forma fiable, lo que tiene un coste en su eficiencia debido a que se debe a˜ nadir bastante informaci´on 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´aquinas 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´on de estado o una condici´on de error. Estos no se env´ıan entre programas, sino entre las m´aquinas 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´a ejecutando en el host remoto, el host remoto devolver´a 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´ umeros 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´as r´apida 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´erdida 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´ umeros de secuencia y de confirmaci´ on. 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´ e puede hacer un Firewall? Manejar y controlar el tr´afico en la red. Autenticar accesos. Actuar como intermediario. Proteger los recursos. Registrar y almacenar informaci´on sobre eventos. 3.2. Tipos de firewall El t´ermino ”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´a implementado en el sistema operativo y funciona en las capas de transporte y de red de la red. Su funci´on es proteger el sistema filtrando los paquetes bas´andose en la informaci´on de sus encabezados. Un firewall de filtrado de paquetes realiza un enrutado selectivo, trabajando a ´ nivel de Transporte y de Red. Este consta de una lista de reglas de aceptaci´on y negaci´on, las cuales definen explicitamente los paquetes que pueden pasar y los que no a trav´es de una interfaz de red. 7 Firewall proxy: implementado como aplicaci´on independiente para cada servicio con el que se usa un proxy. Una aplicaci´on proxy aparece ante el servidor como el programa cliente, y ante el cliente como el servidor real. Su funci´on es garanatiar la integridad de los datos, es decir, que se est´en 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´as habitual de un proxy es la de servir de servidor proxy, el cual permite acceso a internet a todos los equipos de una organizaci´on cuando s´olo se dispone de un u ´nico equipo conectado. Dual Homed Host: es una arquitectura de firewall basada en un u ´nico equipo que implementa funciones de filtrado tanto a nivel de red como de aplicaci´on 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´as 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´on. 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´as adelante y como segunda l´ınea de defensa se encuentra el host bastion el cual tiene un n´ umero reducido de servicios publicados hacia el exterior. Screened Subnet: mejor conocida como Zona Desmilitarizada (DMZ), es actualmente la m´as 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´ ublicos. Este modelo evita tener un u ´nico punto d´ebil 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´a lo que se diga expl´ıcitamente. 2. Pol´ıtica por defecto DENEGAR: todo esta denegado y solo se permitir´a pasar por el firewall aquellos que se permita expl´ıcitamente. La primera pol´ıtica facilita mucho la gesti´on 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 u ´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´e hacer con los paquetes de red. Iptables es el componente m´as 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´on sobre que hacer con estos. Netfilter comienza con tres grupos de normas: INPUT OUTPUT FORWARD En Iptables, las reglas se agrupan en cadenas y ´estas a su vez se agrupan en tablas. Cada tabla est´a asociada con un tipo diferente de procesamiento de paquetes. Cada cadena representa una lista de normas que se consultar´an secuencialmente para cada paquete. Estas normas especifican qu´e 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´an 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´a dise˜ nada para manejos m´as avanzados como por ejemplo la calidad de servicio. Contiene las dem´as 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´es del host (Forward). Drop (descartar): indica que los paquetes deben ser descartados sin ning´ un tipo procesamiento. Esto se refleja en el sistema que env´ıa el paquete como .alcance del m´aximo tiempo de espera en la comunicaci´on”(communication timeout). Queue (encolar): hace que el paquete sea enviado a una cola en el espacio de usuario que una aplicaci´on personalizada los tomo y modifique. Si no existe dicha apliacaci´on 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´o el destino return. Si esta cadena es una subcadena de otra, el paquete continuar´a por la cadena superior. Si la cadena es una cadena principal, al paquete se le aplicar´a la pol´ıtica por defecto de la cadena. Reject (rechazo): tiene el mismo efecto que drop, con excepci´on 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´es del parametro -reject-with. Log (bit´ acora): este destino se usa para enviar un mensaje a un archivo y es generalmente utilizado para debuggear el tr´afico (analizar fallos). Dnat: hace que la direcci´on Ip y opcionalmente el puerto sean reescritos para la traducci´on de direcciones de red. Se utiliza la opci´on -to-destination para indicar el destino a usar. Snat: hace que la direcci´on Ip y opcionalmente el puerto sean reescritos para la traducci´on de red. Se utiliza la opci´on -to-source para indicar el origen a usar. Masquerade: trabaja de manera similar a Snat pero automatiza la traducci´on de la Ip de salida (generalmente es utilizado con direcciones p´ ublicas din´amicas). En vez de cambiar la regla de Snat cada vez que la direcci´on Ip cambia, se calcula la direcci´on Ip de origen a la cual se hace NAT fij´andose en la direcci´on 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´ ucleo llevar la cuenta de las sesiones l´ogicas de la red y de este modo relacionarlos de manera que se puedan analizar las conexiones en su conjunto. La traducci´on de direcci´on de red depende de esta informaci´on 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´on. Established: forma parte de una conexi´on existente. Related: relacionada pero no parte de una conexi´on. Invalid: no es parte de una conexi´on existente ni capaz de crear una nueva conexi´on. 12 4.4. El comando iptables Iptables es un comando que permite la gesti´on del filtrado de paquetes en sistemas Linux. El filtrado de paquetes est´a basado en una serie de reglas establecidas por el administrador, las cuales permite monitorizar y controlar las conexiones realizadas a trav´es 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´erica, es decir, muestra los n´ umeros 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´ametros que deben cumplir los paquetes para que se les apliquen dichas reglas y luego la acci´on a tomar (destino). -s –source direcci´ on/m´ ascara: indican la direcci´on IP (y su m´ascara) del origen del paquete. Esta direcci´on puede ser una dmirecci´on IP, una direcci´on 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´on IP (y su m´ascara) 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´es 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´on. Si el nombre de la interfaz termina con ’+’, entonces cualquier interfaz que comience con este nombre ser´a comparada. –destination-port –sport [puerto[:puerto]]: matchea paquete TCP o UDP (dependiendo del argumento a la opci´on -p) que vienen de los puertos o rango de puertos (cuando se usa la forma puerto:puerto) especificados. Si el argumento ! precede la especificaci´on,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´on -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´an afectadas. Esta opci´on puede combinarse con otras, como –source, para bloquear o dejar pasar conexiones TCP entrantes solo de ciertas terminales o redes. Esta opci´on es equivalente a -tcp-flags SYN, RST, ACK SYN”. Si ’ !’ precede a –syn, el significado de la opci´on se invierte. 14 Cap´ıtulo 5 Proxy Un Proxy es un programa o dispositivo que realiza una acci´on en representaci´on de otro. Su finalidad m´as 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 u ´nico equipo conectado, es decir, una u ´nica direcci´on IP. El uso m´as com´ un es el de servidor Proxy, el cual permite dar seguridad y mejorar el acceso a p´aginas Web, conserv´andolas en la cach´e. De este modo, cuando un usuario env´ıa una petici´on para acceder a una p´agina Web que est´a almacenada en la cach´e, la respuesta y el tiempo de visualizaci´on es m´as r´apido. Los servidores Proxy aumentan tambi´en la seguridad ya que pueden filtrar cierto contenido Web y programas maliciosos. 5.1. Ventajas y Desventajas de un Proxy Ventajas 1. Control: s´olo el intermediario hace el trabajo real, por tanto se pueden limitar y restringir los derechos de los usuarios, y dar permisos s´olo al proxy. 2. Ahorro: s´olo el usuario(s) proxy requiere del equipo necesario para realizar el trabajo real. 3. Velocidad: El proxy puede hacer un cach´e en el cual guardar´a 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´an prohibidas. 5. Modificaci´on: como intermediario, el proxy puede modificar informaci´on bas´andose en un algoritmo. 15 Desventajas 1. Abuso: Se debe controlar qui´en tiene acceso y qui´en 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´on: algunos usuarios pueden no querer pasar por el proxy, sobretodo si ´este hace de cach´e y guarda copias de los datos. 4. Irregularidad: un proxy puede representar problemas en ciertos escenarios donde se presupone la comunicaci´on directa entre un emisor y un receptor. 5.2. Tipos de proxy Proxy Transparente: es un proxy que no necesita ninguna configuraci´on especial en los clientes. Se denomina transparente porque el cliente no sabe que los est´a usando, es decir, es transparente para ´el. Muchas organizaciones usan proxies para reforzar las pol´ıticas de uso de la red o para proporcionar seguridad y servicios de cach´e. Normalmente, un proxy Web o NAT no es transparente a la aplicaci´on cliente, por lo cual el usuario puede evadir el proxy cambiando su configuraci´on. Un proxy transparente combina un servidor proxy con NAT de manera que las conexiones son enrutadas dentro del proxy sin configuraci´on 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´a protegido de ataques externos directos, lo cual fortalece la red interna. Proxy abierto: este tipo de proxy acepta peticiones desde cualquier ordenador, est´e o no conectado a su red. Este tipo de proxy ejecutar´a cualquier petici´on de cualquier m´aquina que pueda conectarse a ´el, realiz´andola como si fuera una petici´on 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´on web mediante el cacheo de peticiones en el servidor proxy, mejora la velocidad general de los usuarios, pero al aplicar una configuraci´on 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´ ublicas. Este mecanismo consiste en utilizar una direcci´on IP enrutable para conectar todas las m´aquinas a la red p´ ublica utilizando la traducci´on 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´etodo, tambi´en el puerto origen para que sea u ´nico. Estas traducciones de direcci´on se almacenan en una tabla, para recordar qu´e direcci´on y puerto le corresponde a cada dispositivo cliente y as´ı saber donde deben regresar los paquetes de respuesta. 6.1. NAT est´ atica Cada direcci´on privada tiene su direcci´on p´ ublica equivalente. Este tipo de traducci´on se conoce como traducci´on de direcciones una a una. Este tipo de NAT no permite ning´ un ahorro de direcciones IP ya que es necesaria una direcci´on p´ ublica para cada estaci´on con una direcci´on privada. Por otra parte implica una gran dificulltad de gesti´on si el n´ umero de traducciones es elevado. 6.2. NAT din´ amico o PAT Permite compartir una direcci´on IP enrutable entre varias m´aquinas con direcciones privadas. De esta manera todas las m´aquinas poseen la misma direcci´on IP virtual en forma externa. Para lograr compartir diferentes direcciones IP con una o m´as direcciones IP enrutables, la NAT din´amica utiliza la traducci´on de direcciones de IP del router. 17 Cap´ıtulo 7 DMZ El t´ermino ”zona desmilitarizada”, DMZ hace referencia a esta zona aislada que posee aplicaciones disponibles para el p´ ublico. 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´onico, Web y DNS. Por lo general, la pol´ıtica de seguridad para la DMZ es la siguiente: El tr´afico de la red externa a la DMZ est´a autorizado. El tr´afico de la red externa a la red interna est´a prohibido. El tr´afico de la red interna a la DMZ est´a autorizado. Habitualmente una configuraci´on DMZ es usar dos cortafuegos, donde la DMZ se sit´ ua en medio y se conecta a ambos cortafuegos, uno conectado a la red interna y el otro a la red externa. Esta configuraci´on ayuda a prevenir configuraciones err´oneas accidentales que permitan el acceso desde la red externa a la interna. Este tipo de configuraci´on tambi´en es llamado cortafuegos de subred monitoreada (screened-subnet firewall). 19 Cap´ıtulo 8 Implementaci´ on 8.1. Objetivos Para finalizar este trabajo y dejar claro los conceptos mencionados en los cap´ıtulos anteriores, se mostrar´a un ejemplo pr´actico en el cual se implementar´a un NAT de tres maneras completamente diferentes. En primer lugar, se utilizar´a la herramienta iptables, la cual nos permitir´a definir una lista de reglas. Por otro lado, se configurar´a el NAT haciendo uso de un Servidor Proxy y se mostrar´a sus ventajas a la hora de filtrar el contenido de las p´aginas web. Por u ´ltimo, se utilizar´a una distribuci´on llamada Smoothwall, distribuci´on GNU/LINUX dise˜ nado especialmente para que actue como un cortafuegos. 8.2. Requisitos Para poder llevar a cabo la configuraci´on 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´a uso de un servidor DHCP con la finalidad de otorgar autom´aticamenta las direcciones IP y las configuraciones de red a las m´aquinas que se conecten a la red privada. 8.3. Descripci´ on de la red Se utilizar´a una computadora con dos interfaces de red. La red externa 192.168.1.0 La red interna 192.168.2.0 M´ascara 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´ on y configuraci´ on de un servidor DHCP El servidor DHCP ser´a el encargado de proporcionar autom´aticamente las direcciones ip y las configuraciones de red a las computadoras que se conecten a la red privada. Para su intalaci´on debemos instalar el paquete dhcp3-server sudo apt-get install dhcp3-server La configuraci´on del servidor se realiza editando el archivo de configuraci´on dhcpd.conf ubicado en /etc/dhcp3/dhcpd.conf. La configuraci´on 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´ on de un NAT haciendo uso de iptables Como se explic´o 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´on en tiempo real de las direcciones ip, para lo cual tambi´en es necesario editar los paquetes para permitir la operaci´on de protocolos que incluyen informaci´on de direcciones dentro de la conversaci´on 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´on sea permanente, realizaremos un script que se ejecute cada vez que la m´aquina 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´ on 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´e de p´aginas web. Instalaci´on del proxy: sudo apt-get install squid Configuraci´on del proxy: La configuraci´on del proxy se lleva a cabo editando el archivo de configuraci´on 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˜ n del cach´e: el cach´e del squid est´a activado por defecto lo que permite que las p´aginas se carguen m´as r´apido. El tama˜ no 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´andar: Por defecto, Squid s´olo autoriza el tr´afico HTTP en algunos puertos (80, etc.) Esto puede ocasionar problemas a algunas p´aginas 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´aginas web, es decir, bloquear aquellas p´aginas 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´a una lista con todas las palabras que queremos filtren las p´agnias que ser´an bloqueadas. Luego reiniciamos nuestro servidor squid y todo quedar´a configurado. Para configuraciones m´as avanzadas de bloqueo de p´aginas y contenido se puede instalar y configurar un m´odulo 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´on - Manual Proxy configuration, y colocar la direcci´on ip correspondiente, en nuestro caso ser´ıa 192.168.2.1. 24 Bibliograf´ıa [1] Jordi I. Griera, Jos´e M. Barcel´o, Ordinas Llorenc, Cerd´a Alabern, Enric P. Oliv´e, Jaume Abella, Guiomar Corral, Estructura de redes de computadoras, UOC. [2] Robert L. Zielger, Firewalls Linux, Pentice Hall. [3] Xabier Pello, IPTABLES Manual Pr´actico. [4] Configuraci´on 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´ atica T´ ecnicas 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´e 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