Vous êtes sur la page 1sur 21

Captulo 13.

Firewalls e iptables Linux contiene utilidades avanzadas para filtrado de paquetes, el proceso de controlar los paquetes de red cuando entran, se mueven o salen de su sistema dentro del kernel. Los kernels anteriores al 2.4 trabajaban con ipchains para efectuar el filtrado de paquetes y usaban listas de reglas que se aplicaban a los paquetes en cada paso del proceso de filtrado. La presentacin del kernel 2.4 trajo consigo iptables (tambin llamado netfilter), que es parecido a ipchains pero con mejoras en el funcionamiento y en el control disponible a la hora de filtrar paquetes. Este captulo se centra en las bases del filtrado esencial de paquetes, define las diferencias entre ipchains e iptables, explica las diferentes opciones disponibles con comandos iptables, y muestra cmo las reglas de filtrado se pueden conservar tras el reinicio del sistema. Si necesita instrucciones para construir reglas de iptables o para configurar un firewall basado en estas reglas, consulte la seccin de nombre Recursos adicionales para ms informacin. Advertencia El mecanismo predeterminado del firewall en la versin 2.4 del kernel puede usar el comando iptables, pero no se puede usar si ya se est ejecutando ipchains. Si ipchains est presente durante el arranque, el kernel avisar que hay un error y no podr arrancar iptables. Estos errores no afectan la funcionalidad del comando ipchains. Filtrado de paquetes El trfico se mueve a travs de una red en paquetes. Un paquete de red es una coleccin de datos en diferentes tamaos y formatos. Para enviar un fichero por red, el ordenador emisor debe en primer lugar partirlo en diferentes paquetes usando las reglas del protocolo de red. Cada uno de estos paquetes contiene una parte pequea de los datos del fichero. Cuando recibe la transmisin, el ordenador receptor reensambla los paquetes y construye de nuevo el fichero el fichero. Cada paquete contiene informacin que le ayuda a navegar por la red y moverse hacia su destino. El paquete puede decirle a los ordenadores a lo largo del camino, as como al ordenador destino, de dnde viene, a dnde va, qu tipo de paquete es, y otras muchas cosas ms. La mayora de los paquetes se disean para transportar datos, pero algunos protocolos pueden usar los paquetes de forma especial. El protocolo Transmission Control Protocol (TCP), por ejemplo, utiliza un paquete SYN, que no contiene datos, para iniciar la comunicacin entre dos sistemas. El kernel de Linux contiene la caracterstica interna de filtrado de paquetes, que le permite aceptar algunos de ellos en el sistema mientras que intercepta y para a otros. El filtro de red kernel 2.4 tiene tres tablas internas o listas de reglas. Son las siguientes: filtro sta es la tabla por defecto para manejar paquetes de red. nat sta tabla se usa para alterar paquetes que crean una nueva conexin. mangle Esta tabla se usa tipos especficos de alteracin de paquetes.

Cada una de estas tablas tiene un grupo de cadenas internas que corresponden a las acciones llevadas a cabo por el filtro de red en el paquete. Las cadenas internas para la tabla filtro son las siguientes: INPUT Esta cadena sirve solo para paquetes recibidos por medio de una interfaz de red. OUTPUT Esta cadena sirve para paquetes enviados por medio de la misma interfaz de red que recibi los paquetes. FORWARD Esta cadena sirve para paquetes recibidos en una interfaz de red y enviados en otra.

Las cadenas internas para la tabla nat son las siguientes: PREROUTING Esta cadena altera paquetes recibidos por medio de una interfaz de red cuando llegan. OUTPUT Esta cadena altera paquetes generados localmente antes de que sean dirigidos por medio de una interfaz de red.

POSTROUTING Esta cadena altera paquetes antes de que sean enviados por medio de una interfaz de red.

Las cadenas internas para la tabla mangle son las siguientes: PREROUTING Esta cadena altera paquetes recibidos por medio de una interfaz de red antes de que sean dirigidos. OUTPUT Esta cadena altera paquetes generados localmente antes de que sean dirigidos por medio de una interfaz de red.

Cada paquete de red recibido o enviado de un sistema Linux est sujeto a al menos una tabla. Un paquete puede que sea verificado contra muchas, muchas reglas dentro de la lista de reglas antes de llegar al final de una cadena. La estructura y propsito de estas reglas puede variar, pero normalmente buscan identificar un paquete que viene de o se dirige a una direcccin IP en particular o un conjunto de direcciones al usar un determinado protocolo y servicio de red. Independientemente de su destino, cuando un paquete cumple una regla en particular en una de las tablas, se asignan a un objetivo (target) particular, o una accin a aplicrseles. Si la regla especifica un objetivo ACCEPT para un paquete que la cumpla, el paquete se salta el resto de las verificaciones de la regla y se permite que contine hacia su destino. Si una regla especifica un objetivo DROP, el paquete "se deja caer", significando esto que no se permite que el paquete acceda al sistema y no se enva ninguna respuesta de vuelta al servidor que envi el paquete. Si una regla especifica un objetivo REJECT, el paquete se deja caer, pero se enva un mensaje de error al emisor. Cada cadena tiene una poltica ACCEPT, DROP, o REJECT sobre el paquete, o si no, puede enviarlo al espacio de usuario con QUEUE. Si ninguna de las reglas de la cadena se aplican al paquete, entonces el paquete se trata de acuerdo a la poltica por defecto de las cadenas. El comando iptables le permite configurar estas listas de reglas, as como configurar nuevas cadenas y tablas para ser usadas en si situacin particular. Diferencias entre iptables e ipchains En un primer momento, ipchains e iptables parecen ser bastante similares. Ambos mtodos de filtrado de paquetes usan cadenas o reglas que operan con el kernel de Linux para decidir no solo qu paquetes se permite entrar o salir, sino tambin qu hacer con los paquetes que cumplen determinadas reglas. Sin embargo, iptables ofrece un mtodo mucho ms extensible de filtrado de paquetes, proporcionando al administrador un nivel de control mucho ms refinado sin tener que aumentar la complejidad del sistema entero. Ms concretamente, los usuarios que se encuentren cmodos con ipchains deberan tener cuidado con las siguientes diferencias significativas entre ipchains e iptables antes de utilizar iptables: Bajo iptables, cada paquete filtrado se procesa nicamente usando las reglas de una cadena, en lugar de hacerse con mltiples. Por ejemplo, un paquete FORWARD que llega al sistema usando ipchains tendr que pasar por las cadenas INPUT, FORWARD, y OUTPUT para llegar a su destino. Sin embargo iptables, solo enva paquetes a la cadena INPUT si su destino es el sistema local y tan solo los enva a la cadena OUTPUT si el sistema local es quien genera los paquetes. Por esta razn, deber estar seguro de situar la regla destinada a interceptar un paquete en particular en la cadena adecuada que ser la que vea el paquete. La principal ventaja es que tendr un control ms refinado sobre la disposicin de cada paquete. Si est intentando bloquear el acceso a un sitio web en particular, ahora es posible bloquear los intentos de acceso desde clientes que estn en mquinas que utilicen nuestro servidor como pasarela (gateway). Una regla OUTPUT que deniegue el acceso no prevendr ms el acceso a las mquinas que utilicen nuestro servidor como pasarela. El objetivo DENY ha sido cambiado por DROP. En ipchains, los paquetes que cumplan una regla en una cadena podan ser redirigidos a un objetivo DENY, que dejaba caer el paquete en silencio. Este objetivo deber cambiarse a DROP con iptables para obtener el mismo resultado. El orden es importante al poner opciones en una regla de una cadena. Anteriormente, con ipchains, no era muy importante cmo se ordenasen las opciones de las reglas a la hora de escribirla. El comando iptables es un poco ms reticente sobre el lugar que ocupan las diferentes opciones. Por ejemplo, ahora deberemos especificar el puerto origen y destino despus del protocolo (ICMP, TCP, or UDP) que vayamos a utilizar en una regla de una cadena.

