firewall sobre linux iptables

36
SERVIDOR FIREWALL SOBRE LINUX IPTABLES FERNADO ALVIRA MELENDRO

Upload: fernando-alvira-melendro

Post on 15-Dec-2015

261 views

Category:

Documents


0 download

DESCRIPTION

Una breve introducción a un Firewall con la herramienta iptables de Linux.

TRANSCRIPT

SERVIDOR FIREWALL SOBRE LINUX IPTABLES

FERNADO ALVIRA MELENDRO

FUNDACIÓN UNIVERSITARIA SAN MARTÍNFACULTAD DE INGENIERÍA DE SISTEMAS

IBAGUÉ2009

SERVIDOR FIREWALL SOBRE LINUX IPTABLES

FERNADO ALVIRA MELENDRO

DocenteJavier Guzmán

Ingeniero de sistemas

FUNDACIÓN UNIVERSITARIA SAN MARTÍNFACULTAD DE INGENIERÍA DE SISTEMAS

IBAGUÉ2009

Servidor Firewall Sobre Linux Iptables 4

Servidor Firewall Sobre Linux Iptables

J. GuzmánIngeniería de Sistemas, Fundación Universitaria San Martín, Ibagué, Colombia

F. AlviraIngeniería de Sistemas, Fundación Universitaria San Martín, Ibagué, Colombia

Abstract- En el presente trabajo se revisa la conceptualización, la configuración y la instalación de un servidor “Firewall” sobre Linux con la herramienta Iptables. Un servidor Firewall es primordial para proteger la información, la disponibilidad y los servicios de cualquier red de datos en la actualidad.

Se revisan los conceptos de firewall, la normatividad sobre cómo debe ser su comportamiento, y se desglosa su operación desde diferentes frentes como lo son la consola de linux y otros entornos gráficos inclusive remotos.

Este trabajo está encaminado a configurar el servidor desde la línea de comando, para así entender de una manera más completa su funcionamiento, de acuerdo con la recomendación RFC29791 que provee la información sobre las características de comportamiento y requerimientos de interoperabilidad de un firewall en internet y a la documentación oficial del proyecto Iptables de www.netfilter.org2.

Index Terms- Firewall, cortafuegos, Redes Iptables, Internet, Webmin.

__________________1 FREED N. Request For Comment 2979 [Online]. Octubre de 2000 [Citado en Marzo de 2009]. Disponible en Internet:http://www.ietf.org/rfc/rfc2979.txt

CONTENTS

I. Introducción 2

II. Firewall 2II-A. Tipos de Firewall……….. 2II-B. Disposiciones………..…. 3II-C. Funciones..……………… 5II-D. Limitaciones…………….. 8

III. Request For Comments RFC2979 8III-A. Características de un

Firewall…………………… 8III-B. Requisitos de un

Firewall…………………… 9III-C. Ejemplos…………………. 9III-D. Requisitos de Aplicación 10 III-E. Consideraciones de

Seguridad……………… 10

IV. Iptables 10IV-A. Estructura……………… 11IV-B. Funcionamiento………. 12IV-C. El comando Iptables…. 12

V. Administración Gráfica 15V-A. X-Window……………… 15V-B. Webmin………………… 18

VI. Conclusiones y recomendaciones 20

References 21

________________2 The netfilter.org “iptables” Project [Online] 2008 [Citado en Marzo de 2009]. Disponible en Internet: http://www.netfilter.org/projects/iptables/index.html

Servidor Firewall Sobre Linux Iptables 5

I. INTRODUCCIÓN

La seguridad y el control de acceso a los recursos de las redes de datos se han vuelto cada día más importante desde la aparición de Internet, esto se debe al incremento de la cantidad y al tamaño de los paquetes que conforman el tráfico de información sobre la red de redes. Actualmente aparece la necesidad de ejercer control sobre este tráfico para evitar quebrantos en la seguridad informática y, además, para garantizar el acceso a los diferentes servicios disponibles en la red. Para esto, la herramienta por excelencia es un Firewall. Mediante este trabajo, se busca entender el funcionamiento del módulo firewall de Linux (Iptables), disponible en cualquier distribución de este sistema operativo.

Por otra parte, los administradores de las redes no siempre están disponibles físicamente en donde se encuentran localizadas las máquinas, por lo tanto se hace necesario tener acceso remoto a ellas de una manera eficiente y segura. En este trabajo se realiza el estudio de formas alternativas y más amigables para accesar y realizar la administración del módulo firewall.

El desarrollo de este paper3, se divide principalmente en cuatro secciones: la primera en donde se la revisa el concepto de firewall, la segunda revisa el “Request For Comments” RFC-2979, documento que define el comportamiento de un firewall y sus requisitos de interoperabilidad.

_______________3 Este paper es un documento técnico desarrollado en el curso de profundización del programa de Ingeniería de Sistemas de la Fundación Universitaria San Martín, periodo A-2009

La tercera revisa el tema de la aplicación iptables. Finalmente la última sección, aplica los conceptos de iptables para lograr administrar un firewall remotamente.

II. FIREWALL

El Firewall es un módulo que puede ser un paquete de software o un dispositivo de hardware comúnmente utilizado en las redes de computadores para controlar (bloquear, modificar, etc) el tráfico de datos entre ellas de acuerdo a políticas previamente establecidas.

A. Tipos de Firewall

Básicamente hay 3 tipos de Firewall:

1. De filtrado de paquetes.

Trabaja en capa 3 del modelo OSI4 o capa de red filtrando los paquetes IP5. Estos filtros se aplican a la dirección de origen, dirección de destino. Trabaja en capa 2 filtrando direcciones MAC (dirección de la tarjeta de Red) o en capa 4 filtrando puertos de origen y destino. También se presentan mezclas de filtros.

