18.3. Opciones usadas en comandos iptables

Las reglas para el filtrado de paquetes se ponen en funcionamiento ejecutando el comando iptables. Con frecuencia se utilizan los aspectos siguientes del paquete como el criterio:

Para más información sobre opciones específicas que resuelven estos aspectos de un paquete, consulte la Sección 18.3.4 y la Sección 18.3.5.

Las opciones usadas con las reglas iptables dadas deben estar agrupadas lógicamente, basándose en el propósito y en las condiciones de la regla general, para que la regla sea válida. El resto de esta sección explica las opciones usadas comúnmente para el comando iptables.

18.3.1. Estructura de las opciones iptables

Muchos comandos iptables tienen la siguiente estructura:

iptables [-t <table-name>] <command> <chain-name> <parameter-1> \
         <option-1> <parameter-n> <option-n>

La opción <table-name> permite al usuario seleccionar una tabla diferente a la tabla predeterminada filter a usar con el comando. La opción <command> indica una acción específica a realizar, tal como anexar o eliminar la regla especificada por la opción <chain-name>. Luego de la opción <chain-name> se encuentran un par de parámetros y opciones que definen qué pasará cuando un paquete coincide con la regla.

Cuando miramos la estructura de un comando iptables, es importante recordar que, al contrario que la mayoría de los comandos, la longitud y complejidad de un comando iptables puede cambiar en función de su propósito. Un comando para borrar una regla de una cadena puede ser muy corto, mientras que un comando diseñado para filtrar paquetes de una subred particular usando un conjunto de parámetros específicos y opciones puede ser mucho más largo. Al crear comandos iptables puede ser de ayuda reconocer que algunos parámetros y opciones pueden crear la necesidad de utilizar otros parámetros y opciones para especificar más aún la petición de la opción anterior. Para construir una regla válida, esto deberá continuar hasta que todos los parámetros y opciones que requieran otro conjunto de opciones hayan sido satisfechos.

Escriba iptables -h para ver una lista detallada de la estructura de los comandos iptables.

18.3.2. Opciones de comandos

Las opciones de comandos le dicen a iptables que realice una acción específica. Solamente una opción de comando se permite por comando iptables. Excepto el comando de ayuda, todos los comandos se escriben en mayúsculas.

Los comandos de iptables son los siguientes:

18.3.3. Opciones de parámetros de iptables

Una vez que se especifiquen ciertos comandos iptables, incluyendo aquellos para añadir, anexar, eliminar, insertar o reemplazar reglas dentro de una cadena, se requieren parámetros para construir una regla de filtrado de paquetes.

18.3.4. Opciones de coincidencia para iptables

Diferentes protocolos de red proporcionan opciones especializadas las cuales se pueden configurar para coincidir un paquete particular usando ese protocolo. Sin embargo, primero se debe especificar el protocolo en el comando iptables. Por ejemplo, -p tcp <protocol-name> (donde <protocol-name> es el protocolo objetivo), hace disponibles las opciones para ese protocolo especificado.

18.3.4.1. Protocolo TCP

Estas opciones de identificación están disponibles en el protocolo TCP (opción -p tcp):

  • --dport — Configura el puerto de destino para el paquete. Use bien sea un nombre de servicio (tal como www o smtp), número de puerto, o el rango de números de puertos para configurar esta opción. Para hojear los nombres y alias de los servicios de red y los números que ellos usan, visualice el archivo /etc/services. La opción --destination-port es sinónimo con --dport.

    Para especificar un rango de números de puertos, separe los dos números con dos puntos (:), tal como -p tcp --dport 3000:3200. El rango más grande aceptable es 0:65535.

    Use un caracter de exclamación (!) después de la opción --dport para coincidir todos los paquetes que no utilizan el servicio de red o puerto.

  • --sport — Configura el puerto fuente del paquete usando las mismas opciones que --dport. La opción --source-port es sinónimo con --sport.

  • --syn — Provoca que todos los paquetes designados de TCP, comúnmente llamados paquetes SYN, cumplan esta regla. Cualquier paquete que esté llevando un payload de datos no será tocado. Si se sitúa un punto de exclamación (!) como bandera tras la opción --syn se provoca que todos los paquetes no-SYN sean seleccionados.

  • --tcp-flags — Permite a los paquetes TCP con bits específicos o banderas, ser coincididos con una regla. La opción --tcp-flags acepta dos parámetros. El primer parámetro es la máscara, la cual configura banderas a ser examinadas en el paquete. El segundo parámetro se refiere a la bandera que se debe configurar para poder coincidir.

    Las banderas posibles son:

    • ACK

    • FIN

    • PSH

    • RST

    • SYN

    • URG

    • ALL

    • NONE

    Por ejemplo, una regla iptables que contenga -p tcp --tcp-flags ACK,FIN,SYN SYN tan sólo seleccionará los paquetes TCP que tengan la bandera SYN activo y las banderas ACK y FIN sin activar.

    Usando el caracter de exclamación (!) después de --tcp-flags reversa el efecto de la opción de coincidencia.

  • --tcp-option — Intenta seleccionar con opciones específicas de TCP que pueden estar activas en un paquete en particular. Esta opción se puede revertir con el punto de exclamación (!).