Cuando especificamos las interfaces de red que vamos a usar en una regla, deberemos utilizar solo interfaces de entrada (opcin -i) con cadenas INPUT o FORWARD y las de salida (opcin -o) con cadenas FORWARD o OUTPUT. Esto es necesario debido al hecho de que las cadenas OUTPUT no se utilizan ms con las interfaces de entrada, y las cadenas INPUT no son vistas por los paquetes que se mueven hacia las interfaces de salida. Esto no es una lista muy extensa de cambios, dado que iptables es fundamentalmente un filtro de red completamente reescrito. Para obtener ms informacin, consulte el documento Linux 2.4 Packet Filtering HOWTO y los cdigos fuente que podr encontrar en la la seccin de nombre Recursos adicionales. Opciones usadas en comandos iptables Las reglas que permiten a los paquetes ser filtrados por el kernel se ponen en ejecucin ejecutando el comando iptables. Cuando use el comando iptables, debe especificar las opciones siguientes: Packet Type ste dicta qu tipo de paquetes filtra el comando. Packet Source or Destination ste dicta qu paquetes filtra el comando basndose en el origen o destino del paquete. Target ste dicta qu accin se lleva a cabo en paquetes que cumplen los criterios mencionados anteriormente. Las opciones usadas con la regla dada iptables deben Estar agrupadas lgicamente, basndose en el propsito y en las condiciones de la regla general, para que la regla sea vlida. Tablas Un aspecto muy potente de iptables es que se pueden utilizar mltiples tablas para decidir el destino de un paquete en particular, dependiendo del tipo de paquete que se est monitorizando y de qu es lo que se va a hacer con el paquete. Gracias a la naturaleza extensible de iptables se pueden crear tablas especializadas que se almacenarn en el directorio /etc/modules/<kernel-version>/kernel/net/ipv4/netfilter para objetivos especficos. Piense que iptables es capaz de ejecutar mltiples conjuntos de reglas ipchains en las cadenas definidas, en las que cada conjunto cumple un rol especfico. La tabla por defecto, llamada filter, contiene las cadenas estndard por defecto para INPUT, OUTPUT, y FORWARD. Esto es parecido a las cadenas estndar que se utilizan con ipchains. Adems, por defecto, iptables tambin incluye dos tablas adicionales que realizan tareas de filtrado especfico de paquetes. La tabla nat se puede utilizar para modificar las direcciones de origen y destino grabadas en un paquetes, y la tabla mangle permite alterar los paquetes de forma especializada. Cada tabla contiene cadenas por defecto que realizan las tareas necesarias basndose en el objetivo de la tabla, pero se pueden configurar fcilmente nuevas cadenas en el resto de las tablas. Estructura Muchos comandos iptables tienen la siguiente estructura: iptables [-t <table-name>] <command> <chain-name> <parameter-1> \ <option-1> <parameter-n> <option-n> En este ejemplo, la opcin <table-name> permite al usuario seleccionar una tabla diferente de la tabla filter por defecto que se usa con el comando. La opcin <command> es el centro del comando, dictando cul es la accin especfica a realizar, como pueda ser aadir o borrar una regla de una cadena particular, que es lo que se especifica en la opcin <chain-name> . Tras <chain-name> se encuentras los pares de parmetros y opciones que realmente definen la forma en la que la regla funcionar y qu pasar cuando un paquete cumpla una regla. Cuando miramos a la estructura de un comando iptables, es importante recordar que, al contrario que la mayora de los comandos, la longitud y complejidad de un comando iptables puede cambiar en funcin de su propsito. Un comando simple para borrar una regla de una cadena puede ser muy corto, mientras que un comando diseado para filtrar paquetes de una subred particular usando un conjunto de parmetros especficos y opciones puede ser mucho ms largo. Al crear comandos iptables puede ser de ayuda reconocer que algunos parmetros y opciones pueden crear la necesidad de utilizar otros parmetros y opciones para especificar algo de los requisitos de la

opcin anterior. Para construir una regla vlida, esto deber continuar hasta que todos los parmetros y opciones que requieran otro conjunto de opciones hayan sido satisfechos. Teclee iptables -h para ver una lista detallada de la estructura de los comandos iptables. Comandos Los comandos le dicen a iptables que realice una tarea especfica. Solamente un comando se permite por cada cadena de comandos iptables. Excepto el comando de ayuda, todos los comandos se escriben en maysculas. Los comandos de iptables son los siguientes: -A Aade la regla iptables al final de la cadena especificada. Este es el comando utilizado para simplemente aadir una regla cuando el orden de las reglas en la cadena no importa. -C Verifica una regla en particular antes de aadirla en la cadena especificada por el usuario. Este comando puede ser de ayuda para construir reglas iptables complejas pidindole que introduzca parmetros y opciones adicionales. -D Borra una regla de una cadena en particular por nmero (como el 5 para la quinta regla de una cadena). Puede tambin teclear la regla entera e iptables borrar la regla en la cadena que corresponda. -E Renombra una cadena definida por el usuario. Esto no afecta a la estructura de la tabla. Tan solo le evita el problema de borrar la cadena, crendola bajo un nuevo nombre, y reconfigurando todas las reglas de dicha cadena. -F Libera la cadena seleccionada, que borra cada regla de la cadena. Si no se especifica ninguna cadena, este comando libera cada regla de cada cadena, -h Proporciona una lista de estructuras de comandos tiles, as como una resumen rpido de parmetros de comandos y opciones. -I Inserta una regla en una cadena en un punto determinado. Asigne un nmero a la regla a insertar e iptables lo pondr all. Si no especifica ningn nmero, iptables posicionar su comando al principio de la lista de reglas. Atencin Tenga cuidado con qu opcin (-A o -I) est usando al aadir una regla. El orden de las reglas puede ser muy importante cuando est determinando si se aplica una regla u otra a un paquete en particular. Asegrese al aadir una regla al principio o al final de la cadena de que no afecta a otras reglas de la misma cadena. -L Lista todas las reglas de la cadena especificada tras el comando. Para ver una lista de todas las cadenas en la tabla filter por defecto. La sintaxis siguiente deber utilizarse para ver todas la lsita de todas las reglas de una cadena especfica en una tabla en particular: iptables -L <chain-name> -t <table-name> Opciones ms potentes para el comando -L, que proporcionan nmeros a las reglas y permiten ms descripciones en las reglas, as como otros, se pueden ver en la la seccin de nombre Opciones de listado. -N Crea una nueva cadena con un nombre especificado por el usuario. -P Configura la poltica por defecto para una cadena en particular de tal forma que cuando los paquetes atravieses la cadena completa sin cumplir ninguna regla, sern enviados a un objetivo en particular, como puedan ser ACCEPT o DROP.