________________4 Modelo OSI. El modelo de referencia de Interconexión de Sistemas Abiertos (OSI, Open System Interconnection) lanzado en 1984 fue el modelo de red descriptivo creado por ISO; esto es, un marco de referencia para la definición de arquitecturas de interconexión de sistemas de comunicaciones. [3]

5 Protocolo IP. Protocolo de Internet (IP, de sus siglas en inglés Internet Protocol) es un protocolo no orientado a conexión usado tanto por el origen como por el destino para la comunicación de datos a través de una red de paquetes conmutados. Los datos en una red basada en IP son enviados en bloques conocidos como paquetes o datagramas [4]

Servidor Firewall Sobre Linux Iptables 6

2. De capa de aplicación.

En el modelo OSI, trabaja en la capa 7 o capa de aplicación. Un ejemplo sería el filtro de tráfico HTTP como lo hace un servidor Proxy que filtra las URL o direcciones de las páginas que se desean visitar.

3. Personales

Son aplicativos instalados en computadores de punto final o de usuario. Estos firewalls sirven de filtro para las comunicaciones entre dicho computador y la red.

Figura 1. Tipos de Filtros Modelo OSI

B. Disposiciones de un Firewall

Para ubicar un firewall, hay que tener en cuenta la configuración de la red, que servicios están disponibles, cuales son para la red interna y cuáles van al

exterior, que servidores hay, que dispositivos de comunicación hay disponibles. De acuerdo a esta configuración nos podemos encontrar con varias configuraciones que pueden incluir uno o más firewalls.

Primero tenemos una configuración de red en la cual hay una conexión directa entre la red interna y la externa o con internet a través de un Router sin firewall, sin protección. En esta disposición, la red interna o intranet se encuentra completamente expuesta al exterior, el router solo rechaza el tráfico que no tiene destino en la red interna. Así mismo todos los miembros de la red interna tienen acceso a la red externa.

En la figura número 2, tenemos un ejemplo de esta configuración.

Figura 2. Red sin Firewall.

Servidor Firewall Sobre Linux Iptables 7

La segunda configuración, tenemos que para proteger la red interna, el firewall debería estar ubicado en donde está la conexión entre las dos redes, aislando totalmente el interior del exterior, así evitamos accesos no permitidos que permitan tomar ventaja de algunas de las vulnerabilidades inherentes a los servicios disponibles en los diferentes servidores que haya en la red.

Por otra parte con esta configuración, también es posible administrar el tráfico saliente, seleccionando quien puede tener acceso a internet, o a algunos servicios externos específicos o simplemente, limita su acceso a los recursos de la red interna.

En la figura 3, podemos ver un ejemplo de esta disposición.

Figura 3. Red con Firewall

En algunas redes podemos encontrar otro tipo de disposición del Firewall, se encuentra conectado a otra red llamada DMZ (Demilitarized Zone) o zona desmilitarizada (Figura 4) por su sigla en inglés.

Figura 4. Red con Firewall y DMZ

En la DMZ, los servidores son visibles desde la red exterior o internet y esto se hace con el fin que si el servidor es vulnerado y se logra acceso a él, la red interna siga estando protegida. En esta configuración, el firewall no realiza ninguna función de filtrado sobre los paquetes que tienen como destino la red DMZ, es como si los servidores estuvieran conectados físicamente a la red externa o internet.

Una derivación de esta disposición es la cual en la que se está protegiendo la red DMZ de infiltraciones desde el interior de la intranet, esto es porque al interior la organización puede haber riesgo que algún usuario mal intencionado intente realizar una conexión restringida sobre alguno de los servidores. Esta disposición se puede ver en la Figura 5.

Servidor Firewall Sobre Linux Iptables 8

Figura 5. Red con 2 Firewall y DMZ

Así como estas, hay varias maneras de configurar una red con firewall, se pueden usar como protección de internet, como protección al interior de la organización, filtro entre las redes internas e inclusive en algunos casos podemos tener partes de la red protegidas y otras sin protección. Todo depende de las necesidades y en ocasiones también influye el factor económico.

C. Funciones de un Firewall

Network Address Translation (NAT)

NAT o “enmascaramiento” es el proceso de modificar la información de dirección de red en el encabezado de un paquete IP en su camino a través de un dispositivo de enrutamiento o filtrado con el

propósito de mapear la nueva dirección ya sea la de origen o la de destino [5].

Esta técnica aparece ante la latente posibilidad de que en un momento dado, se lleguen a agotar las direcciones validas de Internet.

La necesidad de tener numerosos servicios al aire, pero un número limitado de direcciones resultó en fórmulas de enmascaramiento para permitir que varios servidores y computadores personales miembros de una red privada, accesen la red externa o la misma Internet utilizando únicamente una dirección valida. Esto funciona tanto como para tráfico saliente como para el entrante.

Así, todo lo que salga de la red interna, el dispositivo NAT, le cambia al encabezado del paquete IP el campo de dirección de origen, quitando la dirección de la red privada y dejando la dirección pública para luego reenviarlo a su destino. De la misma manera cuando un paquete llega de internet, el dispositivo NAT cambia ahora el campo de dirección de destino y quita la dirección pública y asigna la dirección privada del servidor o computador personal que debe recibir el paquete.

Figura 6. Encabezado de un Paquete IP

Servidor Firewall Sobre Linux Iptables 9

Para enviar un paquete de la red local, por ejemplo tenemos que enviar desde una estación con la dirección IP 10.0.1.24, la dirección pública del servidor de la empresa es 200.36.80.45, y lo vamos a enviar a un servidor con la dirección pública 200.41.9.39. Entonces el paquete de original tiene en el campo de dirección de origen 10.0.1.24, el proceso NAT lo modifica cambiando ese campo por 200.36.80.45 y envía el paquete a su destino. Para el destinatario, el remitente del paquete fue el servidor con la dirección pública. (Figura 7).

Figura 7. NAT de envío de paquetes