18.3.4.2. Protocolo UDP

Estas opciones de selección están disponibles para el protocolo UDP (-p udp):

  • --dport — Especifica el puerto destino del paquete UDP, usando el nombre del servicio, número de puerto, o rango de números de puertos. La opción de coincidencia --destination-port es sinónimo con --dport.

  • --sport — Configura el puerto fuente del paquete UDP, usando el nombre de puerto, número de puerto o rango de números de puertos. La opción --source-port es sinónimo con --sport.

18.3.4.3. Protocolo ICMP

Las siguientes opciones de coincidencia están disponibles para el Protocolo de mensajes de Internet (ICMP) (-p icmp):

  • --icmp-type — Selecciona el nombre o el número del tipo ICMP que concuerde con la regla. Se puede obtener una lista de nombres válidos ICMP tecleando el comando iptables -p icmp -h.

18.3.4.4. Módulos con opciones de coincidencias adicionales

Opciones adicionales de coincidencia están disponibles a través de los módulos por el comando iptables. Para usar un módulo de opciones de coincidencia, cargue el módulo por nombre usando la opción -m, tal como -m <module-name> (reemplazando <module-name> con el nombre del módulo).

Un gran número de módulos están disponibles por defecto. Hasta es posible crear sus módulos para proporcionar funcionalidades de opciones de coincidencia adicionales.

Lo siguiente, es una lista parcial de los módulos usados más comúnmente:

  • limit module — Permite colocar un límite en cuántos paquetes son coincididos a una regla particular. Esto es especialmente beneficioso cuando se usa en conjunto con el objetivo LOG, pues puede prevenir que una inundación de paquetes coincidentes sobrecarguen el registro del sistema con mensajes repetitivos o usen los recursos del sistema. Para más información sobre el objetivo LOG, refiérase a la Sección 18.3.5.

    El módulo limit habilita las opciones siguientes:

    • --limit — Configura el número de coincidencias en un intervalo de tiempo, especificado con un número y un modificador de tiempo ordenados en el formato <número>/<tiempo>. Por ejemplo, si usamos --limit 5/hour sólo dejaremos que una regla sea efectiva cinco veces a la hora.

      Si no se utiliza ningún número ni modificador de tiempo, se asume el siguiente valor por defecto: 3/hour.

    • --limit-burst — Configura un límite en el número de paquetes capaces de cumplir una regla en un determinado tiempo. Esta opción deberá ser usada junto con la opción --limit, y acepta un número para configurar el intervalo de tiempo (threshold).

      Si no se especifica ningún número, tan sólo cinco paquetes serán capaces inicialmente de cumplir la regla.

  • módulo state — Habilita la coincidencia de estado.

    El módulo state tiene las siguientes opciones:

    • --state — coincide un paquete con los siguientes estados de conexión:

      • ESTABLISHED El paquete seleccionado se asocia con otros paquetes en una conexión establecida.

      • INVALID El paquete seleccionado no puede ser asociado a una conexión conocida.

      • NEW El paquete seleccionado o bien está creando una nueva conexión o bien forma parte de una conexión de dos caminos que antes no había sido vista.

      • RELATED El paquete seleccionado está iniciando una nueva conexión en algún punto de la conexión existente.

      Estos estados de conexión se pueden utilizar en combinación con otros separándolos mediante comas como en -m state --state INVALID, NEW.

  • módulo mac — Habilita la coincidencia de direcciones MAC de hardware.

    El módulo mac activa las opciones siguientes:

    • --mac-source — Coincide una dirección MAC a la tarjeta de red que envió el paquete. Para excluir una dirección MAC de la regla, coloque un símbolo de exclamación (!) después de la opción --mac-source.

Para visualizar otras opciones disponibles a través de los módulos, consulte la página del manual de iptables.

18.3.5. Opciones del objetivo

Una vez que un paquete ha coincidido con una regla, la regla puede dirigir el paquete a un número de objetivos diferentes que deciden su suerte y, posiblemente, toman acciones adicionales. Cada cadena tiene un objetivo por defecto, el cual es usado si ninguna de las reglas en esa cadena coinciden con un paquete o si ninguna de las reglas que coinciden con el paquete especifica un objetivo.

Los siguientes son los objetivos estándar:

Además de estos objetivos standard, se pueden usar otros más con extensiones llamadas módulos de objetivos (target modules). Para obtener más información sobre los módulos de opciones de coincidencias, mire en la Sección 18.3.4.4.

Existen varios módulos extendidos de objetivos, la mayoría de los cuales tan sólo se aplican a tablas o situaciones específicas. Un par de estos módulos, de los más populares e incluidos por defecto en Red Hat Enterprise Linux son:

Otras extensiones de objetivos, incluyendo muchas que son útiles para el enmascaramiento de IP usando la tabla nat o con alteración de paquetes usando la tabla mangle, se puede encontrar en la página del manual de iptables.

18.3.6. Opciones de listado

El comando predeterminado para listar, iptables -L, proporciona una vista muy básica de los filtros por defecto de las cadenas actuales de la tabla. Las opciones adicionales proporcionan más información: