Este firewall trabaja en las cuatro primeras capa del modelo OSI. Los principales comandos de IPtables son los siguientes (argumentos de una orden):

Documentos relacionados
En el anterior post había explicado que es necesario en un firewall primero denegar todo tráfico entrante, para ello:

Tema: Firewall basado en IPTABLES.

Iptables: un cortafuegos TCP/IP

Configuración del firewall en Linux con IPtables

Ejemplos iptables. Planificación y gestión de redes de ordenadores. Departamento de Sistemas Telemáticos y Computación (GSyC) Noviembre de 2012

Introducción. Permiso predeterminado: Denegación predeterminada: Administración y Gestión de Redes 1

IPTABLES. Esta es una herramienta que permite configurar las reglas del sistema de filtrado de paquetes del kernel de Linux, desde su versión 2.4.

IPTables. Roberto Gómez Cárdenas Netfilter/IPTables

IPTABLES. Gonzalo Alvarez Flores

How to 16 Firewall. Jesús Betances Página 1

Rawel E. Luciano B Sistema Operativo III 16- FIREWALL. José Doñe

Curso de Introducción a la administración de servidores GNU/Linux Centro de Formación Permanente Universidad de Sevilla Abril-Junio 2010

Aclaramos que en versiones anteriores al kernal 2.4.* se llamaba ipchain, pero a partir de esta versión se cambió a Iptables, mucho más potente.

Firewall con IPTABLES

FIREWALL IPTABLES. Centro Asociado de Melilla

IPTABLES. FW's de hosts (a veces asociados a Fws personales y/o a servidores). Por Fws de red..

Cortafuegos (Firewalls) en Linux con iptables

XARXES 2. Seguretat de Xarxa. Módul 2: Carles Mateu Departament d'informàtica i Enginyeria Industrial Universitat de Lleida

Para explicar el funcionamiento de iptables introduciremos los siguientes términos, necesarios para comprender su semántica

Son un medio efectivo de protección de sistemas o redes locales contra amenazas de sistemas de redes tales como LAN's WAN s o el InterNet.

Sesión 1 Unidad 5 Desarrollo de Software Libre I. IPTABLES (Firewall)

#### Reglas para encontrar puertos dinamicos de escucha FTP ####

Firewall en GNU/Linux netfilter/iptables

Cortafuegos (Firewalls) en Linux con iptables

INGENIERÍA EN SISTEMAS Y TELECOMUNICACIONES ÉNFASIS EN ADMINISTRACIÓN DE REDES

Conozca sobre el funcionamiento de las IPTables Forward. Aprenda como administrar de mejor forma las IPTables en SO GNU/Linux.

Introducción. Qué es iptables?

UNIDAD DIDACTICA 12 CONFIGURACIÓN DE IPTABLES EN GNU/LINUX

66.69 Criptografía y Seguridad Informática FIREWALL

Iptables, herramienta para controlar el tráfico de un servidor

Sistemas operativos -.- Configuración de Shorewall -.- andresmtzg.wordpress.com

Filtrado de paquetes y NAT

Que pretende controlar el FW

Guía de Configuración de Firewalls BarbedWire. Elaborada para la SSA en B.C.S. Marco Antonio Castro Liera

Firewall. Ahora vamos a inicial con la instalación en nuestro sistema operativo Debian GNU/Linux.

Charla de redes. Carlos Hernando ACM Facultad de Informática Universidad Politécnica de Madrid

Creando Túneles mediante SSH Tunneling con PUTTY

EJERCICIOS DE REDES. 1. Configurar por completo la red mostrada en el siguiente diagrama:

Cortafuegos y Linux. Iptables

Guía de Configuración de Firewalls con Scientific Linux 5.0

Curso avanzado de GNU/Linux

Práctica 5. Firewall y OpenVPN

Configuración de un Firewall

Firewalls: iptables. Pablo Suau Pérez (aka Siew) Marzo 2002