De la misma manera, supongamos que el servidor remoto devuelve la respuesta. El paquete que regresa tiene como dirección de origen la 200.41.9.39 y la dirección de destino la 200.36.80.45 que es la dirección

pública del servidor. Cuando se verifica el paquete y cambia la dirección de destino por la de la estación local 10.0.1.24 y finalmente lo entrega (Figura 8).

Figura 8. NAT de recepción de paquetes.

Todo esto se logra de acuerdo a las reglas definidas en el servidor firewall, y al mapeo direcciones IP sumado con el mapeo de los puertos.

PROXY

Como hemos visto en las diferentes configuraciones de red, lo más común es tener una salida a internet para toda la red. Un servidor proxy, es un servidor que sirve como puente para resolver las solicitudes de los diferentes usuarios en la red, así en vez de configurar un acceso a internet para cada usuario en la red,

Servidor Firewall Sobre Linux Iptables 10

se configura el acceso para un servidor proxy y se configuran todos los equipos de la red como clientes de dicho servidor.

De esta manera, los clientes realizan las solicitudes al servidor proxy, este las realiza a su contraparte en internet, a su vez, este le da la respuesta al proxy y finalmente la respuesta se retransmite a la estación que originó la solicitud.

Hay servidores proxy para varios servicios, los más comunes son los de servicio Web, ftp y servicio de correo electrónico.

Los proxy web mejoran su tiempo de respuesta mediante un caché, esto es, guardan en una memoria todas las solicitudes atendidas y al momento de realizar una previamente hecha, la trae desde la memoria evitando entrar a internet.

QOS (Quality Of Service)

Calidad del servicio. El ancho de banda, o capacidad del canal, es un recurso que en ocasiones puede llegar a ser limitado.

El servicio QOS, permite realizar una división del canal y asignar anchos de banda fijos como por ejemplo para ciertas direcciones destinadas a servidores o a ciertos usuarios o también, para algunos protocolos, así, como en el ejemplo de la Figura 8, así haya muchas peticiones de navegación HTTP, el canal para transferencia de archivos FTP no se va a ver afectado, o los canales de envío y recepción de correo electrónico.

Para utilizar este servicio hay que realizar un análisis del uso que se le da al canal para evitar que servicios desperdicien capacidad, mientras otros se encuentran saturados con bloqueos permanentes.

Figura 8. QOS

Balanceo de Carga

En ciertas redes empresariales, hay más de un canal de salida a Internet, el servicio de balanceo de carga, se encarga de establecer cual canal utilizar para mantener todos los canales en un mismo nivel de ocupación y previene que ocurran negaciones de servicio al enviar paquetes a un canal ocupado mientras hay otro disponible.

Figura 9. Balanceo de Carga

Servidor Firewall Sobre Linux Iptables 11

D. LIMITACIONES DE UN FIREWALL

Un Firewall configurado correctamente agrega protección a una red de datos, pero no es la solución absoluta de seguridad informática, hay que tener en consideración muchos otros escenarios en los cuales las vulnerabilidades son explotadas de otras maneras alternativas:

Ataque de “ingeniería social”6. Espías o usuarios malintencionados Captura de información en la

transferencia de datos. Ataque en áreas no protegidas por

el firewall. (Estaciones Stand Alone).

III. Request for Comments 2979

Los “Request for Comments” o RFC, son documentos técnicos y organizacionales que tratan los temas de Internet, incluyendo las especificaciones técnicas y políticas por el IETF (Internet Engineering Task Force en castellano Grupo de Trabajo en Ingeniería de Internet).

El IETF es una organización internacional abierta de normalización, que tiene como objetivos el contribuir a la ingeniería de Internet, actuando en diversas áreas, tales como

______________________6 En el campo de la seguridad informática, ingeniería social es la práctica de obtener información confidencial a través de la manipulación de usuarios legítimos. Es una técnica que pueden usar ciertas personas, tales como investigadores privados, criminales, o delincuentes informáticos para obtener información, acceso o privilegios en sistemas de información que les permitan realizar

algún acto que perjudique o exponga la persona u organismo comprometido a riesgo o abusos. [6]

transporte, enrutamiento y seguridad. Fue creada en Estados Unidos en 1986.

Es una institución formada básicamente por técnicos en Internet e informática cuya misión es velar porque la arquitectura de la red y los protocolos técnicos que unen a millones de usuarios de todo el mundo funcionen correctamente. Es la organización que se considera con más autoridad para establecer modificaciones de los parámetros técnicos bajo los que funciona la red7.

El RFC-2979 define las características de comportamiento y cuáles son los requerimientos de interoperabilidad de los Firewall o en Internet. [1]

Los firewall actúan como protocolo de punto final y puente, como por ejemplo, en los casos de protocolos de correo electrónico, también funcionan como filtro de paquetes o una combinación.

Cuando el firewall funciona como protocolo debe implementar una versión segura del mismo, debe realizar pruebas de validez, debe reducir al mínimo las probabilidades de fallo, debe correr en un ambiente seguro y aislado o debe usar una combinación de estas técnicas en paralelo.

A. Características de un Firewall

Los firewall que funcionen como filtro de paquetes no son visibles como los

___________________7 IETF- Wikipedia [Online] 2005 [Citado en Marzo de 2009]. Disponible en Internet: http://es.wikipedia.org/wiki/IETF

Servidor Firewall Sobre Linux Iptables 12

protocolos de punto final. Deben examinar los paquetes y luego realizan alguna de las siguientes acciones: pasan el paquete de una red a la otra sin cambiarlo, rechazan el paquete, o manipulan el paquete de alguna manera.

Los firewall basan sus decisiones en las direcciones IP de origen y de destino y en los números de puerto. De acuerdo a esto, el firewall puede bloquear paquetes desde Internet que busquen acceso a una dirección de la red interna, puede bloquear conexiones de tipo Telnet de una red a otra, bloquea conexiones de correo o transferencia de archivos desde la red interna al exterior, debe actuar como intermediario en conexiones SMTP y HTTP en cualquier dirección o también debe usar un protocolo de acceso, negociación y encapsulamiento como SOCKS para permitir acceso al exterior, al interior o ambos.

