CORTAFUEGOS






INTRODUCCIÓN.
 

        Un cortafuegos o firewall es una barrera entre dos puntos de una red de protección. También se puede definir como un sistema utilizado para separar una máquina del resto, para protegerla de servicios y protocolos que desde el exterior puedan suponer una amenaza a la seguridad. Se utiliza como medida de seguridad para evitar los ataques en la red, sobre todo suele usarse en organizaciones donde es mas complicado mantener la seguridad de la red ya que en estas los usuarios necesitan compartir información con otras personas situadas en otros lugares mas lejanos.

 

Cada vez son mas necesarios en nuestras redes. Evidentemente un cortafuegos no nos protege de ataques que no pasen por él, esto incluye cualquier ataque que se produzca dentro del perímetro de seguridad (el espacio protegido) pero también otros factores que a priori no deberían de suponer un problema.
 
 

 DISEÑO.
 

        Hay tres decisiones básicas a la hora de diseñar o configurar un cortafuegos; la primera y la mas importante, hace referencia a la política de seguridad de la organización, en ella influyen aparte de motivos de seguridad, motivos administrativos de cada organismo.
 

La segunda decisión a tener en cuenta es el nivel de monitorización y control deseado en la organización. Una vez definida la política hay que definir como implementarla en el cortafuegos, indicando qué se va a permitir y qué se va a denegar. Para esto se adoptan dos medidas generales: o bien se adopta una postura restrictiva o política de seguridad cerrada (denegamos todo lo que no se permita) o bien una permisiva o política de seguridad abierta (permitimos todo excepto lo negado),por ejemplo la UJI. Claramente es la primera la mas recomendable de cara a la seguridad pero no siempre se puede aplicar debido a factores humanos.
 

La ultima y tercera decisión es económica. En función del valor de lo que deseamos proteger, tendremos que gastar mas o menos dinero o incluso nada. A la hora de valorar el dinero a invertir en un cortafuegos no es recomendable fijarse solamente en el coste de su instalación sino también en el de su mantenimiento.
 

La primera decisión técnica a la que nos enfrentamos cuando instalemos el firewall es elemental: ¿dónde lo situamos para que cumpla eficientemente su cometido?. Si aprovechamos una maquina ya existente, por ejemplo un router, no tenemos muchas posibilidades de elección pero si utilizamos una maquina Unix con un cortafuegos implementado en ella, tenemos varias posibilidades. Si por obligación hemos instalado el firewall en un punto que no protege completamente nuestra red ,tendremos que añadir cortafuegos internos dentro de la red para aumentar la seguridad de las partes mas importantes.
 

Ahora tendremos que elegir que elementos físicos utilizar como host bastión (sistema especialmente asegurado pero vulnerable a todo tipo de ataques por estar abierto a Internet, que tiene como función ser el punto de contacto de los usuarios de la red interna de una organización con otras redes). Para tomar esta decisión hay dos principios básicos: mínima complejidad y máxima seguridad. Cuanto más simple sea el host bastión, cuanto menos servicios ofrezca, más fácil será su mantenimiento y por tanto su seguridad. Mantener esta máquina asegurada es muy importante para que el cortafuegos funcione correctamente ,ya que va a soportar por si sola todos los ataques que se efectúen contra nuestra red al ser el elemento mas accesible de esta. Si la seguridad del host bastión se ve comprometida, la amenaza se traslada a todas las maquinas dentro del perímetro de seguridad. Una buena elección suele ser elegir un servidor corriendo Unix ya que aparte de la seguridad del sistema operativo tenemos la ventaja que la mayor parte de las aplicaciones de firewalling han sido desarrolladas y comprobadas desde hace años sobre Unix.
 

También hemos de elegir que elementos utilizar como choke (dispositivo que se encarga de filtrar paquetes). Generalmente suele ser un router con capacidad para filtrar paquetes aunque también puede ser un sistema Unix .
 

Finalmente hemos de implementar sobre el cortafuegos los mecanismos necesarios para hacer cumplir nuestra política de seguridad. Estos mecanismos se deben implementar sobre los componentes básicos de un cortafuegos.
 
 
 