UD4 Actividad 3 IPTABLES. José Jiménez Arias. UD4 Actividad 3 IPTABLES

Control de acceso a los servicios II: Iptables.

Concepto de Seguridad de Alto Nivel: A lo largo del curso hemos establecido protecciones en los equipos y en la información que almacenan e

Firewall en Linux. Luis Eduardo Vivero Peña. Director Centro de Difusión del Software Libre Ingeniero de Proyectos Corporación Linux

IPTables: Filtrado de paquetes en Linux

8. Cortafuegos (Firewall).

iptables/netfilter Para ver la configuración actual de iptables, podemos usar varias opciones:

NAT: Linux, Windows y Cisco

Tema 6. Funciones y protocolos del nivel de red. Ejercicios propuestos (II).

Tema 3. Firewalls y Proxies con OpenBSD Y GNU/Linux

PRÁCTICA 5: USO DE CORTAFUEGOS

Apartado: BrutaliXL Versión: 3 Título: Cortafuegos - Iptables Fecha:

Gestión de Recursos y Seguridad en Redes Seguridad en la red con Open Source. Derman Zepeda Vega. dzepeda@unan.edu.ni

P r á c t i c a 1 5. C o n f i g u r a c i ó n d e f i r e w a l l m e d i a n t e i p t a b l e s

SEGURIDAD EN SISTEMAS INFORMÁTICOS

Seguridad Informática

2. Diferencias respecto a IPCHAINS

Firewalls, IPtables y Netfilter. Redes de Datos

John R. Correa Administrador de Seguridad de la Información.

Comandos TCP-IP para Windows

Prácticas de laboratorio de Telemática II

Administración y Gestión de Redes (Septiembre 2011).

Charla de redes. Carlos Hernando ACM Facultad de Informática Universidad Politécnica de Madrid

IP de uso general ACL de la configuración

Seguridad Linux: Server Hacking

Siendo un poco más específico, las características generales del framework Netfilter, tanto para IPv4 como para IPv6, son: [37]

LABORATORIO-02 Iptables 1/12. Crear tres máquinas CenOS7, con conexión entre las mismas a través de dos redes locales internas:

Administración y Gestión de Redes (Junio 2010).

Firewalls de Internet. Ricardo D. Pantazis

Filtrado de tráfico mediante listas de control de acceso. Introducción al enrutamiento y la conmutación en la empresa Capítulo 8

Como administrar el ancho de banda en una red con Windows X como servidor

Lo descargaste en la Web de Yoshiro. Curso de Iptables. Por: Maikel Stinga Ruiz Daniel Fernández Garrido

Comunicación de Datos I. Reenvío de Paquetes, VLSM, NAT, Construcción de Tablas de Ruteo

Cortafuegos en Linux con iptables

Primeros pasos con la imagen de Firewall pfsense

Ubuntu Server HOW TO : NFS EN ESTE SE REALIZA LO SIGUIENTE: En este how to se le va a enseñar como compartir datos en una Red Linux, usando NFS.

CONFIGURACIÓN DE NAT ESTATICO EN WINDOWS SERVER 2003

Parte III Implementación

Switch. Red de cuatro ordenadores interconectados a través de un switch.

Aprendiendo a usar IPTABLES desde cero.

Puente de red - Guía Ubuntu

Servidor Firewall. Patrick Hernández Cuamatzi. Maestría en Ingeniería de Software Redes Avanzadas

FIREWALL: ISA SERVER IPTABLES ROUTER CISCO POR: JUAN CAMILO GÓMEZ CATALINA TRUJILLO LAURA CANO FELIPE MONTOYA PROFESOR: FERNANDO QUINTERO GRUPO: 18566

7. Pruebas de funcionalidad

Laboratorio Redes 1. ITESM. Capa de Transporte, protocolos TCP y UDP y Wireshark

Configuración básica de una red

Control de acceso basado en el contexto (CBAC): Introducción y configuración

4.4. TCP/IP - Configuración Parte 2 SIRL