B. Requisitos de un Firewall

Las aplicaciones deben trabajar correctamente en la presencia de un firewall. Con esto, aparece la siguiente regla de transparencia: “La introducción de un firewall y cualquier dispositivo de túnel o negociación de acceso NO DEBE causar fallas no intencionadas en la manera correcta de funcionamiento, cumpliendo todos los estándares, como trabajaría si el firewall no estuviera presente” [1].

Una consecuencia de esta regla es que si aparece una falla, es debida al firewall y cualquier software asociado a él, no a los protocolos.

Dicha regla solo aplica para usos legítimos de los protocolos, aunque el

firewall puede bloquear cualquier acceso considerado ilegal por el sitio así el uso de los protocolos sea el correcto.

El firewall puede proveer métodos de autenticación para autorizar varios tipos de conexiones y lograr así, que el firewall sea configurable.

C. Ejemplos

Los siguientes, son ejemplos de cómo la regla de transparencia aplica para algunos protocolos:

1. Path MTU Discovery8 y ICMP9

Los mensajes ICMP son bloqueados frecuentemente pos los firewall por la percepción que son una fuente de vulnerabilidades de seguridad. A menudo, esto crea unos “hoyos negros” para el Path MTU Discovery, causando retrasos y bloqueos para trafico de aplicaciones legítimas.

Por la regla de transparencia, las aplicaciones que utilicen el protocolo Path MTU Discovery no deben sufrir dichos retrasos o bloqueos.

Por otro lado es apropiado bloquear los mensajes ICMP que

_________________8 Path MTU Discovery o PMTU Discovery, se refiere al protocolo que descubre la máxima unidad de Transmisión (MTU) para una ruta entre dos hosts de una red. [7]

9 ICMP (Internet Control Message Protocol)Es un subprotocolo de control perteneciente al protocolo de Internet (IP). Se usa para enviar mensajes de error si un servicio no está disponible o un host no puede ser localizado. [8]

Servidor Firewall Sobre Linux Iptables 13

no sean respuesta a tráfico saliente legítimo.

2. Extensiones SMTP10

El protocolo SMTP original no tenía un mecanismo para extensiones de protocolos de negociación. Cuando fueron agregadas, se agregó el comando EHLO11 al firewall dentro de la lista de comandos aceptados. En algunos casos el firewall no entendía el comando causando una falla en el protocolo SMTP.

D. Requisitos de aplicación

Los protocolos de aplicación DEBEN ser diseñados para facilitar su operación a través de los firewall de manera que estos diseños no impacten adversamente la aplicación de alguna otra manera. Además, las especificaciones de protocolos de aplicación PUEDEN incluir material que defina los requerimientos que debe cumplir un firewall para manejar apropiadamente el protocolo de aplicación.

E. Consideraciones de Seguridad

Una buena seguridad ocasionalmente puede resultar en problemas de

_______________10 Protocolo Simple de Transferencia de Correo, es un protocolo de la capa de aplicación. Protocolo de red basado en texto utilizado para el intercambio de mensajes de correo electrónico entre computadores u otros dispositivos.[9]

11 Comando del Protocolo SMTP que al igual que el comando HELO, abre una sesión en un servidor SMTP y además le pregunta cuales extensiones soporta. [10]

interoperabilidad entre componentes.

Sin embargo, esto no significa que fallas de interoperabilidad causadas por componentes de seguridad sean aceptables.

Para implementar un firewall se debe trabajar duro para obtener cierto nivel de seguridad, sin embargo la regla de transparencia debe ser obstáculo para alcanzar el nivel deseado.

Los que implementan firewall pueden decir que cumplir con la regla de la transparencia es altamente oneroso y que una seguridad adecuada no puede ser alcanzada cumpliendo la regla. Es más difícil cumplirla que no hacerlo.

Sin embargo, es importante recordar que una red completamente segura es una que no permite el paso de ningún dato y el único problema de esa red es que no se puede usar. Por debajo de esto es un intercambio entre seguridad y capacidad de uso. Los firewall se están evitando porque no cumplen el requerimiento de transparencia y esto debilita la seguridad dramáticamente. En otras palabras la razón para que algunos firewall estén en uso es porque están deshabilitados. Como tal, una razón de tener el requerimiento de la transparencia es el de MEJORAR la seguridad.

IV. IPTABLES

Iptables, también conocido como “Netfilter” [2], es un conjunto de funciones de punto de entrada, o como se denominarán en el resto del capítulo, “hooks”, que vienen incluidas en el núcleo o “Kernel” versiones 2.4.x, 2.6.x de Linux. Entonces, cada función

Servidor Firewall Sobre Linux Iptables 14

captura y manipula los paquetes de Red. Para Iptables, los “hooks” trabajan cuando llega un paquete IP que cumpla con la condición de entrada, puede ser la dirección IP de origen o destino, el número de puerto, etc, hace que se ejecute esa función y el paquete es manipulado.

Entonces, en Linux, el Firewall hace parte de su núcleo y está conformado por un conjunto de “hooks” encargados de realizar las funciones de filtrado de paquetes, NAT y algunos que proveen compatibilidad con reglas de versiones anteriores como “Ipchains”12.

Figura 10. Esquema Sistema Operativo Linux

A. Estructura

Netfilter tiene 3 opciones de manejo de paquetes, cada paquete corresponde a una tabla con una finalidad específica, de aquí el nombre de “Iptables”. Estas tres tablas son “Filter” o filtro, “NAT” o traducción de direcciones y “mangling” o manipulación.________________12 IPCHAINS es la versión del software de Netfilter previa a Iptables, venía incluida en los Linux con Kernel 2.2.x [2]