COMPONENTES.

 
Filtrado de paquetes.
        Se pueden utilizar reglas de filtrado para reducir la carga de la red. Además se puede utilizar para implementar distintas políticas de seguridad en la red, el objetivo de todas ellas suele ser evitar el acceso no autorizado entre dos redes pero manteniendo los accesos autorizados.

 

Su funcionamiento suele ser simple: se analiza la cabecera de cada paquete y en función de unas reglas preestablecidas de antemano la trama es bloqueada o se le permite continuar su camino. Estas reglas habitualmente contienen campos como el protocolo utilizado, las direcciones fuente y destino, y el puerto destino. Algunas implementaciones de filtrado permiten especificar reglas basadas en el interfaz: por donde se ha de reenviar el paquete y el interfaz por donde ha llegado hasta nosotros. Por ejemplo determinar que paquetes del protocolo TCP/IP vamos a permitir que entren y cuales no:
 
 

Los paquetes se distinguen unos de otros mediante unas características, por ejemplo: el TCP/IP se caracteriza por la IP de origen y destino y también por el puerto de origen y destino.
Hay dos tipos de escenarios:
    + Las IPís de una red corporativa:

 
       -IPís privadas
       -IPís publicas ( o de Internet).Por ejemplo: la UJI.



 
 
 
 
 

El cortafuegos determina que paquetes entran o salen. No es importante el sentido sino saber cual es el origen. El firewall controla el forwarding, el reenvío de paquetes. También controla el input y el ouput, es decir, los paquetes que entran y salen.
El forwarding solo funciona si le permito el input y el output. El output y el forwarding son poco necesarios, el input es lo realmente importante ya que si no llega el paquete, el forwarding no sirve de nada y normalmente el output tampoco.
En el momento de rechazar un paquete se puede utilizar dos técnicas:

 
Discart : se pierde el paquete.
Reject: se devuelve el paquete.
La primera técnica es la mas habitual. Da la sensación de que la maquina se encuentra desconectada.
Las reglas se especifican como una simple tabla de condiciones y acciones que es consultada en orden hasta encontrar una regla que permita tomar una decisión. Hemos de tener en cuenta siempre el orden de análisis de las tablas para poder implementar la política de seguridad de una forma correcta, cuanto mas complejas sean las reglas y su orden de análisis, mas difícil será para el administrador comprenderlas. La forma de generar las tablas dependerá del sistema sobre el que trabajemos. Es recomendable insertar una regla por defecto al final de la tabla.
Un ejemplo puede ser el servicio de Telnet de la UJI, en cual solo esta permitido una sesión dentro de la misma universidad pero no hacia el exterior.
La especificación incorrecta de estas reglas constituye uno de los problemas mas habituales de seguridad en el cortafuegos de filtrado de paquetes. Sin embrago el mayor problema es que un sistema de filtrado de paquetes no es capaz de analizar datos situados por encima del nivel de red OSI. Para intentar solucionar esto es recomendable utilizar proxies de aplicación.

 
 
 

Proxy de aplicación.
 

        Además del filtrado de paquetes, es habitual que los cortafuegos utilicen aplicaciones para reenviar o bloquear conexiones a servicios (telnet, ftp,...).A estas aplicaciones se les denomina servicios proxy y la maquina donde se ejecutan se le denomina pasarela de aplicación.
 

Estos servicios tienen una serie de ventajas de cara a incrementar nuestra seguridad. En primer lugar, permiten únicamente la utilización se servicios para los que existe un proxy. La segunda ventaja es la posibilidad de filtrar protocolos basándose en algo mas que en la cabecera de las tramas, por ejemplo tener habilitado un servicio ftp pero con ordenes restringidas (bloquear todos los comandos get para que nadie pudiera bajar ficheros del servidor). Además los application gateways permiten un grado de ocultación de la estructura de red protegida, facilita la autenticación y la auditoria de trafico sospechoso y ,la mas importante, simplifica mucho las reglas de filtrado implementadas en el router: solo hemos de permitir el trafico hacia la pasarela ,bloqueando el resto.
 

El principal inconveniente a la hora de instalar la pasarela de aplicación es que cada servicio necesita su propio proxy, que además es frecuentemente mas caro que un simple filtro de paquetes. En el caso de protocolos cliente-servidor (telnet) se añade la desventaja de que necesitamos dos pasos para conectar hacia la zona segura o hacia el resto de la red, incluso algunas implementaciones necesitan modificar los clientes para que funcionen correctamente.
 

Una variante de las pasarelas de aplicación son las pasarelas de nivel de circuito. Son sistemas que pueden redirigir conexiones (reenviando tramas) pero que no pueden filtrar paquetes, se limitan únicamente a autenticar al usuario. La principal ventaja de este tipo de pasarela es que proveen de servicios a un amplio grupo de protocolos, no obstante necesita software especial que tenga las llamadas al sistema clásica sustituidas por funciones de librerías seguras, como socks.
 
 

Monitorización de la actividad.
 

        Monitorizar la actividad de nuestro cortafuegos es indispensable, nos dará información sobre los intentos de ataque, así como la existencia de tramas que aunque no supongan un ataque a priori ,si que son sospechosas.
 

Debemos de registrar ,además de los registros estándar, información de la conexión, intentos de uso de protocolos denegados, intentos de falsificación de dirección por parte de maquinas de dentro del perímetro de seguridad y tramas recibidas desde un router desconocido. Todos estos registros han de ser leídos con frecuencia y el administrador de la red debe de tomar medidas si se detectan actividades sospechosas.
 

Un excelente mecanismo para incrementar mucho nuestra seguridad puede ser la sustitución de un servicio real por programas trampa. Unas aplicaciones pequeñas simulan un servicio determinado, de manera que el atacante piensa que tal servicio esta habilitado y prosigue su ataque, pero lo que realmente esta haciendo es enviarnos toda la posible información del pirata. Este tipo de programas mantiene al atacante entretenido intentando un ataque que cree factible.
 
 
 

ARQUITECTURAS.
Cortafuego de filtrado de paquetes.
 
        Un cortafuegos sencillo puede ser un dispositivo capaz de filtrar paquetes, un choke. Se trata del modelo mas antiguo, basado simplemente en aprovechar la capacidad de los routers para bloquear o filtrar paquetes en función de su protocolo o su dirección IP. Los accesos desde la red interna al exterior no bloqueados son directos, por lo que esta arquitectura es la mas simple de implementar y la más utilizada por organizaciones que no necesitan un alto nivel de seguridad.

 

No obstante puede no ser recomendable en ciertas situaciones. El principal problema es que no disponen de un sistema de monitorización sofisticado. Además las reglas de filtrado pueden ser complicadas de establecer y por lo tanto difícil de comprobar su corrección.
 

Si a pesar de todo esto decidimos utilizar esta arquitectura, es recomendable bloquear todos los servicios que no se usen desde el exterior, así como el acceso desde maquinas no confiables hacia nuestra subred, también es recomendable bloquear los paquetes con encaminamiento en origen activado.
 
 

Dual-Homed Host.

 
        Esta formado por maquinas Unix equipadas con dos tarjetas de red, en la que una de las tarjetas se suele conectar a la red interna a proteger y la otra a la red externa de la organización.
El sistema Unix debe de ejecutar al menos un servidor proxy para cada uno de los servicios que queramos pasar a través del cortafuegos y es necesario que el IP Forwarding esté deshabilitado. Todo el intercambio de datos se ha de realizar a través de los servidores proxy situados en el host bastión, o permitiendo conectar directamente al mismo.

 
 

Screened Host.
 

        Combina un router con un host bastión y donde el principal mecanismo de seguridad proviene del filtrado de paquetes .En la maquina bastión se ejecutan los proxies de aplicación mientras que el choke se encarga de filtrar los paquetes que se puedan considerar peligrosos.
 

Pero donde tenemos que situar el sistema bastión, en la red interna o en el exterior del router. La mayoría de autores recomiendan situar el router entre la red exterior y el host bastión, pero otros defienden lo contrario.
 
 

Screened Subnet (DMZ).
 

        Añade un nivel de seguridad situando una subred, red perimétrica, entre las redes externas e interna, de manera que reduce los efectos de un ataque exitoso al host bastión.
 