-R Reemplaza una regla en una cadena en particular. Deber utilizar un nmero de regla detrs del nombre de la cadena para reemplazar esta cadena. La primera regla de una cadena se refiere a la regla nmero 1. -X Borra una cadena especificada por el usuario. No se permite borrar ninguna de las cadenas predefinidas para cualquier tabla. -Z Pone ceros en los contadores de byte y de paquete en todas las cadenas de una tabla en particular. Parmetros Una vez que se hayan especificado algunos comandos de iptables , incluyendo aquellos para crear, aadir, borrar, insertar, o reemplazar reglas de una cadena en particular, se necesitan parmetros para comenzar la construccin de la regla de filtrado de paquetes. -c Resetea los contadores de una regla en particular. Este parmetro acepta las opciones PKTS y BYTES para especificar qu contador hay que resetear. -d Configura el nombre de la mquina destino, direccin IP o red de un paquete que cumplir la regla. Cuando se especifique una red, puede utilizar dos mtodos diferentes para describir la mscara de red, como 192.168.0.0/255.255.255.0 o 192.168.0.0/24. -f Aplica esta regla solo a los paquetes fragmentados. Usando la opcin ! despus de este parmetros, nicamente los paquetes no fragmentados se tendrn en cuenta. -i Configura las interfaces de entrada de red, como eth0 o ppp0, para ser usadas por una regla en partculas. Con iptables, este parmetro opcional solo debera de ser usado por las cadenas INPUT y FORWARD cuando se utilice junto con la tabla filter y la cadena PREROUTING con las tablas nat y mangle. Este parmetro proporciona varias opciones tiles que pueden ser usadas antes de especificar el nombre de una interfaz: o ! Dice a este parmetro que no concuerde, queriendo decir esto que las interfaces especificadas se excluirn de esta regla. o + Caracter comodn usado para hacer coincidir todas las interfaces que concuerden con una cadena en particular. Por ejemplo, el parmetro -i eth+ aplicar esta regla a todas las interfaces Ethernet de su sistema excluyendo cualquier otro tipo de interfaces, como pueda ser la ppp0. Si el parmetro -i se utiliza sin especificar ninguna interfaz, todas las interfaces estarn afectadas por la regla. -j Dice a iptables que salte a un objetivo en particular cuando un paquete cumple una regla en particular. Los objetivos vlidos que se usarn tras la opcin -j incluyen opciones estndard, ACCEPT, DROP, QUEUE, y RETURN, as como opciones extendidas que estn disponibles a travs de mdulos que se cargan por defectos con el paquete RPM de iptables de Red Hat Linux, como LOG, MARK, y REJECT, as como otras. Mire la pgina del manual de iptables para obtener ms informacin sobre este y otros muchos objetivos, incluyendo reglas de ejemplo que los utilizan, as como objetivos que pueden ser usados slamente en una tabla en particular. En lugar de especificar la accin objetivo, puede tambin dirigir un paquete que cumpla la regla hacia una cadena definida por el usuario fuera de la cadena actual. Esto le permitir aplicar otras reglas contra este paquete, y filtrarlo mejor con respecto a otros criterios.

Si no especifica ningn objetivo, el paquete se mueve hacia atrs en la regla sin llevar a cabo ninguna accin. A pesar de todo, el contador para esta regla se sigue incrementando en uno, a partir del momento en el que el paquete se adecua a la regla especificada. -o Configura la interfaz de red de salida para una regla en particular, y solo puede ser usada con las cadenas OUTPUT y FORWARD en la tabla filter y la cadena POSTROUTING en las tablas nat y mangle. Estas opciones de los parmetros son los mismos que para los de la interfaz de red de entrada (opcin -i). -p Configura el protocolo IP para la regla, que puede ser icmp, tcp, udp, o all(todos), para usar cualquier protocolo. Adems, se pueden usar otros protocolos menos usados de los que aparecen en /etc/protocols. Si esta opcin se omite al crear una regla, la opcin all es la que se selecciona por defecto. -s Configura el origen de un paquete en particularm usando la misma sintaxis que en el parmetro de destino (opcin -d). Opciones de identificacin de paquetes Los diferentes protocolos de red proporcionan opciones especializadas de conconrdancia que pueden ser configurados de forma especfica para identificar un paquete en particular usando dicho protocolo. Por supuesto el protocolo deber ser especificado en un primer momento en el comando iptables, como con la opcin -p tcp <nobre-protocolo>, para hacer que las opciones de dicho protocolo estn disponibles. Protocolo TCP Estas opciones de identificacin estn disponibles en el protocolo TCP (opcin -p tcp): --dport Configura el puerto de destino para el paquete. Puede utilizar o bien un nombre de servicio de red (como www o smtp), un nmero de puerto, o bien un rango de nmeros de puertos para configurar esta opcin. Para ver los nombres o alias de los servicios de red y los nmeros de puertos que usan mire el fichero /etc/services. Puede usar la opcin --destination-port para especificar esta opcin de identificacin de paquete. Para especificar un rango de nmeros de puertos separe los dos nmeros de puertos con dos puntos (:), como en -p tcp --dport 3000:3200. El rango vlido ms grande es 0:65535. Tambin puede usar el carcter de punto de exclamacin (!) como flag tras la opcin --dport para decirle a iptables que seleccione los paquetes que no usen ese servicio o puerto. --sport Configura el puerto de origen del paquete, usando las mismas opciones que --dport. Tambin puede usar --source-port para especificar esta opcin. --syn Provoca que todos los paquetes designados de TCP, comunmente llamados paquetes SYN, cumplan esta regla. Cualquier paquete que est llevando un payload de datos no ser tocado. Si se sita un punto de exclamacin (!) como flag tras la opcin --syn se provoca que todos los paquetes no-SYN sean seleccionados. --tcp-flags Permite que los paquetes TCP con conjuntos de bits especficos, o flags, sean seleccionados para una regla. La opcin de seleccin --tcp-flags acepta dos parmetros, que son los flags para los diferentes bits ordenados en una lista separada por comas. El primer parmetro es la mscara, que configura los flags que sern examinados en el paquete. El segundo parmetro se refiere a los flags que se deben configurar en el paquete para ser seleccionado. Los flags posibles son ACK, FIN, PSH, RST, SYN, y URG. Adicionalmete, se pueden usar ALL y NONE para seleccionar todos los flags o ninguno de ellos.