Tabla NAT:Permite configurar el protocolo NAT. Al recibirse una conexión TCP, se toman el grupo de paquetes que llega y se le aplican las operaciones de NAT o de enmascaramiento. Esta tabla tiene 3 cadenas para aplicar reglas:

1. “PREROUTING” aplicada a los paquetes recién llegados para realizar “DNAT” o NAT de Destino.

2. “OUTPUT” Usada para los paquetes generados por el propio firewall antes de enrutar. Realiza “DNAT” localmente

3. “POSTROUTING” usada en los paquetes que acaban de salir del firewall para realizar “SNAT” o NAT de Origen

Tabla FilterEs la tabla que cumple la función esencial de Iptables, el filtrado de paquetes. También aplica 3 Reglas:

1. “INPUT” aplica a todos los paquetes entrantes cuyo destino es el mismo firewall.

2. “FORWARD” aplica a los paquetes entrantes pero su destino es otro host dentro de la red interna. Aquí se decide si se acepta o no el paquete.

3. “OUTPUT” aplica a los paquetes salientes de un host de la red interna hacia destinos externos.

Tabla ManglePermite manipular todos los campos del encabezado del paquete IP a excepción de los campos de direcciones de origen y destino. Utiliza principalmente las

Servidor Firewall Sobre Linux Iptables 15

cadena “PREROUTING” y “OUTPUT”

B. Funcionamiento

Al llegar un paquete de información al firewall, el paquete es entregado al Kernel, aquí pasa por los distintos “hooks” en los cuales se cumpla la condición de entrada.(Tabla 1)

Condición de Entrada DestinoProtocolo Accept (Aceptar)Dir. IP de Origen Drop (Desestimar)Dir. IP de Destino Queue (Poner en cola)Puerto de destino Return (Devolver)Puerto de Origen Reject (Rechazar)Banderas TCP Definida por el usuario

Tabla 1. Condiciones de entrada y destinos.

En la Figura 11 se encuentra el esquema del flujo que siguen los paquetes en iptables.

Figura 11. Flujo de paquetes en un firewall

En la figura vemos que el flujo de la izquierda corresponde a todos los paquetes que tienen como destino el firewall, los de la derecha corresponden a otros hosts de la red interna. También cabe anotar en el flujo de la izquierda, que la transición entre las cadenas INPUT y OUTPUT corresponde a un proceso interno que realiza el firewall, el primero podría ser una petición, y después de analizarla y procesarla, enviaría el segundo como respuesta.

La siguiente tabla muestra el camino a través del módulo del kernel netfilter iptables.

Paso Tabla IP

Cadena Acción

1Paquete en internet

2

El paquete llega a la interfaz de red del firewall, puede ser eth0

3 Mangle Prerouting

Si cumple con alguna condición de mangle, realiza la acción que indicada

4 NAT Prerouting

Si cumple con alguna condición de NAT, realiza la acción que indicada

5Revisa el enrutamiento

6 Filter InputEnvía el paquete a la red local

7

La aplicación o servicio de destino recibe el paquete para procesarlo.

Tabla 2. Camino de un paquete externo con destino en el firewall

C. El Comando Iptables

En este capítulo se tratará el comando Iptables, el cual es la herramienta para crear las diferentes reglas de un firewall usando el módulo netfilter.

Servidor Firewall Sobre Linux Iptables 16

De acuerdo a la estructura y al funcionamiento de Iptables, se tiene que funciona con tres tablas, cada tabla tiene definidas unas cadenas. Cada cadena está conformada por una lista de reglas de filtrado y cada regla es una pareja formada por la condición de entrada y la acción a realizar sobre los atributos del paquete IP.

Cada paquete que llegue al firewall recorre secuencialmente la lista de reglas hasta cumplir con la condición de entrada de alguna de ellas. Al momento en que esto suceda, al paquete se le aplica la acción dispuesta en la regla de filtrado. Si en un momento dado el paquete recorre toda la lista y no cumple con ninguna de las condiciones de entrada, se ejecutará la acción por defecto para la cadena.

La sintaxis general del comando Iptables es la siguiente:

Iptables [-t tabla] [regla] [condición de Entrada] [acción]

Iptables siempre maneja una de las tres tablas, cuando en el comando se omite este campo, se refiere por defecto a la tabla “Filter”.

La regla tiene la siguiente estructura:

-[A I R D L F Z N X P] regla

La regla puede ser INPUT, OUTPUT, PREROUTING, POSTROUTING o FORWARD según la tabla que se esté trabajando

Los siguientes son los comandos para añadir y manipular cadenas y sus reglas:

Comando Descripción

Iptables -AInserta una regla al final de una cadena.

Iptables -IInserta una regla al inicio de una cadena.

Iptables -RReemplaza una regla de una cadena

Iptables -DElimina una regla de una cadena.

Iptables -L Lista las reglas de una cadena

Iptables -FVacía una cadena (elimina las reglas)

Iptables –ZResetea las variables de una cadena

Iptables -NCrea una cadena nueva sin reglas

Iptables -X Elimina una cadena vacíaIptables -P Cambia la política por defecto

Tabla 3. Comandos para manejar reglas y cadenas.

En el campo de Condición de Entrada tenemos las características del tipo de paquete al que se le quiere aplicar la regla. Tabla 4.

Opción Descripción-s Dominio, ip, rango de ip de origen-d Dominio, ip rango de ip de destino-i Interfaz o tarjeta de red de entrada-o Interfaz o tarjeta de red de salida-p Especifica el protocolo del paquete

-fPaquetes fraccionados de acuerdo al MTU [9]

-p TCP --sport

Puerto TCP de origen

-p TCP --dport

Puerto TCP de destino

-p TCP –tcp-flags

Compara las Banderas TCP del paquete contra una máscara. (SYN,ACK,FIN,RST,URG,PSH, ALL O NONE)

-p TCP --syn

Revisa que la bandera SYN esté en 1 y ACK y FIN sean 0