Ejercicios de Seguridad en Redes. Firewalls y túneles cifrados

ASA 7.x/PIX 6.x y Versiones Posteriores: Ejemplo de Configuración para Abrir o Bloquear los Puertos

Montaje de una red doméstica

Firewalls & NAT Practices

SQUID Configuraciones de proxy inverso y transparente

Administración y Gestión de Redes (Mayo 2012).

Transcripción:

ADMINISTRACION DE REDES # ifconfig etho 192.168.2.2 netmask 255.255.255.0 # route add default gw 192.168.1.1 eth0 IPTABLES Netfilter es un firewall que viene dentro del Kernel de Linux y manipula la información que pasa por la tarjeta de de red el cual usa un lenguaje de bajo nivel, razon por la cual existe IPTABLES. IPTABLES es un backend que permite generar las reglas y politicas del firewall y usa un lenguaje de nivel superior. Es importante recordar que la programación de IPTABLES es lineal y se debe de tener mucho cuidado con el orden de las lineas de programación. Reglas de filtrado: Este firewall trabaja en las cuatro primeras capa del modelo OSI. Los principales comandos de IPtables son los siguientes (argumentos de una orden): -A append : Agrega una regla a una cadena. -D delete : Borra una regla de una cadena especificada. -R replace : Reemplaza una regla. -I insert : Inserta una regla en lugar de una cadena. -L list : Muestra las reglas que le pasamos como argumento. -F flush : Borra todas las reglas de una cadena. -Z zero : Pone a cero todos los contadores de una cadena. -N new-chain : Permite al usuario crear su propia cadena. -X delete-chain : Borra la cadena especificada. -P policy : Explica al kernel qué hacer con los paquetes que no coincidan con ninguna regla. -E rename-chain : Cambia el orden de una cadena. Condiciones principales para Iptables: -p protocol : La regla se aplica a un protocolo. -s src source : La regla se aplica a una IP de origen. -d dst destination : La regla se aplica a una Ip de destino. -i in-interface : La regla de aplica a una interfaz de origen, como eth0. -o out-interface : La regla se aplica a una interfaz de destino. Condiciones TCP/UDP -sport source-port : Selecciona o excluye puertos de un determinado puerto de origen. -dport destination-port: Selecciona o excluye puertos de un determinado puerto de destino. Existe tres tipos de tablas : Filter, NAT y MANGLE Tipo de paquete de datos (tabla filter): Tipo INPUT Tipo OUTPUT : Paquetes que llegan a nuestra máquina : Paquetes que salen de nuestra máquina

Tipo FORWARD : Paquetes que pasan por nuestra máquina Hacer NAT (modificar IP origen y destino para conectar nuestra red a otra red o a Internet tabla NAT) # iptables -t nat -L PREROUTING POSTROUTING : Filtrar antes de enrutar : Filtrar después de enrutar Tabla MANGLE #iptables -t mangle -L La extensión state Permite acceder a la información relativa al estado de conexión de un paquete. El seguimento de conexiones le permite al núcleo llevar cuenta de todas las conexiones o sesiones lógicas de red y de este modo relacionar todos los paquetes que pueden llegar a formar parte de esa conexión. La traducción de dirección de red (NAT) depende de esta información para traducir todos los paquetes relacionados de la misma manera y iptables puede usar esta información para actuar como un cortafuegos basado en estado. El seguimiento de conexiones clasifica cada paquete en uno de los siguientes cuatro estados: NEW (nuevo) Intenta crear una nueva conexión. ESTABLISHED (establecido) El paquete forma parte de una conexión ya existente. RELATED (relacionado) El paquete ha iniciado una nueva conexión, pero esta asociado con una conexión existente, como una transferencia FTP o un error ICMP. El paquete está relacionado, aunque realmente no forma parte de una conexión existente. INVALID (inválido) El paquete ni es parte de una conexión existente ni intenta crear una nueva conexión. La comunicación de tres vías ocurre cuando cargamos un sitio o intentamos realizar una conexión y esta compuesto por los estados NEW, ESTABLISHED y RELATED. Para cargar el módulo es necesario utilizar la opción -m state. Sólo tiene una una opción que es: --state estado Hace coincidir el paquete si su estado es el espeficicado. El estado puede ser uno de entre NEW, ESTABLISHED, RELATED o INVALID o cualquier combinación de ellos separados por comas y sin espacios en blanco entre ellas. Un caso común sería que el primer paquete que el cortafuegos ve se clasificará como NEW, la respuesta se clasificaría como ESTABLISHED y un error ICMP haría que su estado fuese RELATED. Un paquete de error ICMP que no coincida con una conexión conocida será INVALID. El estado de la conexión es completamente independiente de cualquier estado TCP. Si su ordenador responde con un paquete SYN ACK para señalar una conexión TCP entrante nueva, la conexión TCP misma no se establece, pero la conexión a la que se le hace el seguimiento sí se establece. Este paquete estaría en el estado ESTABLISHED. La configuración por defecto de un firewall debería ser, traducido al español, bloquear todo excepto. Para configurar el firewall para que bloquee todas las conexiones debemos teclear:

iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP Con esto nos quedaremos sin internet, por lo que a continuación debemos empezar a crear reglas permisivas. Interfaz por la que entran (-i = input) o salen (-o = output) los paquetes eth0, eth1, wlan0, ppp0,... IP origen de los paquetes (-s = source) IP concreta, ej: 10.0.1.3 Rango de red, ej: 10.0.1.0/8 IP destino de los paquetes (-d = destination) IP concreta, ej: 10.0.1.3 Rango de red, ej: 10.0.1.0/8 Protocolo de los paquetes (-p = protocol) Tcp, udp, icmp... Practica IPTABLES Lo siguientes comandos son ejecutados en una terminal, necesitan ser ejecutados con privilegios de administrador, yo antepondré sudo a cada comando, ustedes pueden hacerlo igual o evitar usar sudo ejecutando los comandos directamente como root Normalmente en un firewall se denega todo acceso al sistema. # iptables -P INPUT DROP # iptables -P OUTPUT DROP P : Políticas Lo comprobamos con : Luego debemos permitir que nuestro propio ordenador tenga permiso para entrar datos: # iptables -A INPUT -i lo -j ACCEPT A : Adicionar regla Así como también aceptar paquetes de peticiones que se originen en nuestro ordenador: # iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # iptables -A OUTPUT -m state --state NEW,RELATED -j ACCEPT En teoria debemos de poder navegar sin problemas, pero que paso?

Debemos de revisar que paso con la comunicación de tres vías. Para eso editamos la linea en donde esta el error. --line-numbers # iptables -R OUTPUT 1 -m state --state NEW,ESTABLISHED -j ACCEPT Hasta aquí nuestro ordenador puede navegar sin problemas a internet, pero nadie de ningún otro entorno (LAN, internet, Wifi, etc) podrá acceder de ninguna forma a nuestro ordenador. Vamos a empezar ya a configurar iptables según nuestras necesidades. Para guardar nuestra configuración: # iptables -save > cortafuegos.txt # iptbales-restore < cortafuegos.txt Ahora vamos a usar como política permitir todo trafico y bloquear unas IP's (192.168.1.5 y 192.168.71.13). # iptables -P INPUT ACCEPT # iptables -P OUTPUT ACCEPT # iptables -A INPUT -s 192.168.1.5 -j DROP # iptables -A INPUT -s 192.114.71.13 -j DROP Realizar ping desde el computador con IP 192.168.1.5 Bloquear todo menos la 172.16.0.120 # iptables -P INPUT ACCEPT # iptables -P OUTPUT ACCEPT # iptables -A INPUT! -s 172.16.0.120 -j DROP Bloquear solicitud de ICMP Ping # iptables -P INPUT ACCEPT # iptables -P OUTPUT ACCEPT # iptables -A INPUT -p icmp --icmp-type echo-request -j DROP Ahora vamos a usar como política permitir todo trafico y bloquear el puerto SSH (22) # iptables -P INPUT ACCEPT