Por ejemplo, una regla iptables que contiene -p tcp --tcp-flags ACK,FIN,SYN SYN tan solo seleccionar los paquetes TCP que tengan el flag SYN activo y los flags ACK y FIN sin activar. Como en otras opciones, al usar el punto de exclamacin (!) tras --tcp-flags invierte el efecto de la opcin, de tal forma que los flags del parmetro no tendrn que estar presentes para poder ser seleccionados. --tcp-option Intenta seleccionar con opciones especficas de TCP que pueden estar activas en un paquete en particular. Esta opcin se puede revertir con el punto de exclamacin (!). Protocolo UDP Estas opciones de seleccin estn disponibles para el protocolo UDP (-p udp): --dport Especifica el puerto destino del paquete UDP usando el nombre del servicio, el nmero del puerto, o un rango de puertos. La opcin de seleccin de paquetes --destination-port se puede utilizar en lugar de --dport. Mire la opcin --dport en la la seccin de nombre Protocolo TCP para ver diferentes formas de utilizar esta opcin. --sport Especifica el puerto origen del paquete UDPm usando el nombre del servicio nmero de puerto, o rango de puertos. La opcin --source-port puede ser usada en lugar de --sport. Mire la opcin en --dport en la la seccin de nombre Protocolo TCP para ver diferentes formas de utilizar esta opcin. Protocolo ICMP Los paquetes que usan el protocolo de control de mensajes de internet (Internet Control Message Protocol, ICMP) pueden ser seleccionados usando la siguiente opcin cuando se especifique -p icmp: --icmp-type Selecciona el nombre o el nmero del tipo ICMP que concuerde con la regla. Se puede obtener una lista de nombres vlidos ICMP tecleando el comando iptables -p icmp -h. Mdulos con opciones de seleccin adicionales Las opciones de seleccin adicionales, que no son especficas de ningn protocolo en particularm estn tambin disponibles a travs de mdulos que se cargan cuando el comando iptables los necesite. Para usar una de estas opciones deber cargar el mdulo por su nombre incluyendo -m <nombre-modulo> en el comando iptables que crea la regla. Un gran nmero de mdulos, cada uno de ellos con sus diferentes opciones de seleccin de paquetes estn disponibles por defecto. Tambin es posible crear sus propios mdulos que proporcionen funcionalidades de seleccin adicionales, puede que para requisitos especficos de su red. Existen muchos mdulos, pero tan solo los ms populares sern vistos aqu. El mdulo limit le permite poner un lmite en el nmero de paquetes que podrn ser seleccionados por una regla en particular. Esto es especialmente beneficioso cuando se usa la regla de logging ya que hace que el flujo de paquetes seleccionados no llene nuestros ficheros log con mensajes repetitivos ni utilice demasiados recursos del sistema. --limit Configura el nmero de coincidencias en un intervalo de tiempo, especificado con un nmero y un modificador de tiempo ordenados en el formato <nmero>/<tiempo>. Por ejemplo, si usamos --limit 5/hour solo dejareos que una regla sea efectiva cinco veces a la hora, Si no se utiliza ningn nmero ni modificador de tiempo, se asume el siguiente valor por defecto: 3/hour.

--limit-burst Configura un lmite en el nmero de paquetes capaces de cumplir una regla en un determinado tiempo. Esta opcin deber ser usada junto con la opcin --limit, y acepta un nmero para configurar el intervalo de tiempo (threshold). Si no se especifica ningn nmero, tan solo cinco paquetes sern capaces inicialmente de cumplir la regla. El mdulo state, aue utiliza la opcin --state, puede seleccionar un paquete con los siguientes estados de conexin particulares: ESTABLISHED El paquete seleccionado se asocia con otros paquetes en una conexin establecida. INVALID El paquete seleccionado no puede ser asociado a una conexin conocida. NEW El paquete seleccionado o bien est creando una nueva conexin o bien forma parte de una conexin de dos caminos que antes no haba sido vista. RELATED El paquete seleccionado est iniciando una nueva conexin en algn punto de la conexin existente. Estos estados de conexin se pueden utilizar en combinacin con otros separndolos mediante comas como en -m state --state INVALID,NEW. Para seleccionar una direccin MAC hardware de un dispositivo Ethernet en particularm utilice el mdulo mac, que acepta --mac-source con una direccin MAC como opcin. Para excluir una direccin MAC de una regla, ponga un punto de exclamacin (!) tras la opcin --mac-source. Para ver otras opciones disponibles a travs de mdulos, mire la pgina del manual de iptables. Opciones del objetivo Una vez que un paquete cumple una regla en particular, la regla puede dirigir el paquete a un nmero de objetivos (destinos) diferentes que decidirn cul ser su destino y, posiblemente, las acciones adicionales que se tomarn, como el guardar un registro de lo que est ocurriendo. Adicionalmente, cada cadena tiene un objetivo por defecto que ser el que se utilice si ninguna de las reglas disponibles en dicha cadena se pueden aplicar a dicho paquete, o si ninguna de las reglas que se aplican al mismo especifican un objetivo concreto. Existen pocos objetivos standard disponibles para decidir qu ocurrir con el paquete: <user-defined-chain> El nombre de una cadena que ya ha sido creada y definida con anterioridad junto con esta tabla con reglas que sern verificadas contra este paquete, adems de cualquier otra regla en otras cadenas que se deban verificar contra este paquete. Este tipo de objetivo resulta til para escrutinar un paquete antes de decidir qu ocurrir con l o guardar informacin sobre el paquete. ACCEPT Permite que el paquete se mueva hacia su destino (o hacia otra cadena, si no ha sido configurado ningn destino ha sido configurado para seguir a esta cadena). DROP Deja caer el paquete al suelo. El sistema que envi el paquete no es informado del fallo. El paquete simplemente se borra de la regla que est verificando la cadena y se descarta. QUEUE El paquete se pone en una cola para ser manejado por una aplicacin en el espacio de usuario. RETURN Para la verificacin del paquete contra las reglas de la cadena actual. Si el paquete con un destino RETURN cumple una regla de una cadena llamada desde otra cadena, el paquete es devuelto a la primera cadena para retomar la verificacin de la regla all donde se dej. Si la regla RETURN se utiliza en una cadena predefinida, y el paquete no puede moverse hacia la cadena anterior, el objetivo por defecto de la cadena actual decide qu accin llevar a cabo. Adems de estos objetivos standard, se pueden usar otros ms con extensiones llamadas mdulos de objetivos (target modules), que trabajan de forma similar a como los hacan los mdulos de las opciones de seleccin. Para