-p UDP --sport

Puerto UDP de origen

-p UDP --dport

Puerto UDP de destino

-p icmp –icmp-type

Identifica el tipo de mensaje ICMP

--mac-source

Especifica la dirección MAC, valido solo en INPUT y FORWARD

Tabla 4. Opciones de la Condición de Entrada para Iptables

Servidor Firewall Sobre Linux Iptables 17

Finalmente, en el campo de acción se establece que acción aplicar al paquete. Tabla 5.

Opción Descripción-j ACCEPT Acepta el paquete

-j REJECTDesecha el paquete con una respuesta ICMP (Host Unreachable)

-j DROPDesecha el paquete silenciosamente

-j REDIRECT Redirige el comando

-j LOGCrea un log de la operación para su futuro análisis

Tabla 5. Acciones realizables por un firewall

Ya vista la sintaxis del comando, hay que dejar claro que el orden en que se escriben las reglas y las cadenas ya que un paquete cuando cumple con una condición de entrada es afectado inmediatamente sin importar las reglas posteriores, como por ejemplo, si agregamos una regla en la tabla “filter” y posteriormente utilizamos el comando iptables –F, la regla anterior sería eliminada.

Para la política por defecto, tenemos dos formas de implementar un firewall, cada uno con sus ventajas y desventajas.

La Primera es una política de aceptar todo el tráfico y posteriormente se niega todo lo que no necesitemos. Aunque es más fácil de administrar, es un poco más inseguro.

La segunda política es de rechazar todo el tráfico y posteriormente se aceptan o se crean las reglas para habilitar en tránsito entrante y saliente necesario. Demanda mucha más administración pero es más seguro.

Reuniendo todo lo anterior, se tiene que un firewall basado en netfilter

iptables, no es más que un conjunto de cadenas y reglas escritas en un orden predeterminado para su correcto funcionamiento, por lo tanto, una manera de administrarlo es reuniendo todas las cadenas en un solo script13 y ejecutarlo al momento de iniciar el firewall. Así para modificar la configuración del Firewall, nos bastará con modificar el script.

Un posible modelo de un script sencillo con política por defecto de rechazar conexiones y con un servidor web y otro de correo en una DMZ sería el siguiente:

## Script de Configuración Iptables

## Limpiado de Reglasiptables –Fiptables –Xiptables –Ziptables –t nat –F

## Política por defecto: DROPiptables –P INPUT DROPiptables –P OUTPUT DROPiptables –P FORWARD DROP

##Filtros

## IP desde la cual se administra## el firewall 10.1.1.24iptables –A INPUT –s 10.1.1.24 –j

ACCEPTiptables –A OUTPU –d 10.1.1.24 –j

ACCEPT

## Se restringe el acceso al## firewall al resto de la red iptables –A INPUT –s 0.0.0.0/0 –j

DROP

_________________13 En informática, un script es un guión o conjunto de instrucciones. Permiten la automatización de tareas creando pequeñas utilidades. Es muy utilizado para la administración de sistemas UNIX. Son ejecutados por un intérprete de línea de órdenes y usualmente son archivos de texto. También un script puede considerarse una

Servidor Firewall Sobre Linux Iptables 18

alteración o acción a una determinada plataforma [11].## Reglas para servidor Web en DMZ## 190.135.21.4# Acceso puerto 80iptables –A FORWARD –d 190.135.21.4

-p tcp –dport 80 –j ACCEPTiptables –A FORWARD –s 190.135.21.4

-p tcp –sport 80 –j ACCEPT

## Permiso a IP para administrar el## servidor web 10.1.1.24 por SSHIptables –A FORWARD –s 10.1.1.24 –d 190.135.21.4 -p tcp –dport 22

–j ACCEPTIptables –A FORWARD –s 190.135.21.4

–d 10.1.1.24 -p tcp –sport 22–j ACCEPT

## Reglas para servidor de correo ## en DMZ 190.135.21.5# Acceso puerto 25iptables –A FORWARD –d 190.135.21.5

-p tcp –dport 25 –j ACCEPTiptables –A FORWARD –s 190.135.21.5

-p tcp –sport 25 –j ACCEPT# Acceso puerto 110iptables –A FORWARD –d 190.135.21.5

-p tcp –dport 110 –j ACCEPTiptables –A FORWARD –s 190.135.21.5

-p tcp –sport 110 –j ACCEPT# Acceso puerto 143iptables –A FORWARD –d 190.135.21.5

-p tcp –dport 143 –j ACCEPTiptables –A FORWARD –s 190.135.21.5

-p tcp –sport 143 –j ACCEPT

## Permiso a IP para administrar el## servidor de correo 10.1.1.24 por## SSHIptables –A FORWARD –s 10.1.1.24 –d 190.135.21.5 -p tcp –dport 22

–j ACCEPTIptables –A FORWARD –s 190.135.21.5

–d 10.1.1.24 -p tcp –sport 22–j ACCEPT

# Fin del Script

V. Administración Gráfica

Aunque comparten el núcleo o Kernel, el entorno gráfico o sistema “X-indow” y los “entornos de escritorio”14 como Gnome o KDE, las diferentes

distribuciones de linux, tienen sus propias herramientas de administrar el firewall gráficamente. Por otra parte, hay otras herramientas orientadas a la web que también permiten realizar la administración de los firewall de Linux.

En este documento se tratarán las distribuciones empresariales de Red Hat en su versón 5 y SuSe en su versión 10. Dentro de las utilidades web se tratará una llamada Webmin.

A. X-Window

1. Configuración en modo gráfico con el gestor de escritorio GNome en Red Hat Enterprise server versión 5.

Figura 12. Llamado de la herramienta de configuración de Firewall en Red Hat

Para llamar la herramienta, seleccionamos el menú “Sistema”, “Administración” y por

