Está en la página 1de 33

NETFILTER/iptables

Firewall en GNU/Linux
Autor: Camilo Zapata
SENA 2010
NETFILTER/iptables
● Que es Netfilter?

● Netfiler es el framework del software de filtrado de


paquetes dentro del Kernel de linux (2.4 y 2.6
series).
● El software en este framework permite el filtrado de
paquetes, la traducción de direcciones (NAT) y la
manipulación de paquetes.
NETFILTER/iptables
● Arquitectura de Netfilter:

● Netfilter Base
● Iptables
– Filtrado de paquetes
– Nat
– Mangle
● Connection tracking
● Otras ...
NETFILTER/iptables
● Características principales:

● Filtrado de paquetes stateless


● Filtrado de paquetes statefull
● Todas las clases de NAT (SNAT, DNAT, NAPT)
● Múltiples aplicaciones de terceros
● Múltiples módulos que extienden la funcionalidad
NETFILTER/Iptables
● Que puede hacer con NETFILTER/iptables

● Construir firewalls basados en stateless y statefull


● Usar NAT y el enmascaramiento para compartir la
conexión a Internet en redes privadas.
● Usar NAT para implementar proxys transparentes
● Implementar junto a tc e iproute2 la construcción de
QoS y Políticas de enrutamiento complejas.
● Manipulación de paquetes
NETFILTER/iptables
● Qué es iptables?
● iptables es un programa de espacio de usuario
ejecutado desde la linea de comandos para definir
las reglas de filtrado de paquetes en los kernel 2.4
y 2.6
NETFILTER/iptables
● Las reglas de filtrado y de NAT se suben al
kernel a través de iptables
● Las reglas son subidas a tres tablas
– filter
– nat
– mangle
● Cada tabla es usada para un fin especifico
– filter (filtrado de paquetes)
– nat (traducción de direcciones)
– mangle (manipulación de paquetes)
NETFILTER/iptables
● Cada tabla tiene asociado una cantidad de
cadenas, que indicaran al kernel en que lugar
de su recorrido por el kernel un paquete debe
ser filtrado, traducido o manipulado.
NETFILTER/iptables
● Tabla filter
NETFILTER/iptables
● Las cadenas de la tabla filter son:
● INPUT, en donde se añaden reglas de filtrado para
paquetes con dirección a procesos locales del
Sistema Operativo.
● OUTPUT, en donde se añaden reglas de filtrado
para paquetes generados desde procesos locales
del Sistema Operativo.
● FORWARD, en donde se añaden reglas de filtrado
para paquetes que atraviesan el kernel de una red
a otra.
NETFILTER/iptables
NETFILTER/iptables
● Las cadenas de la tabla nat son:
● PREROUTING, cadena para reglas que realizan
operaciones de traducción de direcciones justo
antes de que se tome la decisión de enrutamiento.
● POSTROUTING, cadena para reglas que realizan
operaciones de traducción de direcciones antes de
que el paquete abandone el kernel.
● OUTPUT, la reglas de esta cadena son similares a
las reglas que se añaden en PREROUTING, pero
aquí son usadas para los paquetes que son
generados desde los procesos locales del Sistema
Operativo.
NETFILTER/iptables
● Tabla nat
NETFILTER/iptables
● NAT
● La traducción de direcciones de destino debe
implementarse antes de tomar la decisión de
encaminamiento, así el kernel podrá decidir cual es
la ruta final del paquete después del cambio de
dirección de destino.
● La traducción de direcciones de fuente debe
hacerse después de tomar la decisión de
encaminamiento, así netfilter tendrá la oportunidad
de aplicar reglas de filtrado a partir de la dirección
de origen original del paquete.
NETFILTER/iptables
NETFILTER/iptables

DEMO
NETFILTER/iptables
● Tabla mangle
NETFILTER/iptables
● Tabla mangle

● La tabla mangle esta reservada para la


manipulación de paquetes.
– TTL
– TOS
– MARK

NETFILTER/iptables
● Iptables

● Con iptables, la aplicación en el espacio de


usuario, podemos ingresar reglas a las cadenas de
cada tabla.
● La sintaxis de una acción con iptables varia según
el tipo de acción que queramos realizar, veamos las
mas comunes:
NETFILTER/iptables
● iptables
● Añadir una regla al final de la cadena de una tabla
especifica:

iptables [-t <table>] -A <chain> [matches ...] [target]

– La tabla por defecto es filter, si no se especifica ninguna