obtener ms informacin sobre estos mdulos, mire en la la seccin de nombre Mdulos con opciones de seleccin adicionales. Existen varios mdulos extendidos de objetivos, la mayora de los cuales tan solo se aplicarn a tablas o situaciones especficas. Un par de estos mdulos de los ms populares e incluidos por defecto en Red Hat Linux seran: LOG Guarda un registro de todos los paquetes que cumplen esta regla. Como estos paquetes son monitorizados por el kernel, el fichero /etc/syslog.conf determina dnde se escribirn esas entradas en el fichero de registro (log). Por defecto, se sitan en el fichero /var/log/messages. Se pueden usar varias opciones tras el objetivo LOG para especificar la manera en la que tendr lugar el registro: o --log-level Configura un nivel de prioridad al evento de registro del sistema. Se puede encontrar una lista de los eventos del sistema en la pgina del manual de syslog.conf, y sus nombres se pueden usar como opciones tras la opcin --log-level. o --log-ip-options Cualquier opcin en la cabecera de un paquete IP se guarda en el registro. o --log-prefix Pone una cadena de texto antes de la lnea de registro cuando sta sea escrita. Acepta hasta 29 caracteres tras la opcin --log-prefix. Esto puede ser til para escribir filtros del registro del sistema para ser usados conjuntamente junto con el registro de paquetes. o --log-tcp-options Cualquier opcin en la cabecera de un paquete TCP se guarda en el registro. o --log-tcp-sequence Escribe le nmero de secuencia TCP del paquete en el registro del sistema. REJECT Enva un paquete de error de vuelta al sistema que envi el paquete, y lo deja caer (DROP). Este objetivo puede ser til si queremos notificar al sistema que envi el paquete del problema. El objetivo REJECT acepta una opcin --reject-with <type> que permite que informacin ms detallada sea enviada junto con el paquete de error. El mensaje port-unreachable es el error <type> que se enva por defecto cuando no se utiliza junto con otra opcin. Para obtener una lista completa de todas las opciones <type> que se pueden utilizar, vea la pgina del manual de iptables. Podr encontrar otras extensiones de objetivos incluyendo algunas muy tiles con masquerading usando la tabla nat o con alteracin de paquetes usando la tabla mangle, en la pgina del manual de iptables. Opciones de listado El comando de listado por defecto, iptables -L, proporciona una visin bsica de las cadenas actuales de la tabla de filtros por defecto. . Existen opciones adicionales que proporcionan ms informacin y la ordenan de diferentes formas: -v Muestra la salida por pantalla, como el nmero de paquetes y bytes que cada cadena ha visto, el nmero de paquetes y bytes que cada regla ha encontrado, y qu interfaces se aplican a una regla en particular. -x Expande los nmeros en sus valores exactos. En un sistema ocupado, el nmero de paquetes y bytes vistos por una cadena en concreto o por una regla puede estar abreviado usando K (miles), M (millones), y G (billones) detrs del nmero. Esta opcin fuerza a que se muestre el nmero completo. -n Muestra las direcciones IP y los nmeros de puertos en formato numrico, en lugar de utilizar el nombre del servidor y la red tal y como se hace por defecto. --line-numbers Proporciona una lista de cada cadena junto con su orden numrico en la cadena. Esta opcin puede ser til cuando est intentando borrar una regla especfica en una cadena, o localizar dnde insertar una regla en una cadena.

Guardar informacin de iptables Las reglas creadas con el comando iptables se almacenan solamente en RAM. Si tiene que reiniciar su sistema tras haber configurado reglas de iptables, stas se perdern. Si quiere que determinadas reglas de filtro de red tengan efecto en cualquier momento que inicie su sistema, necesita guardarlas en el fichero /etc/sysconfig/iptables. Para hacer esto teclee el comando /sbin/service iptables save como usuario root. Esto hace que el script de inicio de iptables ejecute el programa /sbin/iptables-save y escriba la configuracin actual de iptables en el fichero /etc/sysconfig/iptables. Este fichero debera ser de solo lectura para el usuario root, para que las reglas de filtrado de paquetes no sean visibles por el resto de los usuarios. La prxima vez que se inicie el sistema, el script de inicio de iptables volver a aplicar las reglas guardadas en /etc/sysconfig/iptables usando el comando /sbin/iptables-restore. Mientras que siempre es una buena idea el verificar cada nueva regla de iptables antes de que se escriba en el fichero /etc/sysconfig/iptables, es posible copiar las reglas de iptables en este fichero a partir de otra versin del sistema de este fichero. Esto le permitir distribuir rpidamente conjuntos de reglas iptables a diferentes mquinas. Importante Si distribuye el fichero /etc/sysconfig/iptables a otras mquinas, debe escribir /sbin/service iptables restart para que las nuevas reglas tengan efecto.

Configuracin del firewall

Figura 7-10. Configuracin del firewall La pantalla Configuracin del cortafuegos es idntica a la pantalla del programa de instalacin Red Hat Linux y de Herramienta de configuracin del nivel de seguridad, proporcionando la misma funcionalidad. Escoja entre los niveles de seguridad Alto, Medio y Desactivado. Remtase a la seccin de nombre Herramienta de configuracin del nivel de seguridad en Captulo 12 para obtener informacin ms detallada sobre los niveles de seguridad.

Captulo 12. Configuracin bsica de firewall


Un firewall o cortafuegos evita que los virus se esparzan por su ordenador y evita que los usuarios no autorizados accedan a su ordenador. El firewall est ubicado entre su ordenador y la red. Determina los servicios a los que pueden acceder los usuarios remotos en su red. Un firewall que haya sido configurado debidamente puede aumentar la seguridad de su sistema. Se le recomienda que configure un firewall para cualquier sistema con una conexin de Internet.

Herramienta de configuracin del nivel de seguridad

Durante la instalacin de Red Hat Linux en la pantalla de configuracin del firewall, se le ha dado la posibilidad de escoger el nivel de seguridad alto, medio o ninguno o de permitir determinados dispositivos, servicios de entrada y puertos Despus de la instalacin, puede cambiar el nivel de seguridad de su sistema mediante el uso del Herramienta de configuracin del nivel de seguridad. Si

prefiere una aplicacin basada en un wizard, consulte la seccin de nombre GNOME Lokkit. Para iniciar la aplicacin, seleccione Men principal (en el panel) => Configuracin del sistema => Seguridad o escriba el comando redhat-configsecuritylevel desde un indicador de comandos de shell (por ejemplo, en una terminal XTerm o GNOME).