__________________14 Un entorno de escritorio (en inglés, Desktop Environment) es un conjunto de software para ofrecer al usuario de una computadora una interacción amigable y cómoda.El software es una solución completa de interfaz gráfica de usuario o GUI, ofrece iconos, barras de herramientas, programas e integración entre

Servidor Firewall Sobre Linux Iptables 19

aplicaciones con habilidades como, arrastrar y soltar [12].

último “Nivel de Seguridad y Contrafuegos”. (Figura 13)

Figura 13. Herramienta de Configuración de Firewall de Red Hat

Esta herramienta permite realizar las configuraciones más básicas del firewall. Si el “Cortafuegos” se encuentra deshabilitado, al hacer un iptables –L se tiene que el firewall solo cuenta con las tres cadenas definidas por defecto con un comportamiento de ACCEPT.(Figura 14)

Figura 14. Listado con el firewall “deshabilitado” en la herramienta de Red Hat

Al habilitar el “Cortafuegos”, tiene un listado de servicios que se pueden seleccionar: Correo (SMTP), FTP, NFS4, SSH, Samba, Telnet, HTTP y HTTPS.

Adicionalmente tiene las opciones para agregar puertos manualmente. (Figura 15)

Figura 15. Herramienta de configuraciónde Firewall de Red Hat

Al aplicarlas se crean las nuevas reglas de manera automática permitiendo acceso a los puertos habilitados y rechazando el tráfico para el resto.

Servidor Firewall Sobre Linux Iptables 20

Figura 16. Listado después de habilitar el firewall y permitir acceso al puerto 22.

Esta utilidad facilita la labor de abrir y cerrar puertos, pero no es lo suficientemente completa ya que sólo permite agregar reglas para la tabla “Filter” y no tiene opciones para agregar cadenas de las de las tablas “NAT” o “Mangle”

2. Configuración en modo gráfico con el gestor de escritorio GNome en SuSe Enterprise server versión 10 y la herramienta YAST15.

Para invocar la herramienta, se selecciona el icono de “Computer” y en la sección de aplicaciones se selecciona Yast (Figura 17)

Figura 17. Invocación de YaST.

En el centro de control de YaST, se selecciona la categoría de “Seguridad y usuarios” y luego el enlace al “Cortafuegos”.

____________________15 YaST (acrónimo de Yet another Setup Tool, cuya traducción aproximada es "Otra Herramienta de Configuración Más") es una aplicación para la distribución de Linux openSUSE, así como las versiones comerciales de SUSE Linux, que facilita la administración del sistema y la instalación de software. [13].

Figura 18. Centro de Control YaST.

Una vez abierta la configuración del cortafuegos, encontramos 7 módulos que podemos configurar del Firewall para Suse.

Servidor Firewall Sobre Linux Iptables 21

Figura 19. Módulos de laConfiguración del Firewall

En la parte de inicio, se configuran las opciones de arranque de firewall (manual / automático). Figura 20

Figura 20. Configuración Inicial

En Interfaces se configuran todos los parámetros de las tarjetas de red. Figura 21

Figura 21 Configuración Interfaces

Los servicios autorizados es el módulo para administrar las conexiones que van para las diferentes zonas y para servicios como lo son telnet, ssh ftp, etc. Aquí se configura la Tabla “Filter” Figura 22.

Figura 22. Configuración de Servicios Autorizados

Enmascaramiento. Permite realizar cambios sobre las cadenas de la tabla NAT. Figura 23

Figura 23. Configuración NAT

El módulo de difusión implica, de una manera limitada, las políticas de FORWARD que administra el Firewall. Trabaja la tabla “Filter”. Figura 24

Figura 24. Configuración de Difusión

El soporte IPSec. Permite administrar los clientes que realizan conexiones de este tipo en general.

Servidor Firewall Sobre Linux Iptables 22

El nivel de registro es una utilidad para llevar la cuenta entre número de paquetes aceptados, rechazados.

Aunque esta herramienta es mucho más completa que la de Red Hat, para cualquiera de las dos es conveniente conocer el funcionamiento de Iptables desde abajo, ya que todos estos programas trabajan sobre el iptables.

B. Webmin

Las dos herramientas anteriores, nos dieron la oportunidad de realizar una configuración gráfica de iptables, aunque YaST en más avanzada que la herramienta de Red Hat, no permite realizar configuraciones avanzadas, y la otra limitante que tienen es que necesariamente hay que trabajar con ellas localmente en la máquina.

Conociendo estos limitantes, aparece otra herramienta de configuración gráfica “Web Enabled”16 que entre uno

____________________16. Web Enabled. Habilitado para usar mediante una página Web. [14]

de sus múltiples servicios, permite administrar el firewall de Linux basado en iptables: Webmin.

¿Qué es Webmin?

Webmin es una interfaz Web para administrar sistemas Unix17. Mediante el uso de cualquier navegador web, usted puede configurar cuentas de usuario, Apache, DNS, archivos compartidos y mucho más. Webmin quita la necesidad de editar manualmente los archivos de configuración de Unix como /etc/passwd, y le permite manejar el sistema desde la consola o remotamente. [15]

Webmin fue desarrollado por el australiano Jamie Cameron y liberado bajo licencia BSD18. Incluye numerosos módulos que permiten configurar y administrar gran variedad de sistemas operativos incluyendo Windows aunque de una manera limitada.

La instalación y configuración es muy sencilla, por ello se obviará este tema y se pasará directamente a la configuración del firewall que es el tema central de este trabajo. Para ingresar a Webmin hay que hacerlo por El puerto TCP 10000 usando SSL:

https://localhost:10000

___________________17. Unix. Al referirse al sistema Unix, el autor se refiere a todos los sistemas operativos estilo Unix incluyendo Linux, Solaris y muchos otros.

18. Licencia BSD. La licencia BSD es la licencia de software otorgada principalmente para los sistemas BSD (Berkeley Software Distribution). Pertenece al grupo de licencias de software Libre. La licencia BSD al contrario que la GPL permite el uso del código fuente en software no libre. [16]