# iptables -P OUTPUT ACCEPT # iptables -A INPUT -p tcp --dport 22 -j DROP Permitiremos el acceso ssh (puerto 22) a solo una IP, con una política de denegación. # iptables -P INPUT DROP # iptables -P OUTPUT DROP # iptables -A INPUT -s 192.168.20.6 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT # iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT Restringir el número de conexiones concurrentes a un servidor por IP Podemos utilizar el módulo connlimit para crear estas restricciones. Permitir 3 conexiones SSH por cliente: # iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT Limitar el número de conexiones HTTP a 20: # iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 --connlimit-mask 24 -j DROP Donde: --connlimit-above 3 : Match if the number of existing connections is above 3. --connlimit-mask 24 : Group hosts using the prefix length. For IPv4, this must be a number between (including) 0 and 32. Eliminar o aceptar paquetes desde una MAC Address # iptables -A INPUT -m mac --mac-source 00:0F:EA:91:04:08 -j DROP ## *only accept traffic for TCP port # 22 from mac 00:0F:EA:91:04:07 * ## # iptables -A INPUT -p tcp --destination-port 22 -m mac --mac-source 00:0F:EA:91:04:07 -j ACCEPT MATCH Por saludo de las tres vias por MAC, Varios puertos Puertos del 1 al 5 iptables -A INPUT -p tcp dport 1:5 -j DROP Bloqueando puertos 21 53 y 10.000 iptables -A INPUT -m multiport -p tcp dport 21,53,1000 -j DROP

RSYSLOG # service rsyslog status Dando acceso a mi servidor privado: Yo no uso VirtualBox ni nada similar para virtualizar, yo tengo mi servidor privado virtualizado con Qemu+KVM el cual debe poder conectarse a mi laptop como tal, con las reglas de iptables que acabo de especificar arriba no podrá, es por eso que tengo obligatoriamente que darle permiso a la IP de mi servidor virtual para que pueda acceder a mi laptop: sudo iptables -A INPUT -i eth0 -p tcp -s 192.168.122.88 -j ACCEPT Vamos a detallar esta línea, es importante que ustedes entiendan qué significa cada parámetro, pues se van a repetir mucho de ahora en adelante: -A INPUT : Estoy diciendo que voy a declarar una regla para tráfico entrante -i virbr0 : Declaro que la interfaz por la cual aceptaré el tráfico no es etho (LAN) ni wlan0 (Wifi), digo específicamente que es mi interfaz virbr0, o sea, la interfaz de red virtual (interna) mediante la cual se comunica mi laptop con mi servidor virtual (y viceversa) -p tcp : Especifico el protocolo, los más usados son UDP y TCP, aquí en realidad bastaba con no poner esto pero es una costumbre especificar el tipo de protocolo a aceptar -s 192.168.122.88 : La source, fuente de los paquetes. O sea, la regla se refiere a paquetes que provengan específicamente desde la IP 192.168.122.88 -j ACCEPT : Ya aquí digo lo que quiero hacer con los paquetes que coincidan con lo antes dicho, en este caso aceptar. O sea y a modo de resumen, voy a aceptar paquetes que provengan desde la IP 192.168.122.88, pero en caso de que deseen entrar paquetes que vengan desde esa IP PERO! entran desde una interfaz que no sea virbr0, o sea, digamos que intentan entrar paquetes desde la IP 192.168.122.88 pero son de un ordenador en nuestra red Wifi, si ese es el caso, los paquetes serán rechazados. por qué? Porque claramente especificamos que sí, aceptamos paquetes desde 192.168.122.88 sí, pero y solo pero, también tienen que entrar desde la interfaz virbr0 (interfaz de red interna, virtual), si los paquetes provienen desde otra interfaz (LAN, RAS, Wifi, etc) entonces no serán aceptados. Especificando la interfaz como pueden apreciar podemos restringir aún más, podemos tener un mejor control sobre lo que entra (o no entra) en nuestro ordenador. Aceptando ping desde cualquier IP de la Wifi de casa: Desde algún otro ordenador que se conecte a la Wifi, si intenta hacer ping a mi laptop deseo permitirlo. motivo? La idea también es que en próximas semanas enlazar la PC de la casa de al lado a la red, así compartir información sería menos compleja, más fluida, cuando yo empiece a hacer pruebas para enlazar la desktop a la Wifi, necesitaré hacer ping a mi laptop para comprobar la conectividad, si mi laptop no me devuelve el ping puedo pensar que el AP está fallando, o que hubo algún error al acceder a la Wifi, es por ello que deseo permitir el ping. sudo iptables -A INPUT -i wlo1 -p icmp -s 192.168.1.0/24 -d 192.168.1.51 -j ACCEPT -A INPUT : Lo mismo que antes, hago referencia a tráfico entrante -i wlo1 : Similar a antes. En el caso anterior especifiqué la interfaz virtual, en este caso especifico otra interfaz, la de mi wifi: wlo1