Es la arquitectura mas segura pero también la mas compleja. Se usan dos routers, denominados interior y exterior, conectados ambos a la red perimétrica. En esta red se incluye el host bastión y también se podrían incluir sistemas que requieran un acceso controlado. El router exterior tiene como misión bloquear el trafico no deseado en ambos sentidos, pero el interior hace lo mismo pero con el trafico entre la red interna y la perimétrica. Incluso se puede incrementar el nivel de seguridad si desea añadiendo redes perimétricas en serie, situando los servicios que requiera de menor fiabilidad en las redes mas externas. No obstante también existen problemas, por ejemplo se puede utilizar el cortafuegos para que los servicios fiables accedan directamente sin pasar por el host bastión, lo que puede llevar a un incumplimiento de la política de seguridad de la organización. Un segundo problemas y quizás mas grave, es que la mayor parte de la seguridad permanece en los routers usados y como hemos dicho antes, las reglas de filtrado pueden ser complicadas de configurar y comprobar, lo que puede llevar a errores que abran agujeros de seguridad en nuestro sistema.
 
 

Otras arquitecturas.
 

        Algo que puede incrementar bastante nuestra seguridad y al mismo tiempo facilitar la administración de los cortafuegos es usar un bastión distinto para cada servicio o protocolo. Sin embargo esta arquitectura tiene el grave inconveniente de la cantidad de máquinas necesarias para implementar el firewall. Una variante más barata consistiría en utilizar un único bastión pero con servidores proxy distintos para cada servicio que se ofrezca.
 
 
 

EJEMPLO: ipfwadm / ipchains
 
 
       ipfwadm es una herramienta proporcionada con Linux para la implementación de políticas de filtrado de paquetes en Linux. Debido a sus restricciones (solo puede manejar los protocolos TCP, UDP o ICMP) ha sido reescrito convirtiendose en ipchains a partir del núcleo 2.1.102. En la versión del kernel 2.4 aparece iptables pero sigue existiendo el ipchains pero tenemos que elegir uno de los dos. Aunque todas las versiones de Linux lo llevan por defecto podemos descargarnos una versión mas actualizada desde http://www.rustcorp.com/linux/ipchains/ .

 

En Linux el filtrado de paquetes esta construido en el kernel, para poder utilizar ipchains tenemos que compilar el kernel con las opciones CONFIG_FIREWALL y CONFIG_IP_FIREWALL activadas (sabiendo que debemos de tener la versión del kernel 2.2, de lo contrario es recomendable actualizar el núcleo). Una vez hecho esto  usaremos el ipchains para insertar y eliminar reglas de filtrado. Al tratarse de información dinámica, cada vez que se reinicie el sistema las reglas establecidas se perderan, por lo que es recomendable hacer un script que se ejecute al arrancar el sistema y que las vuelva a definir.
 

El núcleo utiliza tres listas de reglas llamadas chains, son input, output y forward. Cuando recibe un paquete usa la primera de las listas para decidir si lo acepta y si es afirmativo comprueba a donde tiene que enrutar el paquete, en caso de que el destino sea una maquina diferente utiliza la lista forward para enviarlo. La lista output se usa antes de enviar un paquete por un interfaz de red.
 

Cuando un paquete cumple una determinada regla de un chain definimos lo que hay que hacer con el mediante un objetivo o target. Se suelen usar tres objetivos: ACCEPT permite el paso de un paquete, DENY lo bloquea, y REJECT también lo bloquea pero envía un al origen un mensaje ICMP de tipo DEST_UNREACH. Aunque REJECT y DENY nos parezcan igual de seguros, es mas recomendable usar DENY.
 

ipchains permite registrar mediante syslogd los paquetes que cumplen cierta regla. Un registro exhaustivo de las acciones del núcleo con respecto al filtrado de paquetes no es conveniente, por lo tanto lo habitual es almacenar solamente los paquetes que no sean rutinarios.
 

ipchains es una herramienta flexible, potente e igual de importante, gratuita, que funciona en un sistema operativo también gratuito.