Servidor Firewall Sobre Linux Iptables 23

Figura 26. Ingreso a Webmin

Para ingresar se debe autenticar como súper usuario o root. Posteriormente en el panel de la izquierda, en el listado de los módulos se elige el módulo “Networking” y posteriormente, “Linux Firewall”. (Figura 27)

Figura 27. Enlace al administrador del Firewall

Luego de seleccionar ese enlace, aparece la interfaz de administración de Firewall, la cual muestra la tabla que se está trabajando, las cadenas con sus reglas, las opciones para

modificarlas, la opción de crear una cadena nueva y en la parte inferior un listado con las reglas para esta tabla.

Figura 28. Interfaz de configuración del Firewall.

Mediante esta herramienta se pueden definir todo tipo de cadenas y reglas para cualquiera de las tres tablas del iptables, aunque no es tan sencilla de manejar como la herramienta YaST de Suse, es mucho más completa, ofrece casi las mismas posibilidades de configurar el iptables como si se estuviera trabajando en modo texto.

Al igual que las anteriores, es imperativo saber manejar el tema de reglas y cadenas para lograr una buena administración del servidor, de lo contrario se corre el riesgo de bloquear las comunicaciones de la red.

VI. CONCLUSIONES Y RECOMENDACIONES

De acuerdo a lo trabajado en este curso, se puede concluir lo siguiente:

La implementación, configuración y puesta en marcha de un servidor de seguridad para una red es un proceso de mucho cuidado, se debe realizar una planificación y

Servidor Firewall Sobre Linux Iptables 24

una documentación previa para evitar que las vulnerabilidades de la red interna sean explotadas.

No es una manera muy adecuada de configurar un firewall en linux utilizar las herramientas gráficas incluidas en las diferentes distribuciones de linux, tienen un alcance limitado.

La implementación de un Firewall basado en iptables requiere un usuario avanzado, puesto que su administración es compleja, requiere conocimientos en temas variados y además debe cumplir con la regla de transparencia sin poner en peligro la seguridad.

La debilidad más grande de iptables es, al mismo tiempo, una de sus mayores fortalezas. Cuanto más detallado sea el proceso de creación de cadenas y reglas, más seguro va a ser el firewall.

Es una buena práctica asegurarse que no haya ningún firewall configurado previamente a la implementación que se vaya a realizar.

Las siguientes son algunas recomendaciones sobre el tema.

Se propone que antes de la configuración de un firewall debe haber un proceso de levantamiento de información muy completo.

Aunque es más costoso de administrar, se propone que el firewall que tenga como política por defecto “DENEGAR”.

Se propone el uso de un script único de configuración de las cadenas y reglas de un firewall.

Se propone que en todo script de configuración de reglas, siempre se incluya al principio un conjunto de reglas que borren y/o que dejen en cero cualquier regla que pudiera estar vigente previamente.

REFERENCES

[1] FREED N. Request For Comment 2979 [Online] [Citado en Marzo de 2009]. Octubre de 2000. Disponible en Internet:http://www.ietf.org/rfc/rfc2979.txt

[2] The netfilter.org “iptables” Project [Online] 2008 [Citado en Marzo de 2009]. Disponible en Internet:http://www.netfilter.org/projects/iptables/index.html

[3] Modelo OSI. Wikipedia [Online] 2001 [Citado en Marzo de 2009]. Disponible en Internet:http://es.wikipedia.org/wiki/Internetwork_Operating_System

[4] Protocolo IP. Wikipedia [Online] 2003 [Citado en Marzo de 2009]. Disponible en Internet:http://es.wikipedia.org/wiki/Protocolo_IP

[5] Network Address Translation. Wikipedia [Online] 2002 [Citado en Marzo de 2009]. Disponible en Internet:http://en.wikipedia.org/wiki/Network_address_translation

[6] Ingeniería social (seguridad informática). Wikipedia [Online] 2005 [Citado en Marzo de 2009]. Disponible en Internet:

Servidor Firewall Sobre Linux Iptables 25

http://es.wikipedia.org/wiki/Ingenier%C3%ADa_social_(seguridad_inform%C3%A1tica)

[7] Maximum Transmission Unit. Wikipedia [Online] 2002 [Citado en Marzo de 2009]. Disponible en Internet: http://en.wikipedia.org/wiki/Maximum_transmission_unit [8] ICMP. Wikipedia [Online] 2002 [Citado en Marzo de 2009]. Disponible en Internet: http://es.wikipedia.org/wiki/ICMP

[9] SMTP (Simple Mail Transfer Protocol). Wikipedia [Online] 2003 [Citado en Marzo de 2009]. Disponible en Internet:http://es.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol

[10] EHLO (Extended HELO) Wikipedia [Online] 2003 [Citado en Marzo de 2009]. Disponible en Internet: http://es.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol

[11] Script. Wikipedia [Online] 2004 [Citado en Marzo de 2009]. Disponible en Internet: http://es.wikipedia.org/wiki/Script

[12] Entorno de Escritorio. Wikipedia [Online] 2003 [Citado en Marzo de 2009]. Disponible en Internet: http://es.wikipedia.org/wiki/Entorno_de_escritorio

[13] YaST. Wikipedia [Online] 2004 [Citado en Marzo de 2009]. Disponible en Internet: http://es.wikipedia.org/wiki/YaST

[14] Web Enabled. The Free Dictionary by Farlex [Online] 2009 [Citado en Marzo de 2009]. Disponible en Internet:

http://encyclopedia2.thefreedictionary.com/Web+enabled

[15] Webmin. [Online] 2006 [Citado en Marzo de 2009]. Disponible en Internet: http://www.webmin.com/

[16] BSD License. Wikipedia [Online] 2004 [Citado en Marzo de 2009]. Disponible en Internet: http://es.wikipedia.org/wiki/BSD_license