-p icmp : Protocolo icmp, icmp = ping. O sea, no estoy permitiendo SSH ni nada similar, permito solamente ping (icmp) -s 192.168.1.0/24 : La fuente de los paquetes, o sea, siempre que los paquetes vengan desde una IP 192.168.1.? serán aceptados -d 192.168.1.51 : IP de destino, o sea, mi IP. -j ACCEPT : Indico qué hacer con los paquetes que coincidan con lo anterior, aceptar. O sea y para explicar esto de forma corrida, acepto que me hagan ping (protocolo icmp) cuyo destino sea específicamente mi IP, siempre y cuando vengan desde alguna IP como 192.168.1. pero además, no pueden provenir desde cualquier interfaz de red, tienen que entrar específicamente desde mi interfaz de red de Wifi (wlo1) Aceptar SSH solo para una IP: A veces necesito conectarme por SSH desde mi smartphone para controlar la laptop, es por ello que debo permitir el acceso SSH a mi laptop desde las IPs de mi Wifi, para ello: sudo iptables -A INPUT -i wlo1 -p tcp -s 192.168.1.0/24 -d 192.168.1.51 --dport 22 -j ACCEPT De esta línea lo único diferente o que merece destacarse es: dport 22 (puerto de SSH que uso) O sea, acepto intentos de conexión a mi laptop por el puerto 22, siempre que estos vengan desde alguna IP de mi wifi, tienen también que tener como destino específico mi IP y además venir por la interfaz wlo1, o sea, la de mi wifi (no la de la lan, etc) Permitiendo que vean un sitio web suyo: No es mi caso, pero si alguno de ustedes tiene un sitio web hosteado y no desean denegarle el acceso a nadie, o sea, que todos desde cualquier parte puedan acceder a ese sitio web, es mucho más simple de lo que pueden pensar: sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT O sea, aquí están permitiendo todo tráfico entrante (tcp) por el puerto 80. Como ven, no especifico desde qué IPs o red sí permito el acceso, al no especificar un rango de IP a permitir, iptables asume que deseo permitirle el acceso a todos los rangos de IPs existentes, o sea, a todo el mundo :)Firewall Iptables - Introducción. Acerca de Iptables y Netfilter. Netfilter es un conjunto de ganchos (Hooks, es decir, técnicas de programación que se emplean para crear cadenas de procedimientos como manejador) dentro del núcleo de GNU/Linux y que son utilizados para interceptar y manipular paquetes de red. El componente mejor conocido es el cortafuegos, el cual realiza procesos de filtración de paquetes. Los ganchos son también utilizados por un componente que se encarga del NAT (acrónimo de Network Address Translation o Traducción de dirección de red). Estos componentes son cargados como módulos del núcleo. Iptables es el nombre de la herramienta de espacio de usuario (User Space, es decir, área de memoria donde todas las aplicaciones, en modo de usuario, pueden ser intercambiadas hacia memoria virtual cuando sea necesario) a través de la cual los administradores crean reglas para cada filtrado de paquetes y módulos de NAT. Iptables es la herramienta estándar de todas las distribuciones modernas de GNU/Linux. URL: http://www.netfilter.org/

