You are on page 1of 22

Curso: Introducción a las Aplicaciones y Servicios de Internet bajo Linux.

INTRODUCCIÓN A LOS CORTAFUEGOS (FIREWALLS)
¿Qué es un firewall? La traducción más acertada de este término inglés al Castellano es la palabra cortafuegos. Veamos cual es la definición en el DRAE. <<Cortafuego o cortafuegos. (De cortar y fuego).
m. Agr. Vereda ancha que se deja en los sembrados y montes para que no se propaguen los incendios. || 2. Arq.Pared toda de fábrica, sin madera alguna, y de un grueso competente, que se eleva desde la parte inferior del edificio hasta más arriba del caballete, con el fin de que, si hay fuego en un lado, no se pueda este comunicar al otro.>>

Estas dos definiciones nos dan una idea aproximada del significado de la palabra firewall en términos informáticos, en ellas, aparecen términos como lado, lo que implica la existencia de dos o más partes y comunicar lo que pone de manifiesto que las partes están conectadas. Un firewall en términos de sistemas computacionales es un sistema informático, simple o compuesto que actúa como punto de conexión segura entre otros dos o más ordenadores o redes.

Figura 1 Sistema complejo con diversos Cortafuegos Profundizando un poquito más, un cortafuegos se sitúa entre dos o más redes con la intención de cumplir unas determinadas directivas de seguridad en la comunicación entre ellas. Por ello, un cortafuegos, puede ser desde un simple router, a un PC o una subred de servidores. Como vemos el término cortafuegos, puede concretarse de manera muy distinta según los mecanismos utilizados para su construcción, la familia de protocolos que reconoce (desde el estándar universal TCP/IP, hasta aproximaciones de corte comercial como NETBEUI de Microsoft, o IPX/SPX de Novell Netware), el nivel de la pila sobre el que actúa para un mismo protocolo (ver figura), y la arquitectura de red que posee.

_______________________________________________________________________________ CFIE 2 Valladolid. Febrero-Marzo 2004. Módulo 7. Firewalls con Iptables. Pág 1

Curso: Introducción a las Aplicaciones y Servicios de Internet bajo Linux. CORTAFUEGOS DE FILTRADO DE PAQUETES, IPFW
Este módulo de introducción, no pretende ser un estudio sobre la infinidad de familias y variedades de firewalls, seremos más concret@s, y nos centraremos en el estudio de un modelo de cortafuegos, la familia de los firewalls de filtrado de paquetes sobre la pila de protocolos TCP/IP, los llamados IPFW. Los IPFW funcionan como indican las dos primeras letras de IPFW, sobre paquetes IP, es decir, en el nivel de transporte y red de TCP/IP.

Figura 2 Niveles ISO/OSI vs TCP/IP

Los cortafuegos de filtrado de paquetes IP, suelen implementarse dentro del sistema operativo y funcionan en las capas de transporte y red, trabajando sobre la información de las cabeceras de los paquetes IP, es decir, que no analizarán el área de datos3 , sino que únicamente utilizan la información que puede obtenerse de una cabecera IP. Como ya habíamos dicho, habitualmente, un cortafuego se sitúa entre dos o más redes, lo que implica que tiene al menos dos interfaces de red. A pesar de que un cortafuegos separa dos redes cualquiera entre si, lo habitual, es que separe redes propietarias distintas. Es decir, aunque pueden utilizarse cortafuegos dentro de una misma red, filtrando las comunicaciones entres las distintas subredes internas, lo habitual, es que forme parte de una red propia y sea él quien vigile las comunicaciones con otra red o redes ajenas en las que no se confía, por ejemplo, y sobre, todo Internet. Un cortafuegos de filtrado de paquetes, no puede evitar que un/una usuari@ mande desde su equipo un mensaje de correo con las cuentas de la empresa a la competencia, lo más que podría evitar sería que esa estación acceda al servidor de correo, con lo que no podría enviar correo a nadie. De hecho, un único ordenador con un MODEM y un firewall configurado, ya representa dicha separación, aunque la red interna la forma sólo él y por ello no dispondrá de dos interfaces de red, sino de una.

_______________________________________________________________________________ CFIE 2 Valladolid. Febrero-Marzo 2004. Módulo 7. Firewalls con Iptables. Pág 2

Aceptar TODO por defecto y especificar aquello que no deseemos. éste última se descompone en dos “subtipos”. una herramienta de seguridad y prevención ante ataques externos. muchos sistemas de IPFW no la permiten. es decir. pasa por hacer uso de “comodines” o “máscaras” y conseguir reglas generales. y sólo trabajan con la segunda. Los firewalls. Así que. Rechazar TODO por defecto y especificar aquello que deseemos. Las dos últimas son bastante similares. no sabrá siquiera si la máquina existe o está apagada. _______________________________________________________________________________ CFIE 2 Valladolid. eso es inabordable. Las reglas. por el contrario. si descarta una petición. Febrero-Marzo 2004. Es decir. no podemos definir una regla de aceptación o rechazo para cada característica de cada paquete proveniente de cada una de las IP. son principalmente. La solución. El mecanismo de funcionamiento para realizar este filtrado es a través de una lista de reglas. Las distintas listas de reglas se llaman cadenas (chains). envía una respuesta negativa diciendo que no acepta la comunicación. rechazo y denegación. implica la primera decisión: La regla por defecto. de aceptación y de rechazo. La lista de reglas de entrada (del exterior hacia la red) es totalmente independiente de la lista de reglas de filtrado de salida (de la red hacia el exterior). Podemos establecer dos criterios: 1. un IPFW funciona filtrando las comunicaciones en ambos sentidos entre su interfaz interna (la que lo conecta a su red) y la externa. Esta manera de actuar. podemos comenzar a estudiar las técnicas y políticas de creación de las cadenas.Curso: Introducción a las Aplicaciones y Servicios de Internet bajo Linux. Una vez definido un IPFW. esa será la política que elijamos nosotr@s. la diferencia radica en lo siguiente. Figura 3 Flujo de un paquete en un FW Hemos hablado de aceptación. Firewalls con Iptables. no envía ningún tipo de respuesta. rechazo y denegación. REJECT y DROP. Hoy por hoy. pueden ser de dos tipos. es decir. 2. que el agente externo que intentó establecer contacto. la primera propuesta es inviable. Módulo 7. Pág 3 . En iptables. en términos de aceptación. si se quiere llevar una política de seguridad seria. respectivamente. de hecho. cuando un IPFW rechaza una petición externa. Hemos comentado que las cadenas eran listas de reglas por las que pasaban los paquetes IP. pero ¿debemos definir las reglas para todos los posibles paquetes IP? Obviamente. aunque en realidad. un IPFW se corresponde con los argumentos ACCEPT.