Figura 12-1. Herramienta de configuracin del nivel de seguridad Seleccione el nivel de seguridad deseado desde el men pulldown. Alto Si elige Alto, su sistema no aceptar conexiones(que no sean parmetros por defecto) que usted no haya definido especficamente. Por defecto, solo las siguientes conexiones estn permitidas: respuestas de DNS DHCP de modo que cualquier interfaz de la red que use DHCP se puede configurar correctamente

Si elige Alto, su firewall no permitir lo siguiente: Modo activo FTP (modo pasivo FTP, usado por defecto en la mayora de clientes s debera funcionar) transferencias de ficheros IRC DCC RealAudioTM Clientes remotos del sistema X Window

Si va a conectar su sistema a internet, pero no desea ejecutar un servidor, sta es la opcin ms segura. Si necesita servicios adicionales, puede elegir Customize para permitir servicios especficos a travs del firewall. Nota Si selecciona un firewall medio o alto, los mtodos de autenticacin de la red (NIS y LDAP) no funcionarn.

Medio Si elige Medio, su firewall no permitir que mquinas remotas tengan acceso a ciertos recursos de su sistema. Por defecto, el acceso a los siguientes recursos no est permitido: Puertos por debajo del 1023 los puertos reservados standard, usados por la mayora de servicios de sistema, tales como FTP, SSH, telnet, HTTP, y NIS. El puerto de servidor NFS (2049) NFS se deshabilita tanto para servidores remotos como para clientes locales. El modo de pantalla local del sistema X Window para clientes X remotos. El puerto de servidor X Font (por defecto, xfs no se escucha en la red; est deshabilitado en el servidor fuente).

Si quiere permitir recursos tales como RealAudioTM a la vez que bloquea el acceso a los servicios normales del sistema, elija Medio. Seleccione Customize para permitir servicios especficos a travs del firewall. Nota Si selecciona un firewall medio o alto, los mtodos de autenticacin de red (NIS y LDAP) no funcionarn. NingnFirewall Ningn firewall proporciona acceso completo a su sistema y no realiza comprobaciones de seguridad Comprobacin de seguridad es la deshabilitacin del acceso a ciertos servicios. Esto debera estar seleccionado nicamente si usted est conectado a una red de confianza (no Internet) o si desea hacer ms configuraciones de firewall en otro momento. Elija Customize para aadir dispositivos de confianza o para permitir servicios de entrada adicionales. Dispositivosde confianza Al seleccionar cualquiera de los Dispositivos de confianza se permite el acceso a su sistema a todo el trfico de ese dispositivo; queda excluido de las reglas del firewall. Por ejemplo, si est ejecutando una red local, pero est conectado a Internet por medio de un acceso remoto PPP, puede comprobar eth0 y el trfico proveniente de su red local ser permitido. Seleccionar eth0 como de confianza significa que todo el trfico a travs de Ethernet est permitido, pero la interfaz ppp0 sigue teniendo un firewall. Si desea restringir el trfico en una interfaz, leave it unchecked. No es recomendable que haga cualquier dispositivo conectado a redes pblicas, como Internet, un Dispositivo de confianza. AllowIncoming Activar estas opciones permite que los servicios especificados pasen a travs del firewall. Nota, durante la instalacin de la estacin de trabajo, la mayora de estos servicios no estn instalados en el sistema. DHCP Si permite preguntas y respuestas DHCP de entrada, est permitiendo que cualquier interfaz de red que use DHCP determine sus direcciones IP. Normalmente DHCP est activado. Si DHCP no est activado, su ordenador no podr obtener una direccin IP. SSH Secure SHell (SSH) es un conjunto de herramientas para conectarse y ejecutar comandos en una mquina remota. Si desea utilizar herramientas SSH para acceder a su mquina a travs de un firewall, active esta opcin. Para acceder a

su mquina remotamente, utilizando herramientas SSH, necesita tener instalado el paquete openssh-server Telnet Telnet es un protocolo para conectarse a mquinas remotas. Las comunicaciones Telnet son cifradas y no proporcionan seguridad ante el snooping de red. No se recomienda permitir el acceso Telnet de entrada. Si quiere permitir el acceso de retorno Telnet, tendr que instalar el paquete telnet-server. WWW(HTTP) Apache (y otros servidores Web) utilizan el protocolo HTTP para servir pginas web. Si est planeando hacer su servidor Web accesible para todos, active esta opcin. No se requiere esta opcin para visualizar pginas localmente o para desarrollar pginas web. Tendr que instalar el paquete apache si quiere servir pginas web. Al activar WWW (HTTP) no se abrir un puerto para HTTPS. Para activar HTTPS, especifquelo en el campo Otros puertos. Mail (SMTP) Si quiere permitir la entrega de correo a travs de su firewall, de modo que hosts remotos puedan conectarse directamente a su mquina para entregar correo, active esta opcin. No necesita activarla si recoge el correo desde su servidor de ISP utilizando POP3 o IMAP, o si usa una herramienta como por ejemplo fetchmail. Tenga en cuenta que un servidor SMTP que no est configurado adecuadamente puede permitir que mquinas remotas usen su servidor para enviar correo basura. FTP El protocolo FTP se utiliza para transferir ficheros entre mquinas en red. Si quiere hacer su servidor FTP accesible para todos, acytive esta opcin. Necesita instalar el paquete wu-ftpd (y posiblemente el anonftp) para que esta opcin sea de utilidad. Otrospuertos Puede permitir el acceso a puertos que no estn listados aqu, al listarlos en el campo Otros puertos . Utilice el formato siguiente: puerto:protocolo. Por ejemplo, si quiere permitir acceso IMAP a travs de su firewall, puede especificar imap:tcp. Tambin puede especificar explcitamente puertos numricos; para permitir paquetes UDP en el puerto 1234 a travs del firewall, escriba 1234:udp. Para especificar varios puertos, seprelos con comas. Debe tener el servicio iptables activado y Ejecutndose para activar el nivel de seguridad. Para ms detalles consulte la seccin de nombre Activacin del servicio iptables.

GNOME Lokkit
GNOME Lokkit le permite a un usuario medio configurar los parmetros del firewall mediante la creacin de reglas de red iptables bsicas. En lugar de tener que escribir las reglas, este programa le formula una serie de preguntas sobre cmo utiliza el sistema y, a continuacin, escribe por usted las reglas en el fichero /etc/sysconfig/iptables. No intente usar GNOME Lokkit para generar reglas de firewall complejas. Est diseado para usuarios medios que deseen una proteccin en las conexiones por mdem, cable o DSL. Para configurar reglas de firewall especficas, consulte el captulo Firewall con iptables del Manual oficial de referencia de Red Hat Linux. Para desactivar servicios especficos, y denegar hosts y usuarios concretos, consulte el Captulo 13. Para iniciar GNOME Lokkit, escriba el comando gnome-lokkit en el intrprete de comando de la shell como root. Si no tiene un sistema X Window instalado o si prefiere un programa basado en texto, use el comando lokkit para iniciar la versin en modo texto de GNOME Lokkit.