tabla.
– Los maches sera la forma de caracterizar una regla para
que coincida con el tipo de trafico que queremos
especificar.
– El target, es la acción o salto que queremos asignar a
esta regla.
NETFILTER/iptables
● iptables
● Política por defecto
– La política por defecto en una cadena define la acción
por defecto cuando un paquete que recorre la cadena no
coincide con ninguna regla en ella.
– Ejemplos:

iptables -P INPUT DROP


iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

Nota: en el ejemplo anterior la tabla es filter, las políticas por defecto


en DROP por lo general solo se encuentran en la tabla filter.
NETFILTER/iptables
● Ejemplos:

iptables -F
iptables -t nat -F
iptables -Z
iptables -t nat -Z

● vaciar (-F) las cadenas de la tabla filter y la tabla nat


● Limpiar contadores (-Z) en la tabla filter y la tabla nat
NETFILTER/iptables
● Ejemplos:

Iptables -A FORWARD -i eth0 -s 10.0.10.0/24 -p tcp --dport 80 -j ACCEPT

● regla al final de la cadena de FORWARD en la tabla filter.


● regla para los paquetes que entran por la interfaz eth0
● ... desde la red local 10.0.10.0/24
● ... para paquetes con destino una conexión tcp a un puerto
80
● Acción: Aceptar el tráfico
NETFILTER/iptables
● Ejemplos:

iptables -t nat -A POSTROUTING -o eth1 -s 10.0.10.0/24 -j MASQUERADE

● Regla al final de la cadena POSTROUTING en la tabla


nat
● Para todos los paquetes de la red de origen
10.0.10.0/24
● ... y que salen por la interfaz eth1
● Acción: traducir la dirección de origen de los paquetes
a la dirección ip de la interfaz eth1
NETFILTER/iptables
● Matches comunes:

-p {tcp | udp | icmp | ...} # protocolo


-s {network | ip} # red ó ip de origen
-d {network | ip} # red ó ip de destino
-i <interface> # interfaz de entrada
-o <interface> # interfaz de salida
-f # paquete fragmentado
NETFILTER/iptables
● TCP matches
-p tcp --dport <port>
-p tcp --sport <port>
-p tcp --tcp-flags <FLAGS tcp>
● UDP matches
-p udp --dport <port>
-p udp --sport <port>
● ICMP matches
-p icmp --icmp-type <ICMP types>
NETFILTER/iptables
● targets and jumps

– ACCEPT # aceptar los paquetes


– DROP # ignorar los paquetes
– REJECT # rechazar los paquetes
– DNAT # destination NAT
– SNAT # traducción de dirección origen
– MASQUERADE # enmascaramiento de dirección
– REDIRECT # redirección de paquetes
– LOG # registro para log y monitoreo
– MARK # Marcado de paquetes
NETFILTER/iptables
● Maquina de estados
– La maquina de estados es una parte especial de
Netfilter/iptables que permite el seguimiento de
conexiones.
– Estados del seguimiento de conexión:
● NEW
● ESTABLISHED
● RELATED
● INVALID
– Existen partes especiales (generalmente en forma de
módulos) de netfilter para ejecutar las tareas de
seguimiento de conexión, conntrack.
NETFILTER/iptables
NETFILTER/iptables
● Firewall stateful

– En un firewall “con estados” se mantiene registros de las


conexiones para permitir su seguimiento.

– Es así como se realiza un diseño de reglas en donde


solo se habilitan explicitamente las reglas asociadas a
nuevas conexiones (NEW) y se añaden al final las reglas
con estados asociados (RELATED, ESTABLISHED) a las
respuestas de esas conexiones.
NETFILTER/iptables
● Firewall stateful

#!/bin/sh

iptables -F
iptables -t nat -F
iptables -Z
iptables -t nat -Z

iptables -P INPUT DROP


iptables -P OUTPUT DROP
iptables -P FORWARD DROP

iptables -A FORWARD -o eth1 -p tcp --dport 80 -j ACCEPT


iptables -A FORWARD -o eth1 -p icmp --icmp-type echo-request -j ACCEPT

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT


NETFILTER/iptables
● Firewall stateful
● Módulos conntrack
Es posible que para habilitar el seguimiento de
conexiones especiales en algunos protocolos, como el
ftp en modo pasivo, sea necesario habilitar el modulo
conntrack especifico para ese tipo de conexión
explicitamente:

modprobe nf_conntrack_ftp
NETFILTER/iptables

DEMO

También podría gustarte