FILTRADO DE DIRECCIÓN DESTINO LOCAL: Por defecto la interfaz de red ignora los paquetes de red que no se dirigen a ella.0. Un ejemplo. FILTRADO DE DIRECCIÓN REMOTA: La dirección remota es lo único que identifica al remitente del paquete. Mediante este filtrado. en realidad.0 hasta 127.255.0 hasta 172.255). dependerá de las necesidades de dichos servicios.0 hasta 192. el puerto destino.255. Módulo 7. _______________________________________________________________________________ CFIE 2 Valladolid. el BIT de estado de TCP. En este tipo de agresiones. siempre ocurre así puesto que responden a peticiones de un cliente local). FILTRADO DE PUERTO DE ORIGEN REMOTO Y DESTINO LOCAL: Se configurarán en función de los servicios de la red.0 hasta 10.31. Firewalls con Iptables. Para poder asegurar nuestra red mediante cortafuegos. FILTRADO DE PAQUETES ENTRANTES EN UN IPFW.16.0. a excepción de las difusiones. un cliente de correo conectándose a un servidor POP3 ajeno a nuestra red). deberemos estudiar previamente las reglas de entrada y de salida para las interfaz(es) interna(s) y externa(s).255) y de clase C (192.255. Pág 4 . puede que deseemos que otros servicios como el de FTP o el servicio seguro SSH estén sólo disponibles para hosts concretos.255. la parte más importante y donde se realiza el mayor esfuerzo en la elaboración de las reglas.0. Si no se va a hacer uso de ellas.0. o Direcciones reservadas de clase E (240. el/la atacante suplanta su dirección IP por otra.255.0.255.0.0. Esto implica que podemos filtrar basándonos en la dirección de origen. se exigirá que el BIT de AWK está activo (normalmente.255. Febrero-Marzo 2004.255. además de la cabecera IP. el puerto origen.255). de clase B (172. etc… Intentaremos esbozar en líneas generales las reglas que interesa que se cumplan para no crear agujeros de seguridad en el IPFW.168.0. también se utiliza información de las cabeceras de los protocolos inmediatamente superiores. Un IPFW basa su filtrado en unas reglas que atienden a distintas condiciones sobre la información que aparece en una cabecera IP. Respecto a los paquetes IP entrantes desde clientes remotos hacia servicios locales que se exportan. FILTRADO DEL ESTADO DE LA CONEXIÓN TCP: Para los paquetes entrantes procedentes de servidores remotos. o Direcciones de loopback (127.0.255).255. o Direcciones IP privadas. de clase A (10. Para dificultar las posibilidades de que esto ocurra. la dirección destino.255).168. tanto los locales que se exporten al exterior (por ejemplo un servidor web) como los externos que utilice (por ejemplo. Sin embargo. o Direcciones IP de multidifusión de clase D (224.0 hasta 247.0.Curso: Introducción a las Aplicaciones y Servicios de Internet bajo Linux. generalmente se desea que un servidor WEB puede ser accesible por todo el mundo. conviene denegarlas.255. disminuimos la posibilidad de ataques de ip spoofing.0 239. es decir TCP y UDP. Sin embargo.255). en la interfaz externa denegaremos siempre: o La dirección IP propia de la interfaz de red externa. Deberemos impedir la entrada de paquetes cuya dirección remota pertenezca a redes o hosts “problemáticos”. es en la cadena de entrada de la interfaz externa.

Independientemente de la configuración del cortafuegos. es decir. de Microsoft y forzaba un reinicio en máquinas con el SO Windows 95). puertos afectados. el sistema que estudiaremos. En realidad la mayoría de ataques y/o escaneos no los realizan hackers o crackers. es muy importante vigilar que los servicios son seguros (por ejemplo. puede explotar bugs que afecten a la red o las máquinas (por ejemplo. debe evitar accesos externos a servicios que se ofrecen al ámbito local o interno. es suscribirse a alguna lista de seguridad. etc… Si quieres obtener más información sobre el tema puedes consultar bibliografía especializada.Curso: Introducción a las Aplicaciones y Servicios de Internet bajo Linux. describir la familia de IPFW y estudiar la configuración en un caso concreto (IPTables). . que utiliza herramientas de otro para intentar acceder o averiguar datos de un sistema. su kernel tiene una variante de la versión 2. que soporta IPTables. y que se utilizan. es decir.4. Con todos esos datos en la mano es más sencillo determinar si se trata de alguien inexpert@. No es posible defenderse totalmente de ellos. es centrarse en el estudio de una herramienta específica de todas cuantas existen. Pág 5 . La versión 9. Para conseguirlo. Firewalls con Iptables. suelen llevarlos a cabo los que en esta terminología se denominan lamers. se puede saturar un servidor SMTP cuando varios de sus usuari@s hacen spam de correo con mensajes tamaño considerable. las diferencias son _______________________________________________________________________________ CFIE 2 Valladolid. Febrero-Marzo 2004. La mejor manera de evitarlos es estar informado sobre los últimos agujeros de seguridad. Si el firewall lo permite.ATAQUE DOS ( enial of service): Este tipo de ataques tal y como su nombre indica. SONDEOS Y EXPLORACIÓN DE PUERTOS: Son relativamente habituales en nuestros días. o bien porque vari@s atacantes se ponen de acuerdo y aúnan sus recursos. Este módulo. gente con pocos o nulos conocimientos. el conocido WinNuke. Por ejemplo. bien sea aprovechando un mayor ancho de banda o capacidad de proceso por parte del/de la atacante. El cortafuegos. intenta d inutilizar uno o varios servicios de los ofrecidos por nuestra red. Ejemplo de estos ataques son la inundación SYN TCP.. aunque la mejor manera de estar al día sobre los últimos exploits o bugs de seguridad que se descubren y sus soluciones.. No conviene ser extremista. ¿Para qué tener en marcha un servicio que no se utiliza y que puede poner en riesgo la seguridad de toda la red? INTRODUCCIÓN A IPTABLES. tiene como principal objetivo el diseño de un cortafuegos.. o si realmente se avecina un ataque serio. inundación ping. será la herramienta de cortafuegos iptables sobre la distribución de Linux RedHat 9. es la última de la distribución Red Hat. manteniendo siempre parcheados lo posibles bugs que surjan). que están correctamente configurados. El objetivo de este módulo. Concretamente. Módulo 7. la mejor opción es auditarlos (registrar cuando y desde donde ocurren en un fichero histórico) para poder estudiar sus características (frecuencia. bombas de redirección ICMP. origen. En lo que a la configuración de IPTables respecta. o intentar saturar un servicio por sobrecarga. no ser excesivamente paranoico ni pasar absolutamente del tema. etc. y/o asegurar el correcto funcionamiento e integridad de servicios que se ofrecen al exterior protegiéndolos debidamente. aprovechaba un fallo del protocolo NETBEUI y los servicios SMB de recursos compartidos.).

¿Por qué se confunden muchas veces NAT y proxy? La respuesta puede deberse a que tanto el uso de proxy como el uso de NAT se emplean actualmente para “compartir una conexión a Internet”. y en general cualquier red con más equipos que IP´s. bien en el nivel de TCP/UDP o incluso en el nivel de aplicación. Por el contrario. es necesario detenernos un momento para conocer lo que es NAT. por lo que es “transparente”. las pequeñas LAN domésticas. los proxies trabajan en un nivel superior de la pila de protocolos. lo que implica que los clientes deben configurarse para hacer uso del servicio. al igual que el filtrado. NOVEDADES DE IPTABLES. a nivel IP. Firewalls con Iptables. prácticamente inexistentes entre los distintas distribuciones. la aplicación más conocida es lo que se conoce como enmascaramiento o masquerading . (NAT) Además de realizar un mejor aprovechamiento de los recursos del sistema. Iptables es como se conoce al módulo Netfilter. NAT. Febrero-Marzo 2004. un CyberCafé. de NAT y de manipulación (MANGLING). Aunque lo trataremos con más profundidad luego.Curso: Introducción a las Aplicaciones y Servicios de Internet bajo Linux. El enmascaramiento. l único necesario es que la elegida o cuente con una versión de Kernel superior a la 2. NAT no es un proxy . Como ejemplos. trabaja en un nivel más bajo.4. aunque actualmente. Las aplicaciones de NAT son muchas y variadas. (principalmente las direcciones) y mantiene un “registro de entrada y salida” de los paquetes modificados. es la integración de las herramientas de filtrado (el cortafuegos propiamente dicho). NAT básicamente altera las cabeceras de los paquetes IP. Módulo 7. el acrónimo de Network Address Translation. la herramienta estándar actual de cortafuegos bajo Linux. se utiliza principalmente para dos cosas: LA CONEXIÓN DE VARIOS EQUIPOS A TRAVÉS DE UNA SOLA DIRECCIÓN IP. para poder alterar los paquetes respuesta de igual forma. Pág 6 . la principal novedad del módulo netfilter-iptables. _______________________________________________________________________________ CFIE 2 Valladolid.

o utilizamos NAT. Firewalls con Iptables. Figura 4 Ejemplo de NAT EL BALANCEO DE CARGA.millonesdevisitas. Figura 5 Ejemplo de un sistema de balanceo de carga HTTP .org/). una de las páginas que ofrece el servidor. ¿Cómo resolverlo? O compramos un servidor más potente. la máquina se sobrecarga y las páginas se sirven con mucha lentitud. Para verlo. Pág 7 . ésta reparte la carga entre varios servidores de páginas web (que forman parte de una LAN Ethernet) que están configurados de forma similar (todos ellos sirven las mismas páginas). _______________________________________________________________________________ CFIE 2 Valladolid. (por ejemplo http://www. es que dada la afluencia tan alta de peticiones a las que se ve sometida. utilizan este sistema de balanceo para que el tiempo de respuesta de las peticiones sea bajo y se pueda mantener el servicio si alguno se avería o se apaga. Imaginemos que tenemos una máquina en la que corre un servidor HTTP. El servidor.Curso: Introducción a las Aplicaciones y Servicios de Internet bajo Linux. Los servidores HTTP que alojan sitios web importantes. o con gran número de visitas. El problema. La carga de los servidores queda entonces repartida y se facilita la redundancia del sitio. tiene un número de visitas diarias muy elevado. está conectado a Internet con un ancho de banda suficientemente bueno y está disponible para todo el mundo. Febrero-Marzo 2004. Módulo 7. lo mejor es un ejemplo.millonesdevisitas. se le asigna a una máquina que actúa como radware (balanceador). La IP que tenía la máquina servidor y que estaba asociada a la URL http://www.org/.

CONFIG_IP_NF_IPTABLES: Opción necesaria para utilizar iptables. CONFIG_IP_NF_MATCH_MAC: Permite el uso de direcciones MAC (Ethernet) en las reglas de filtrado.org/. A continuación. describiré. pero en cualquier distribución actual se instala por defecto y el kernel “precompilado” soporta la configuración. y para su configuración correcta será necesario recompilarlo (make config ) e incluir las distintas opciones. Pág 8 . _______________________________________________________________________________ CFIE 2 Valladolid. CONFIG_IP_NF_TARGET_MASQUERADE: opción necesaria para trabajar con NAT cuando la IP de conexión a Internet es dinámica. CONFIG_IP_NF_TARGET_LOG: Permite registrar en ficheros . Figura 6 Distintas opciones del kernel.15.log el disparo de las reglas. el proceso de instalación. Para utilizar iptables. CONFIG_IP_NF_MATCH_STATE: Es una de las principales novedades respecto a ipchains.Curso: Introducción a las Aplicaciones y Servicios de Internet bajo Linux. Febrero-Marzo 2004. Como hemos visto. Módulo 7. están preparados para soportar la definición de nuevos criterios de evaluación en las condiciones de las reglas o nuevas acciones a efectuar con los paquetes.netfilter. Tanto iptables como el kernel. INSTALACIÓN DE IPTABLES. necesitamos un kernel superior a la versión 2. están descritas brevemente las opciones más importantes: CONFIG_PACKET: Permite a ciertos programas trabajar directamente con la interfaz de red. Parámetros del kernel. En el pasado. Se utiliza para observar situaciones extrañas en la configuración o posibles ataques. CONFIG_IP_NF_NAT: Habilita el uso de la tabla de NAT. o buscarlo en el CD de rpms de RedHat 9. Podemos descargar iptables desde el sitio web de Netfilter http://www. no obstante. CONFIG_IP_NF_MATCH_OWNER: Es un módulo recientemente incorporado a iptables. brevemente. pueden ser implementadas por nosotr@s. o bien podemos descargar alguna extensión pública y utilizarla. Se utiliza para limitar ataques DOS por sobrecarga. Linux utilizaba ipmasqadm. con el podemos filtrar paquetes en función del usuario que es dueño (UID). El filtrado de paquetes y NAT están muy ligados entre sí. o bien habilitar la posibilidad de que puedan cargarse posteriormente como módulos. CONFIG_IP_NF_CONNTRACK: Opción necesaria para usar NAT y enmascaramiento (seguimiento de conexiones). Firewalls con Iptables.3. CONFIG_IP_NF_MATCH_LIMIT: Esta opción permite limitar en el tiempo el número de paquetes que casan con una cierta regla. Estas extensiones. CONFIG_IP_NF_FTP: Opción necesaria para poder hacer seguimiento de conexiones a servidores ftp a través del cortafuegos. pues permite hacer filtrado a partir del estado de una conexión TCP (por ejemplo ESTABLISHED…). CONFIG_NETFILTER: Opción necesaria para utilizar la máquina como cortafuegos y/o router. ambos servicios constituyen el módulo Netfilter y se configuran haciendo uso de la herramienta iptables. CONFIG_IP_NF_FILTER: Habilita el uso de la tabla FILTER.

1. se corresponde con una tabla donde se aplican las reglas. service ipchains stop Finalmente. El método que utilizaremos para guardar las reglas es el siguiente. Veamos que podemos hacer sobre ellas: _______________________________________________________________________________ CFIE 2 Valladolid. En las distribuciones RedHat superiores a la 7. Estas tablas son filter. Las reglas creadas con el comando iptables se almacenan.d/iptables. es decir. por defecto. cada una de ellas. para arrancar el servicio iptables en el arranque del sistema ejecutaremos el comando siguiente: [root@casiopea /root]# chkconfig --level 235 iptables on. Módulo 7. service iptables start Naturalmente. para evitar que las reglas de filtrado sean accesibles por el resto de l@s usuari@s. La próxima vez que se inicie el sistema.d/init. Para incluir las reglas al inicio del sistema. Con la opción iptables –t tabla.d) ejecute el programa /sbin/iptables -save y escriba la configuración actual en el fichero /etc/sysconfig/iptables. podemos desinstalar el paquete de ipchains con el comando: [root@casiopea /root]# rpm -e ipchains ESTRUCTURA Y FUNCIONAMIENTO DE IPTABLES. es que ipchains este habilitado también. Firewalls con Iptables. EL PROCESO DE NSTALACIÓN DE IPTABLES. guardarlas en el fichero /etc/sysconfig/iptables. El único problema que podemos encontrar. el Kernel que se instala por defecto está ya configurado con iptables. Pág 9 . Finalmente. Febrero-Marzo 2004. nat y mangling . podemos hacer varias cosas. es introducir las reglas mediante el comando iptables y cuando el cortafuegos funcione bien. Para deshabilitarlo en el arranque del sistema y no cause conflictos con iptables basta ejecutar: [root@casiopea /root]# chkconfig --level 0123456 ipchains off. no hay ninguna regla activa. el script de inicio de iptables volverá a aplicar las reglas guardadas en /etc/sysconfig/iptables usando el comando /sbin/iptables-restore. sólo en memoria. este script se ejecuta cada vez que se inicia el servicio iptables. que el módulo netfilter. Este fichero será exclusivamente visible por el/la usuari@ root. especificamos la tabla sobre la que queremos trabajar. ejecutamos: [root@casiopea /root]# /sbin/service iptables save Esto hace que el script de inicio de iptables (rc. La primera. integraba tres posibilidades en el manejo de los paquetes. Comentamos al principio del módulo. editar el archivo script /etc/rc. Otra opción. éstas se perderán y tendremos que volver a escribirlas. que si reiniciamos el sistema tras haber configurado varias reglas de iptables.Curso: Introducción a las Aplicaciones y Servicios de Internet bajo Linux.

Esta es la razón por la cual. lo hace a través de alguna interfaz (tarjeta de red. a excepción del NAT. permite manipular otros elementos de los paquetes. puede observarse el esquema general del procesado de paquetes en iptables. no se lleva a cabo ningún tipo de filtrado en esta tabla. MODEM…).Curso: Introducción a las Aplicaciones y Servicios de Internet bajo Linux. La funcionalidad de esta tabla está en expansión y aunque potencialmente puede ser muy valiosa. como el TTL. FORWARD y OUTPUT). así podemos decidir si encaminarlos o no. etc…. el primer paquete es admitido. La primera hace referencia a los paquetes entrantes cuyo destino es el propio cortafuegos. _______________________________________________________________________________ CFIE 2 Valladolid. antes de tomar ninguna decisión de enrutado. Cuando un flujo de paquetes (una conexión TCP) atraviesa la tabla. son automáticamente identificados como parte del flujo de ese primer paquete y de manera automática se llevan a cabo sobre ellos las operaciones NAT o de enmascaramiento. y por último. consta de varias cadenas predefinidas. Módulo 7. no tiene demasiada utilidad (salvo para hackers). la cadena OUTPUT se utiliza para filtrar paquetes generados en el propio host con destinos externos. La segunda se emplea para decidir que hacer con los paquetes que llegan al cortafuegos y tienen como destino otro host. La cadena OUTPUT. que se realiza en la otra tabla. La cadena PREROUTING se utiliza para alterar los paquetes tan pronto llegan al cortafuegos (DNAT o NAT del destino). En la tabla siguiente podemos ver también ejemplos del tráfico de los paquetes en su tránsito por el módulo netfilter del kernel. Cuando un paquete entra en el cortafuegos. el filtrado de paquetes. (INPUT. Firewalls con Iptables. En la siguiente figura. Como las anteriores. PREROUTING y OUTPUT. Febrero-Marzo 2004. Consta de dos cadenas. MANGLE: La tabla de mangling o “manipulación”. se utiliza para alterar los paquetes generados localmente dentro del cortafuegos. Finalmente tenemos la cadena POSTROUTING para alterar los paquetes que abandonan el cortafuegos (SNAT o NAT en el origen). entrando en las distintas cadenas de las tablas sólo si procede. se llevan a cabo las principal tarea de iptables. La tabla de nat tiene tres cadenas sobre las que podemos añadir reglas. el resto. NAT: La tabla nat se utiliza para configurar el protocolo Network Addess Translation. Pág 10 . FILTER: En la tabla filter. El paquete se dirige al Kernel. el TOS.

_______________________________________________________________________________ CFIE 2 Valladolid. es aquí donde se modifica la dirección origen del paquete para que coincida con la IP pública del cortafuegos. tiene como destino el puerto 80 de la IP 157. Módulo 7. Para acceder a servicios externos de Internet desde la RED1 (por ejemplo WWW). Supongamos que disponemos de una conexión compartida a Internet.88. atraviesa la tabla de NAT prerouting sin modificarse. El paquete llega a la interfaz interna del cortafuegos. utilizaremos NAT. pasa por la tabla de mangling sin recibir ninguna modificación.uva.94. RED1 es una red local con IPs privadas. Ssuponiendo que atraviesa todas sus reglas (es decir. y la RED2 es Internet. el paquete atraviesa la tabla NAT y la cadena POSTROUTING.Curso: Introducción a las Aplicaciones y Servicios de Internet bajo Linux. Febrero-Marzo 2004.0.240 (www. que no se impide que l@s usuari@s de la LAN accedan a servidores HTTP externos). Pág 11 . Podemos comentar algunas curiosidades del esquema anterior.es).palencia. por lo que se encamina a través de la tabla filter y de la cadena FORWARD.168.2 (IP de un PC de la LAN). Firewalls con Iptables. ¿Cómo funciona? Un paquete con origen en 192. se llega de nuevo a la decisión de encaminamiento y tras ella. se observa que el destino es externo.

nat. presenta siempre el siguiente patrón: iptables [-t tabla] comando [match] [objetivos/saltos] Las tablas son siempre una de las tres siguientes filter. por defecto. Pág 12 . Cuando esto ocurra. En este apartado. tiene definidas unas cadenas. Si no se indica tabla alguna. el paquete no encaja con ninguna de las reglas. nos referimos a la tabla filter. se ejecutará la acción por defecto asociada a esa cadena. Cada una de ellas se compone de una lista de reglas de filtrado. se tratará según indique la acción de la regla con cuya condición ha encajado. Firewalls con Iptables. iptables –X: Elimina una cadena que esté vacía (a excepción de las tres internas) iptables –F: Vacía una cadena. Primero. van marcados por la tabla NAT que lo gestiona de forma autónoma. El paquete. el flujo de paquetes de esa conexión. La utilización del comando. iptables -[ADC] chain rule-specification [options] iptables -[RI] chain rulenum rule-specification [options] iptables -D chain rulenum [options] iptables -[LFZ] [chain] [options] iptables -[NX] chain iptables -P chain target [options] iptables -E old-chain-name new-chain-name Figura 8 Opciones de iptables a través del comando man. EL COMANDO IPTABLES. El recorrido por la lista de reglas es secuencial. cada una de estas tablas. de bytes. por lo que es muy importante el orden en el cual coloquemos las reglas. o forward. irá pasando secuencialmente por cada una de las reglas de la Cadena hasta encajar en el patrón de alguna de ellas. Ahora. Haremos hincapié en ello más adelante. iptables –Z: Pone a cero las variables de auditoría de una chain (número de paquetes. que es la herramienta para crear las reglas de nuestro cortafuegos. etc…) _______________________________________________________________________________ CFIE 2 Valladolid. a su vez. funciona mediante tres tablas. elimina todas las reglas de una cadena. Es decir. Como ya habíamos visto antes. Si tras recorrer toda la lista. iptables. A partir de este instante. veremos el uso del comando iptables. Cada regla no es más que un par condición/acción sobre atributos del paquete IP. iptables –L: Lista las reglas de una cadena. Módulo 7. Para añadir y manipular cadenas utilizaremos siempre los comandos siguientes: iptables –N: Crear una nueva cadena o cadena vacía (sin reglas). veremos como manipular las cadenas. podemos adentrarnos en las opciones de la herramienta iptables. Febrero-Marzo 2004.Curso: Introducción a las Aplicaciones y Servicios de Internet bajo Linux. iptables –P: Cambia la política por defecto de una cadena.

Por ejemplo. _______________________________________________________________________________ CFIE 2 Valladolid. especificando los límites inferior y superior con los dos puntos “:” como delimitador. De nuevo. Los nombres válidos de protocolos son tcp. --tcp-flags: Especifica mediante una máscara si los bits indicadores de TCP del datagrama concuerdan con ella. --dport: Igual que la opción anterior pero para el puerto destino. -–syn: La regla encaja con los datagramas cuyo bit SYN valga 1 y cuyos bits ACK y FIN valgan ambos 0. ACK. iptables –R: Reemplaza una regla de una cadena. (SYN. RST. iptables –i (--in-interface): Indica la interfaz de entrada sobre la cual se evalúa la condición de la regla. el signo “!” puede utilizarse para negar los valores. iptables –I: Inserta al com ienzo de una cadena una nueva regla. sólo queda mostrar como podemos establecer las condiciones y acciones sobre cada regla. FIN. es decir como establecer las condiciones de match entre paquetes y reglas: iptables –s: Indica un dominio o IP (rango de IPs) de origen sobre el que se evalúa la condición de la regla. Se pueden especificar los puertos en la forma de un rango. Por último. Cada protocolo lleva asociados sus propios modificadores a través de las extensiones correspondientes: EXTENSIONES DE TCP: –-sport: Especifica el puerto que debe utilizar el origen del datagrama para encajar con esta regla. Pág 13 . icmp. Con los comandos siguientes conseguimos manejar las reglas de esas cadenas: iptables –A: Inserta al final de una cadena una nueva regla. iptables –p: Especifica el protocolo del datagrama que concordará con esta regla.ACK SYN. o un número. Módulo 7. iptables –o (--out-interface): Indica la interfaz de salida sobre la cual se evalúa la condición de la regla. PSH. --dport: Igual que la opción anterior pero para el puerto destino. Esta opción es una abreviatura de: --tcp-flags SYN. Firewalls con Iptables. si se conoce el número del protocolo de IP. La máscara es una lista separada por comas de los indicadores que deben examinarse en la comprob ación. iptables –d: Indica un dominio o IP (rango de IPs) de destino el que se evalúa la condición de la regla.RST. ALL o NONE). especifica el puerto que debe utilizar el origen del datagrama para encajar con esta regla. 20:25 describe todos los puertos que van desde el 20 hasta el 25 incluyendo ambos. EXTENSIONES UDP: –-sport: Como en TCP.Curso: Introducción a las Aplicaciones y Servicios de Internet bajo Linux. URG. Febrero-Marzo 2004. iptables –D: Elimina una regla de una cadena (podemos indicar el orden o su condición). udp.

son librerías compartidas que normalmente están en /usr/local/lib/iptables/. El manejo de iptables es sencillo. protocol-unreachable.Curso: Introducción a las Aplicaciones y Servicios de Internet bajo Linux. a medida que las extensiones demuestran su utilidad. podemos crearla nosotr@s mismos J. . supongamos que vamos a configurar un cortafuegos de filtrado de paquetes para la red de la figura siguiente: _______________________________________________________________________________ CFIE 2 Valladolid. Sólo se utiliza en las cadenas INPUT y FORWARD. destination unreachable. pueden aparecer en /lib/iptables/ ó en /usr/lib/iptables/. network-unreachable. EXTENSIONES ICMP: –-icmp-type: Puede especificarse el tipo de mensaje ICMP tanto por su número como por los siguientes identificadores: echo-request. La mejor manera de entenderlo es a través de su aplicación a un caso real. podemos diseñar las propias por la facilidad de extensión de iptables. EXTENSIONES MAC: –-mac-source: Se especifica la dirección MAC (ethernet).iptables –f: Cuando se fracciona un datagrama debido a que se supera el MTU de la red. y si no hay ninguna que nos ofrezca lo que b uscamos. según distribuciones. podemos utilizar esta opción para especificar acciones sobre el segundo y restantes fragmentos del datagrama. Estas extensiones. Febrero-Marzo 2004. Firewalls con Iptables. Pág 14 . UN CASO REAL: UNA HOME-LAN. Existen más posibilidades de filtrado. host-unreachable. Como siempre. Módulo 7. y portunreachable. Sirviéndonos de ellas podemos incluir filtrado sobre multitud de nuevas opciones o realizar acciones muy curiosas con los paquetes filtrados. aunque explicarlo mediante la simple narración puede que parezca más complicado de lo que en realidad es.iptables ¡: Invierte el valor lógico de la condición de la regla. y como ya hemos dicho. aunque. . time-exceeded. Para ello. se añaden a la distribución estándar de iptables. echoreply. source-quench.

Firewalls con Iptables.Curso: Introducción a las Aplicaciones y Servicios de Internet bajo Linux. programas que permiten ejecutar un script cada vez que se produce un cambio de IP. Febrero-Marzo 2004. es decir. ya que se resuelven localmente salvo cuando no están en caché. Tenemos que tener en cuenta que la IP proporcionada por RETECAL es dinámica. La otra alternativa. pero dado que mi ISP ofrece cierta “estabilidad” en la duración de las IP (algunas han durado meses). Supondremos que la red interna es confiable. FTP. Además. DHCPCD o dhclient. Por lo que debemos preocuparnos principalmente de que tengan salida a Internet los principales servicios. esto puede traernos pequeños quebraderos de cabeza en el caso que deseemos (como es nuestro caso) filtrar utilizando nuestra dirección IP pública. deberemos resolver el problema del servicio DNS para la red local. tal vez interese utilizar alguna utilidad como pump. etc. un servidor FTP y un servidor SSH para poder conectarnos remotamente a la máquina. Si el ISP cambia nuestra IP de forma muy frecuente. es ejecutar un servidor DNS en el cortafuegos y configurar las máquinas de la red local para que lo utilicen. por ejemplo un servidor HTTP. La solución más sencilla. no desde dentro. que tal vez exportan algún directorio por SMB dentro de la propia red local. Hay diversas soluciones. Por contra. que de existir alguna amenaza. el tiempo medio de servicio en la resolución de un nombre de maquina descenderá ligeramente. las tres maquinas de la red son simples estaciones de trabajo. casiopea además de actuar de cortafuegos. Naturalmente. los DNS del ISP (en este caso RETECAL). es configurar las máquinas de la red para que utilicen el mismo servidor DNS que la máquina cortafuegos (casiopea ). Pág 15 . ésta vendrá desde Internet. aunque ofrece ventajas respecto a la primera porque reduce el tráfico de peticiones DNS hacia Internet. es obtener la IP mediante la ejecución de: _______________________________________________________________________________ CFIE 2 Valladolid. clientes HTTP. Figura 9 Home-LAN de ejemplo. queremos que corran servicios exportados tanto a la LAN como a Internet. es mas compleja. el servicio DNS que correrá en casiopea. Módulo 7. es decir. por este motivo. será sólo un servicio de caché. En principio. La opción más sencilla. Esta segunda configuración.

Pág 16 .2 Tras ver la sintaxis de iptables y comprender como es su funcionamiento.168. a pesar de que puede que no excesivamente eficientes.Curso: Introducción a las Aplicaciones y Servicios de Internet bajo Linux. El cortafuegos presentado. para permitir accesos al servidor HTTP. Firewalls con Iptables. Por ejemplo. pueden servir de base para “retocarlo” después a mano y evitar teclear demasiado. El script de configuración del cortafuegos para la red local de la figura anterior. A media que nos volvemos “paranoicos” o necesitamos una mayor seguridad. bastaría con: #Servicio FTP iptables -t filter -A INPUT -p TCP -s 0/0 --dport 21 -j allowed #Servicio SSH iptables -t filter -A INPUT -p TCP -s 0/0 --dport 22 -j allowed #Servicio HTTP iptables -t filter -A INPUT -p TCP -s 0/0 --dport 80 -j allowed Si el servidor HTTP se ejecutase en aldebaran en lugar de en casiopea. es relativamente seguro y bastante sencillo aunque contiene casi 300 líneas de código. Si no se desea una seguridad o filtrado extremo. actualmente existen herramientas gráficas que permiten generar scripts generales de configuración. #Servicio HTTP dentro de la LAN. Se exporta al exterior iptables -t nat -A PREROUTING –i $EXT_IF -p tcp --dport 80 -j \ DNAT --to-destination 192.0. configurar el cortafuegos a medida es una cuestión de paciencia. EXT_IP=`ifconfig $EXT_IF | grep in et | cut -d : -f 2 | cut -d \ -f 1` O de algún método equivalente como: EXT_IP="`ifconfig $EXT_IF | grep 'inet addr' | awk '{print $2}' | sed -e 's/. las cosas se van complicando. deberíamos emplear DNAT. _______________________________________________________________________________ CFIE 2 Valladolid. Módulo 7. sólo queda estructurar el script en función de nuestras necesidades. puede verse un poco más tarde. FTP o SSH de casiopea desde cualquier lugar.*://'`" Resueltos estos problemas. Febrero-Marzo 2004.

] Dirección IP LAN : $LAN_IP" echo "¡Hecho!" #--------------------------------------------------------------------------#--------------------------------------------------------------------------- _______________________________________________________________________________ CFIE 2 Valladolid. Módulo 7.0/12" IPPRIVADACLASE_C="192.] Dirección IP externa : $EXT_IP" echo " [.1" #IP de la interfaz de la LAN. LAN_BCAST_ADRESS="192.*://'`" echo "${verde}" echo " [.] Versión del Kernel : $KERNEL" echo " [.Script de configuración de iptables ----" echo "${rojo}" echo "---------------------------------------------" #--------------------------------------------------------------------------#--------------------------------------------------------------------------# Configuración de algunas variables.] Interfaz externa : $EXT_IF" echo " [.0.0.0.] Localización iptables : $IPTABLES" echo " [.0/4" CLASE_E_RESERVADAS ="240. rojo="${esc}[31m" verde="${esc}[32m" azul="${esc}[34m" echo "${rojo}" echo "---------------------------------------------" echo "${azul} echo "---.1 EXT_IF="eth0" # Interfaz de red Externa (Conexión a Internet) INT_IF="eth1" # Interfaz de red Interna (Conexión a la LAN) IPTABLES="/usr/sbin/iptables" #"whereis iptables" si se desconoce el PATH.0.168." KERNEL=`uname -a|cut -f3 -d " "` LAN_IP_RANGE="192.0.Configurando Variables ---. IPPRIVADACLASE_A="10. Firewalls con Iptables.0/5" EXT_IP="`ifconfig $EXT_IF|grep 'inet addr'|awk '{print $2}'|sed -e's/. Febrero-Marzo 2004. ANYIP="0/0" #Cualquier IP.0.168..0.168.16.[0.x #--------------------------------------------------------------------------#--------------------------------------------------------------------------#Colores para la información que ofreceremos por pantalla.0.0. Pág 17 .0/16" CLASE_D_MULTICAST="224.0..0.1" # LocalHost IP 127.0.0.0/24" #IP's permitidas en la LAN 192.0/8" IPPRIVADACLASE_B="172.0. SCRIPT DE IPTABLES PARA UNA HOME-LAN #!/bin/bash # Script de configuración del Firewall $IPTABLES para Kernels 2.0.] Interfaz LAN : $INT_IF" echo " [.168. LO_IF="lo" #Interfaz de loopback LO_IP="127.0.4.255] LAN_IP="192.Curso: Introducción a las Aplicaciones y Servicios de Internet bajo Linux. echo "${azul}" echo -n " ---.255" # Dirección bradcast.168.

Curso: Introducción a las Aplicaciones y Servicios de Internet bajo Linux. con ello evitamos # ataques DOS de bomba ICMP echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses # IMPORTANTE: SÓLO PARA USUARIOS CON IP DINÁMICA. o DHCP. echo "1" > /proc/sys/net/ipv4/ip_forward # Habilitamos el la opción de verificación de dirección for f in /proc/sys/net/ipv4/conf/*/rp_filter. for f in /proc/sys/net/ipv4/conf/*/accept_source_route.Cargando módulos requeridos de NetFiler ----" /sbin/depmod -a /sbin/modprobe ip_tables /sbin/modprobe ip_conntrack /sbin/modprobe iptable_filter /sbin/modprobe iptable_mangle /sbin/modprobe iptable_nat /sbin/modprobe ipt_LOG /sbin/modprobe ipt_limit /sbin/modprobe ipt_state /sbin/modprobe ipt_MASQUERADE #/sbin/modprobe ipt_owner #/sbin/modprobe ipt_REJECT #/sbin/modprobe ip_conntrack_ftp #/sbin/modprobe ip_conntrack_irc echo "${verde}" #echo "lsmod" echo "¡Hecho!" #--------------------------------------------------------------------------#--------------------------------------------------------------------------echo "{azul} echo -n "---. nos protejemos ante el # ataque DOS de bomba SYNC echo "1" > /proc/sys/net/ipv4/tcp_syncookies # Activamos la opción de protección de mansajes ICMP. do echo "1" > $f done # Activamos la opción de sync cookies. Con ello.Estableciendo parametros del Kernel en /proc/sys/net/ipv4 ----" # Activamos la opción de FORWARDING. # debes ejecutar la línea siguientes. Firewalls con Iptables. Pág 18 . # Cargamos los módulos de iptables que necesitamos echo "${azul}" echo -n " ---. La opción es CRÍTICA si el firewall # tiene más de una interfaz de red y queremos que encamine tráfico entre ellas. Módulo 7. Febrero-Marzo 2004. PPP. echo "1" > /proc/sys/net/ipv4/ip_dynaddr # DESHABILITAMOS la aceptación de paquetes cuyas ruta haya sido # prefijada en el origen (source routed packets). (La mayoría) # Si tu ISP proporciona IP's dinámicas en tu conexión SLIP. do echo "0" > $f done # DESHABILITAMOS la aceptación de paquetes ICMP del tipo _______________________________________________________________________________ CFIE 2 Valladolid.

TCP y UDP $IPTABLES -t filter -N allowed $IPTABLES -t filter -N icmp_packets $IPTABLES -t filter -N tcp_packets _______________________________________________________________________________ CFIE 2 Valladolid. " echo "¡Hecho!" #--------------------------------------------------------------------------#-----------------------------....] Parámetros del Kernel establecidos.. Pág 19 . Inicializando NetFilter .] Tablas y cadenas vaciadas. " # Eliminamos las reglas de TODAS las cadenas de cada tabla $IPTABLES -t filter --flush $IPTABLES -t nat --flush $IPTABLES -t mangle --flush # Con las TODAS las cadenas vacías.. $IPTABLES -t filter --policy INPUT DROP $IPTABLES -t filter --policy OUTPUT DROP $IPTABLES -t filter --policy FORWARD DROP echo "${verde}" echo -n " [. Febrero-Marzo 2004. do echo "0" > $f done echo "${verde}" echo -n " [.. do echo "0" > $f done # DESHABILITAMOS la posibilidad de enviar paquetes ICMP del tipo # Redirect Acceptance.. Comienza la inserción de reglas de cortafuefos .. Firewalls con Iptables.Construcción de las reglas de filtrado ----------------echo "${azul}" echo -n ". for f in /proc/sys/net/ipv4/conf/*/send_redirects.Curso: Introducción a las Aplicaciones y Servicios de Internet bajo Linux. Establecidas políticas por defecto" echo "¡Hecho!" #--------------------------------------------------------------------------#-----------------. dejamos sólo las cadenas por defecto $IPTABLES -t filter --delete-chain $IPTABLES -t nat --delete-chain $IPTABLES -t mangle --delete-chain # Fijamos las políticas por defecto para el filtrado. " # Comenzamos la inserción de reglas en la tabla filter.. Módulo 7. # Creamos cadenas para los paquetes no validos $IPTABLES -N bad_tcp_packets $IPTABLES -N bad_tcp_input_packets # Creamos cadenas separados para los protocolos ICMP. do echo "0" > $f done #DESHABILITAMOS la posibilidad de enviar mensajes de redirección for f in /proc/sys/net/ipv4/conf/*/send_redirects.INICIALIZACIÓN ----------------------------# Inicializamos el módulo Netfilter echo "${azul}" echo -n ". # Redirect Acceptance for f in /proc/sys/net/ipv4/conf/*/accept_redirects..

RST SYN.RST -j DROP $IPTABLES -t filter -A bad_tcp_input_packets -p tcp --tcp-flags \ ACK.Cadena tcp_packets #Servicio FTP $IPTABLES -t filter -A tcp_packets -p tcp -s $ANYIP --dport 21 -j allowed #Servicio SSH $IPTABLES -t filter -A tcp_packets -p tcp -s $ANYIP --dport 22 -j allowed #Servicio HTTP $IPTABLES -t filter -A tcp_packets -p tcp -s $ANYIP --dport 80 -j allowed #Servicio IDENTD $IPTABLES -t filter -A tcp_packets -p tcp -s $ANYIP --dport 113 -j allowed # --. _______________________________________________________________________________ CFIE 2 Valladolid.Cadenas bad_tcp_packets y bad_tcp_input_packets # Los paquetes TCP entrantes no presentarán situaciones extrañas # en sus BITS (evitaremos ataques DOS) $IPTABLES -t filter -A bad_tcp_input_packets -p tcp --tcp-flags \ ALL NONE -j DROP $IPTABLES -t filter -A bad_tcp_input_packets -p tcp --tcp-flags \ SYN.PSH PSH -j DROP $IPTABLES -t filter -A bad_tcp_input_packets -p tcp --tcp-flags \ ACK.FIN SYN.Cadena udpincoming_packets #Servicio DNS caché para la red local. $IPTABLES -t filter -N udpincoming_packets # --. Febrero-Marzo 2004.FIN -j DROP $IPTABLES -t filter -A bad_tcp_input_packets -p tcp --tcp-flags \ SYN. deberá ser bueno.Cadena allowed $IPTABLES -t filter -A allowed -p tcp --syn -j ACCEPT $IPTABLES -t filter -A allowed -p tcp -m state --state ESTABLISHED.Curso: Introducción a las Aplicaciones y Servicios de Internet bajo Linux.FIN FIN -j DROP $IPTABLES -t filter -A bad_tcp_input_packets -p tcp --tcp-flags \ ACK. $IPTABLES -t filter -A udpincoming_packets -p udp -s $LAN_IP_RANGE \ --source-port 53 -j ACCEPT # --.RST FIN. Firewalls con Iptables. # Todo paquete entrante.Cadena icmp_packets #Permitimos la salida y entrada de PINGs $IPTABLES -t filter -A icmp_packets -p icmp -s $ANYIP --icmp-type 8 \ -j ACCEPT $IPTABLES -t filter -A icmp_packets -p icmp -s $ANYIP --icmp-type 11 \ -j ACCEPT # --.URG URG -j DROP $IPTABLES -t filter -A bad_tcp_packets -p tcp ! --syn -m state --state \ NEW -j LOG --log-prefix "filter bad_tcp_packets Posible ataque SYN:" $IPTABLES -t filter -A bad_tcp_packets -p tcp ! --syn -m state --state \ NEW -j DROP # --.RST -j DROP $IPTABLES -t filter -A bad_tcp_input_packets -p tcp --tcp-flags \ FIN.Cadena INPUT. Módulo 7. \ RELATED -j ACCEPT $IPTABLES -t filter -A allowed -p tcp -j DROP # --. Pág 20 .

Firewalls con Iptables. # Solo permitimos paquetes válidos $IPTABLES -t filter -A OUTPUT -p tcp -j bad_tcp_packets # Permitimos paquetes salientes con origen en el host $IPTABLES -t filter -A OUTPUT -p ALL -s $LO_IP -j ACCEPT $IPTABLES -t filter -A OUTPUT -p ALL -s $INT_IP -j ACCEPT $IPTABLES -t filter -A OUTPUT -p ALL -s $EXT_IP -j ACCEPT #Registramos un máximo de 3 paquetes por minuto que no caden con las #reglas anteriores $IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j \ _______________________________________________________________________________ CFIE 2 Valladolid.Cadena OUTPUT. Febrero-Marzo 2004. Módulo 7.Curso: Introducción a las Aplicaciones y Servicios de Internet bajo Linux. $IPTABLES -t filter -A INPUT -p ALL -i $LO_IF -s $LO_IP -j ACCEPT $IPTABLES -t filter -A INPUT -p ALL -i $LO_IF -s $INT_IP -j ACCEPT $IPTABLES -t filter -A INPUT -p ALL -i $LO_IF -s $EXT_IP -j ACCEPT #Peticiones de la red local $IPTABLES -t filter -A INPUT -p ALL -i $INT_IF -s $LAN_IP_RANGE -j ACCEPT $IPTABLES -t filter -A INPUT -p ALL -d $EXT_IP -m state --state ESTABLISHED. # Solo encaminamos paquetes válidos $IPTABLES -t filter -A FORWARD -p tcp -j bad_tcp_packets # Aceptamos ecaminar los paquetes porcedentes de la LAN $IPTABLES -t filter -A FORWARD -i $INT_IF -j ACCEPT $IPTABLES -t filter -A FORWARD -m state --state ESTABLISHED.RELATED -j ACCEPT #Registramos un máximo de 3 paquetes por minuto que no casen con las #reglas anteriores $IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j \ LOG --log-level DEBUG --log-prefix "filter FORWARD paquete perdido: " # --.Cadena FORWARD. \ RELATED -j ACCEPT #Registramos un máximo de 3 paquetes por minuto que no casen con las #reglas anteriores $IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j \ LOG --log-level DEBUG --log-prefix "filter INPUT paquete perdido: " # --. Pág 21 . $IPTABLES -t filter -A INPUT -p tcp -j bad_tcp_packets # Rechazamos paquetes entrantes por la interfaz de red Externa con IPs de # origen extrañas (anti spoofing) $IPTABLES -t filter -A INPUT -i $EXT_IF -s $EXT_IP -j DROP $IPTABLES -t filter -A INPUT -i $EXT_IF -s $IPPRIVADACLASE_A -j DROP $IPTABLES -t filter -A INPUT -i $EXT_IF -s $IPPRIVADACLASE_B -j DROP $IPTABLES -t filter -A INPUT -i $EXT_IF -s $IPPRIVADACLASE_C -j DROP $IPTABLES -t filter -A INPUT -i $EXT_IF -s $CLASE_D_MULTICAST -j DROP $IPTABLES -t filter -A INPUT -i $EXT_IF -s $CLASE_E_RESERVADAS -j DROP # Los paquetes que provienen de Internet deben ser alguno de los definidos $IPTABLES -t filter -A INPUT -p icmp -i $EXT_IF -j icmp_packets $IPTABLES -t filter -A INPUT -p tcp -i $EXT_IF -j tcp_packets $IPTABLES -t filter -A INPUT -p udp -i $EXT_IF -j udpincoming_packets # Reglas especiales #Mensajes a la dirección de broadcast desde la LAN hacia la LAN $IPTABLES -t filter -A INPUT -p ALL -i $INT_IF -d $LAN_BCAST_ADRESS -j ACCEPT #Permitimos conexión de Loopback.

] Política de enmascaramiento establecida" echo "¡Hecho!" _______________________________________________________________________________ CFIE 2 Valladolid.Construcción de las reglas de NAT --------------------# Habilitamos NAT..Curso: Introducción a las Aplicaciones y Servicios de Internet bajo Linux.. LOG --log-level DEBUG --log-prefix "filter OUTPUT paquete perdido: " echo "${verde}" echo -n " [. Firewalls con Iptables.. Febrero-Marzo 2004.. " #REM: Utilizamos MASQUERADE porque la IP es dinámica $IPTABLES -t nat -A POSTROUTING -s $LAN_IP_RANGE -o $EXT_IF -j MASQUERADE echo "${verde}" echo -n " [..] Política de filtrado establecida" echo "¡Hecho!" #--------------------------------------------------------------------------#------------------. Pág 22 . TODO el tráfico interno es enmascarado cuando sale al # exterior echo "${azul}" echo -n ". Configuración de NAT .. Módulo 7.