Bsico

Figura 12-2. Bsico Despus de arrancar el programa, elija el nivel de seguridad adecuado para el sistema: Alta Seguridad Esta opcin desactiva la mayora de las conexiones de red, excepto las respuestas de DNS y DHCP para que se puedan activar las interfaces de la red. IRC, ICQ y otros servicios de mensajera instantneo, as como RealAudioTM no funcionan sin un proxy. Seguridad Baja Esta opcin no permite conexiones remotas en el sistema, incluidas las conexiones NFS y las sesiones remotas de un sistema X Window. Los servicioes que se ejecutan en el puerto 1023 no aceptan las conexiones, incluidas las realizadas con FTP, SSH, Telnet y HTTP. Deshabilitar el firewall Esta opcin no crea ninguna regla de seguridad. Slo se recomienda seleccionar esta opcin si el sistema se encuentra en una red de confianza (no en Internet), si el sistema tiene instalado un firewall grande o si escribe personalmente las reglas del firewall. Si elige esta opcin y hace click en Siguiente, pase a la la seccin de nombre Activacin del servicio iptables. No se cambiar la seguridad del sistema.

Hostslocales
Si hay dispositivos Ethernet en el sistema, la pgina de Hosts Locales le permitir configurar si las reglas de firewall se utilizan en las peticiones de conexin enviadas a cada dispositivo. Si el dispositivo conecta el sistema a una rea local con un firewall y no se conecta directamente a Internet, pulse S. Si la tarjeta Ethernet conecta el sistema a un mdem DSL o por cable, se recomienda seleccionar No.

Figura 12-3. Hosts locales

DHCP
Si utiliza el protocolo DHCP para activar las interfaces de Ethernet en el sistema, debe responder S a la pregunta sobre DHCP. Si contesta no, no podr conectar con una interfaz Ethernet. Muchos proveedores de Internet por DSL y cable requieren el uso del protocolo DHCP para las conexiones de Internet.

Figura 12-4. DHCP

Configuracinde servicios
GNOME Lokkit tambin le permite activar y desactivar servicios comunes. Si responde S a la configuracin de servicios, se le pedir informacin sobre los servicios siguientes: Web Server Active esta opcin si desea que los usuarios se conecten a un servidor Web, como Apache, que se ejecuta en el sistema. No es necesario que seleccione esta opcin si desea ver las pginas en el sistema o en otros servidores de la red. Correo de entrada Active esta opcin si el sistema debe aceptar el correo entrante. No necesitar usar esta opcin si recupera el correo electrnico mediante IMAP, POP3 o fetchmail. Shell segura Secure Shell, o SSH, es un conjunto de herramientas para el registro y ejecucin de comandos en una mquina remota a travs de una conexin cifrada. Si necesita tener acceso a la mquina de forma remota a travs de ssh, active esta opcin. Telnet Telnet le permite registrarse en la mquina remotamente; sin embargo, no es un mtodo seguro. Enva texto plano (incuidas las contraseas) a travs de la red. Se recomienda utilizar SSH para registrarse en la mquina remotamente. Si necesita tener acceso al sistema va telnet, active esta opcin. Para desactivar otros servicios que no necesite, use Serviceconf ( consulte la la seccin de nombre Herramienta de configuracin de servicios en Captulo 13) o ntsysv, (consulte la la seccin de nombre ntsysv en Captulo 13), o chkconfig (vea la la seccin de nombre chkconfig en Captulo 13).

Activacindel firewall
Al hacer clic en Terminar se registrarn las reglas del firewall en /etc/sysconfig/iptables y se iniciar el firewall al arrancr el servicio iptables. Es muy recomendable que ejecute GNOME Lokkit desde la mquina, no desde una sesin X remota. Si desactiva el acceso remoto al sistema, no podr tener acceso al mismo ni desactivar las reglas del firewall. Haga click en Cancelar si no desea escribir reglas de firewall.

Mail Relay
Mail Relay es un sistema que permite a otros sistemas enviar correo a travs de l. Si el sistema es un mail relay, algunos usuarios podran usarlo para enviar correo basura a otros desde su mquina. Si decide activar los servicios de correo, despus de hacer click en Terminar en la pgina Activar el Firewall, se le pedir que compruebe el sistema de mail relay. SI pulsa S para comprobarlo, GNOME Lokkit intentar conectarse al sitio Web de Mail Abuse Prevention System en la direccin URLhttp://www.mail-abuse.org/ y ejecutar un programa de comprobacin de mail relay. Los resultados de la comprobacin se mostrarn cuando haya acabado. Si el sistema permite mail relay, es muy recomendable que configure Sendmail para evitar su uso. Debe tener el servicio iptables activado y ejecutndose para activar el firewall. Para ms detalles consulte la seccin de nombre Activacin del servicio iptables.

Activacin del servicio

iptables

Las reglas de firewall slo estarn activas si se est ejecutando el servicio iptables. Para arrancar manualmente el servicio, use el comando: /sbin/service iptables restart Para asegurarse de que se ha iniciado al arrancar el sistema, escriba el comando: /sbin/chkconfig --level 345 iptables on Tambin puede usar la aplicacin Serviceconf para activar iptables. Consulte la seccin de nombre Herramienta de configuracin de servicios en Captulo 13. No puede ejecutar el servicio ipchains a la vez que el servicio iptables. Para asegurarse de que el servicio ipchains est desactivado, ejecute el comando: /sbin/chkconfig --level 345 ipchains off

7.7.2. Configurar o firewall utilizando iptables


Nesta seo veremos como configurar o firewall utilizando o sucessor do ipchains: o netfilter, presente no kernel 2.4.X. Como o Linuxconf ainda no suporta o iptables, teremos que efetuar as configuraes manualmente digitando os comandos diretamente num terminal. Nesta seo permitiremos que as mquinas internas acessem diretamente a Internet. Nosso servidor Web ser uma mquina interna com um nmero ip invlido. Veja a Figura 7-20 . Figura 7-20. Firewall com iptables

Dica: Para entender melhor os conceitos do netfilter, leia Captulo 6 Seo 6.3.2, onde esses conceitos so explicados com mais detalhes. Os recursos disponibilizados pelo netfilter so manipulados atravs do comando iptables. Como a criao de regras atravs do netfilter dinmica, assim como o ipchains, seu contedo perdido quando a mquina reinicializada. Quando utilizamos o Linuxconf para efetuar essas configuraes, ele (o Linuxconf) salva essas regras num arquivo interno. Esse um dos motivos pelos quais devemos criar um script de inicializao para que, aps termos configurado as regras de utilizao que desejamos, elas sejam executadas a cada inicializao. Antes de criarmos scripts e definirmos quais sero as regras a serem utilizadas, vejamos um pouco da sintaxe utilizada pelo comando iptables no tratamento de ganchos preexistentes[1]. A sintaxe mais utilizada do comando iptables a seguinte: # iptables -[XYZ] cadeia especificao_da_regra [opes]