Procedimientos. Cadenas. Las cadenas pueden ser para tráfico entrante (INPUT), tráfico saliente (OUTPUT) o tráfico reenviado (FORWARD). Reglas de destino. Las reglas de destino pueden ser aceptar conexiones (ACCEPT), descartar conexiones (DROP), rechazar conexiones (REJECT), encaminamiento posterior (POSTROUTING), encaminamiento previo (PREROUTING), SNAT, NAT, entre otras. Políticas por defecto. Establecen cual es la acción a tomar por defecto ante cualquier tipo de conexión. La opción -P cambia una política para una cadena. En el siguiente ejemplo se descartan (DROP) todas las conexiones que ingresen (INPUT), todas las conexiones que se reenvíen (FORWARD) y todas las conexiones que salgan (OUTPUT), es decir, se descarta todo el tráfico que entre desde una red pública y el que trate de salir desde la red local. iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT Limpieza de reglas específicas. A fin de poder crear nuevas reglas, se deben borrar las existentes, para el tráfico entrante, tráfico reenviado y tráfico saliente así como el NAT. iptables -F INPUT iptables -F FORWARD iptables -F OUTPUT iptables -F -t nat Reglas específicas. Las opciones más comunes son: -A añade una cadena, la opción -i define una interfaz de tráfico entrante -o define una interfaz para trafico saliente -j establece una regla de destino del tráfico, que puede ser ACCEPT, DROP o REJECT. La -m define que se aplica la regla si hay una coincidencia específica --state define una lista separada por comas de distinto tipos de estados de las conexiones (INVALID, ESTABLISHED, NEW, RELATED). --to-source define que IP reportar al tráfico externo -s define trafico de origen -d define tráfico de destino --source-port define el puerto desde el que se origina la conexión --destination-port define el puerto hacia el que se dirige la conexión -t tabla a utilizar, pueden ser nat, filter, mangle o raw. Ejemplos de reglas.

Reenvío de paquetes desde una interfaz de red local (eth1) hacia una interfaz de red pública (eth0): iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT Aceptar reenviar los paquetes que son parte de conexiones existentes (ESTABLISHED) o relacionadas de tráfico entrante desde la interfaz eth1 para tráfico saliente por la interfaz eth0: iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT Permitir paquetes en el propio muro cortafuegos para tráfico saliente a través de la interfaz eth0 que son parte de conexiones existentes o relacionadas: iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT Permitir (ACCEPT) todo el tráfico entrante (INPUT) desde (-s) cualquier dirección (0/0) la red local (eth1) y desde el retorno del sistema (lo) hacia (-d) cualquier destino (0/0): iptables -A INPUT -i eth1 -s 0/0 -d 0/0 -j ACCEPT iptables -A INPUT -i lo -s 0/0 -d 0/0 -j ACCEPT Hacer (-j) SNAT para el tráfico saliente (-o) a tráves de la interfaz eth0 proveniente desde (-s) la red local (192.168.0.0/24) utilizando (--to-source) la dirección IP w.x.y.z. iptables -A POSTROUTING -t nat -s 192.168.0.0/24 -o eth0 -j SNAT --to-source x.y.z.c Descartar (DROP) todo el tráfico entrante (-i) desde la interfaz eth0 que trate de utilizar la dirección IP pública del servidor (w.x.y.z), alguna dirección IP de la red local (192.168.0.0/24) o la dirección IP del retorno del sistema (127.0.01) iptables -A INPUT -i eth0 -s w.x.y.x/32 -j DROP iptables -A INPUT -i eth0 -s 192.168.0.0/24 -j DROP iptables -A INPUT -i eth0 -s 127.0.0.0/8 -j DROP Aceptar (ACCEPT) todos los paquetes SYN (--syn) del protocolo TCP (-p tcp) para los puertos (--destinationport) de los protocolos SMTP (25), HTTP(80), HTTPS (443) y SSH (22):