onde -[XYZ] pode ser:


1. -A Adicionar uma nova regra a uma cadeia. 2. -I Inserir uma nova regra numa posio em uma cadeia. 3. -R Substitui uma regra em uma posio da cadeia. 4. -D Apaga uma regra em uma posio da cadeia. 5. -D Apaga a primeira regra que casa com uma cadeia. Iremos utilizar basicamente as opes para adicionar (-A) e apagar (-D). As outras (-I para inserir e -R para substituir) so simplesmente extenses desses conceitos. Cada regra especifica um conjunto de condies que o pacote precisa satisfazer, e dependendo do que ele satisfizer, ele ser direcionado para um destino ou para outro.

Ateno
possvel que, ao adicionar uma regra errada, sua mquina pare de funcionar corretamente. Neste caso, utilize o comando iptables -F, para que todas as regras do filtro de pacotes sejam desativadas. Porm, caso a poltica default esteja como DROP ou REJECT voc precisar utilizar o comando iptables -P INPUT ACCEPT e a seguir iptables -P OUTPUT ACCEPT para redefinir a poltica padro utilizada. Caso queira saber quais regras esto ativas, voc pode usar o comando iptables -L .

7.7.2.1. Pr-requisitos para a utilizao do iptables


Para poder utilizar o comando iptables voc dever ter o pacote iptables instalado no seu sistema e tambm o mdulo ip_tables.o carregado. Para carregar o mdulo ip_tables execute o seguinte comando: # modprobe ip_tables

7.7.2.2. Instalao
Para instalar o iptables selecione o seguinte pacote, marcando-o com o "install" no synaptic e clique em "proceed": iptables

possvel instalar o iptables utilizando o apt digitando o seguinte comando em um terminal: # apt-get install iptables

7.7.2.3. Configurando as regras para o firewall


Vimos anteriormente que a poltica padro da cadeia de entrada definida como DROP, negando qualquer acesso rede. A sintaxe utilizada pelo iptables efetuarmos essa ao : # iptables -t filter -P INPUT DROP

Continuando, devemos permitir o acesso a um servidor web que escuta na porta 80 de uma mquina interna que possui o ip 192.168.1.200, porm, antes temos que permitir todo e qualquer trfego na interface lo, que a nossa interface de loopback para que a comunicao interprocessos possa funcionar. Precisamos ento, executar o seguinte comando:
# iptables -t filter -A INPUT -j ACCEPT -i lo

Antes ainda de liberarmos o trfego ao nosso servidor Web precisamos fazer com que nosso firewall permita que os pacotes pertencentes s conexes j estabilizadas e os pacotes relacionados a essas conexes possam passar pelo firewall. Para isso precisamos dos comandos:
# iptables -t filter -A FORWARD -j ACCEPT -m state --state ESTABLISHED, RELATED # iptables -t filter -A INPUT -j ACCEPT -m state --state ESTABLISHED, RELATED

Agora iremos realmente liberar o acesso porta 80 do nosso servidor Web utilizando o comando:
# iptables -t filter -A FORWARD -j ACCEPT -m state NEW -p tcp --dport http

Caso queiramos liberar ainda mais um tipo de acesso, podemos liberar o acesso a requisies[2] IDENT utilizadas pelo o protocolo de autenticao (auth), o qual utilizado pelo e-mail e alguns servidores ftp. Para liberarmos esse acesso basta executar o comando:
# iptables -t filter -A FORWARD -j ACCEPT -m state NEW -p tcp --dport auth

Agora iremos criar uma regra que ir rejeitar todos os pacotes que no casarem com as regras anteriores:
# iptables -t filter -A FORWARD -j REJECT

Aps configurarmos o firewall, falta ainda configurarmos o mascaramento na interface de saida :


# iptables -t nat -A POSTROUTING -j MASQUERADE -o ppp0

Iremos configurar agora o mascaramento dos pacotes com destino ao nosso webserver. Todos os pacotes que vierem da interface ppp0 que tiverem como protocolo tcp e forem destinados porta 80 so destinados para a mquina interna:
# iptables -t nat -A PREROUTING -j DNAT --to-dest 192.168.1.200 -i ppp0 -p tcp --dport 80

Assim terminamos de configurar nosso firewall. Porm, lembre-se de que estas regras desaparecero assim que a mquina for reinicializada. Para evitar que isso ocorra, iremos criar um script que ir executar junto com a inicializao da mquina, garantindo que nossas regras estejam funcionando.
Crie no diretrio /etc/init.d/ um arquivo chamado iptables com o seguinte contedo: #! /bin/sh # description: Inicializacao do iptables # # chkconfig: 2345 80 30 # processname: iptables # pidfile: /var/run/iptabless.pid . /etc/rc.d/init.d/functions . /etc/sysconfig/network if [ ${NETWORKING} = "no" ] then exit 0

fi case "$1" in start) gprintf "Iniciando o servio de %s: " "IPtables" echo echo 1 > /proc/sys/net/ipv4/ip_forward /sbin/modprobe ip_tables /usr/bin/iptables -t filter -P INPUT DROP /usr/bin/iptables -t filter -A INPUT -j ACCEPT -i lo /usr/bin/iptables -t filter -A FORWARD -j ACCEPT -m state \ --state ESTABLISHED,RELATED /usr/bin/iptables -t filter -A INPUT -j ACCEPT -m state \ --state ESTABLISHED,RELATED /usr/bin/iptables -t filter -A FORWARD -j ACCEPT -m state \ NEW -p tcp --dport http /usr/bin/iptables -t filter -A FORWARD -j ACCEPT -m state\ NEW -p tcp --dport auth /usr/bin/iptables -t filter -A FORWARD -j REJECT /usr/bin/iptables -t nat -A POSTROUTING -j MASQUERADE -o ppp0 /usr/bin/iptables -t nat -A PREROUTING -j DNAT \ --to-dest 192.168.1.200 -i ppp0 -p tcp --dport 80 ;; stop) gprintf "Parando o servio de %s: " "IPtables" echo /usr/bin/iptables -F /sbin/rmmod iptables ;; *) gprintf "Uso: iptables (start|stop)" echo ;; esac exit 0 Este script alm de inserir as regras necessrias para o firewall, carrega tambm os mdulos do kernel necessrios para este servio. Como voc pode notar, esse script muito semelhante ao utilizado anteriormente no Captulo 6 , sugerimos unificar os dois scripts em um s para um melhor gerenciamento das regras utilizadas, considerando que, a nica diferena nos dois scripts mencionados so as regras utilizadas. Nota: possvel continuar utilizando o ipchains no Kernel 2.4.X, bastando para isso carregar o mdulo ipchains e utilizar as regras prprias do ipchains.

Vous aimerez peut-être aussi