iptables -A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 25 --syn -j ACCEPT iptables -A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 80 --syn -j ACCEPT iptables -A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 443 --syn -j ACCEPT iptables -A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 22 --syn -j ACCEPT Aceptar (ACCEPT) todos los paquetes SYN (--syn) del protocolo TCP (-tcp) para los puertos (--destination-port) del protocolos SMTP (25) en el servidor (w.x.y.z/32), desde (-s) cualquier lugar (0/0) hacia (-d) cualquier lugar (0/0). iptables -A INPUT -p tcp -s 0/0 -d w.x.y.z/32 --destination-port 25 --syn -j ACCEPT Aceptar (ACCEPT) todos los paquetes SYN (--syn) del protocolo TCP (-p tcp) para los puertos (--destinationport) de los protocolos POP3 (110), POP3S (995), IMAP (143) y IMAPS (993): iptables -A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 110 --syn -j ACCEPT iptables -A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 995 --syn -j ACCEPT iptables -A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 143 --syn -j ACCEPT iptables -A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 993 --syn -j ACCEPT Aceptar (ACCEPT) el tráfico entrante (-i) proveniente desde la interfaz eth1 cuando las conexiones se establezcan desde el puerto (--sport) 67 por protocolos (-p) TCP y UDP. iptables -A INPUT -i eth1 -p tcp --sport 68 --dport 67 -j ACCEPT iptables -A INPUT -i eth1 -p udp --sport 68 --dport 67 -j ACCEPT Aceptar (ACCEPT) conexiones de tráfico entrante (INPUT) por protocolo (-p) UDP cuando se establezcan desde (- s) el servidor DNS 200.33.145.217 desde el puerto (--source-port) 53 hacia (-d) cualquier destino (0/0): iptables -A INPUT -p udp -s 200.33.146.217/32 --source-port 53 -d 0/0 -j ACCEPT Cerrar accesos. Descartar (DROP) el tráfico entrante (INPUT) para el protocolo (-p) TCP hacia los puerto (--destination-port) de SSH (22) y Telnet (23): iptables -A INPUT -p tcp --destination-port 22 -j DROP iptables -A INPUT -p tcp --destination-port 23 -j DROP Descartar (DROP) todo tipo de conexiones de tráfico entrante (INPUT) desde (-s) la dirección IP a.b.c.d: iptables -A INPUT -s a.b.c.d -j DROP Rechazar (REJECT) conexiones hacia (OUTPUT) la dirección IP a.b.c.d desde la red local: iptables -A OUTPUT -d a.b.c.d -s 192.168.0.0/24 -j REJECT Eliminar reglas. En general se utiliza la misma regla, pero en lugar de utilizar -A (append), se utiliza -D (delete). Elininar la regla que descarta (DROP) todo tipo de conexiones de tráfico entrante (INPUT) desde (-s) la dirección IP a.b.c.d: iptables -D INPUT -s a.b.c.d -j DROP

Mostrar la lista de cadenas y reglas. Una vez cargadas todas las cadenas y reglas de iptables es posible visualizar éstas utilizando el mandato iptables con las opciones -n, para ver las listas en formato numérico, y -L, para solicitar la lista de éstas cadenas. iptables -nl Cuando no hay reglas ni cadenas cargadas, la salida debe devolver lo siguiente: Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Cuando hay cadenas presentes, la salida, suponiendo que se utilizarón los ejemplos de este documento, debe devolver algo similar a lo siguiente: Chain INPUT (policy DROP) target prot opt source destination ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 DROP all -- 192.168.1.64 0.0.0.0/0 DROP all -- 172.16.0.0/24 0.0.0.0/0 DROP all -- 127.0.0.0/8 0.0.0.0/0...