SlideShare una empresa de Scribd logo
netfilter & iptables
These presentations were originally prepared to train systems engineers in the support of the Integrated Secure Communications
System (iscs.sourceforge.net).
Copyright (c) 2003 John A. Sullivan III, Nexus Management. Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation;
with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section
entitled "GNU Free Documentation License".
netfilter
Es una estructura de soporte en el interior del kernel de Linux que provee
cinco puntos donde el procesamiento de los paquetes puede ser
interrumpido:

Pre-enrutamiento (pre-routing)

Entrada (input)

Re-envío (forward)

Output (salida)

Post-enrutamiento (post-routing)
iptables

Usa la estrucutura de soporte netfilter para inspeccionar y alterar paquetes

Tiene tres tablas principales

nat – altera los campos de dirección de origen/destino

mangle – altera los otros campos, por ejemplo, el campo TOS (Type of
Service)

filter – no altera ningún campo, es solo para inspección

Todas las tablas anteriores pueden contener cadenas de usuario
iptables & netfilter
PRE

connection tracking

mangle

nat (dst)

(qdisc)
[ROUTE] FWD POST
IN OUT

mangle

filter

connection tracking

mangle

nat (src)

filter

connection tracking

mangle

connection tracking

mangle

nat (dst)
[ROUTE]
recorrido de los paquetes
¿Qué son las cadenas?

Las cadenas son conjuntos de reglas que pueden actuar sobre un paquete

Las reglas pueden inspeccionar, alterar o tomar decisiones sobre un
paquete

Las reglas son procesadas secuencialmente hasta que se encuentra una
regla que ACEPTA o BLOQUEA el paquete

Los paquetes pueden ser procesados por varias reglas

Una regla puede “decirle” a un paquete que “salte” hacia otra cadena

La POLITICA de la cadena se aplica si no hay alguna regla dentro de ella
que ACEPTE o BLOQUEE el paquete
Cadenas definidas por el
usuario

Las cadenas definidas por el usuario pueden ser creadas (o borradas)
dinámicamente

NO pueden establecerse POLITICAS en ellas
Cadenas inter-construidas

Tres cadenas inter-construidas en la tabla nat:

PREROUTING (DNAT)

POSTROUTING (SNAT) – mapeo de puertos, redirección

OUTPUT – para el tráfico generado por el muro de fuego

Dos cadenas inter-construidas en la tabla mangle:

PREROUTING – cambios en las cabeceras de los paquetes entrantes

OUTPUT – cambios en las cabeceras de los paquetes generados por el firewall

Tres cadenas inter-construidas en la tabla filter:

INPUT – paquetes destinados al dispositivo

OUTPUT – paquetes originados en el dispositivo

FORWARD – paquetes siendo enrutados por el dispositivo
Procesamiento dentro de las
cadenas
-t nat (tabla) -t filter (tabla) -t nat (tabla)
PREROUTING (cadena)
regla 1
regla 2
regla 3
POLITICA
bit bucket
ACEPTAR
INPUT (cadena)
regla 1
regla 2
POLITICA
OUTPUT (cadena)
regla 1
regla 2
POLITICA
FORWARD (cadena)
regla 1
regla 2
POLITICA
bit bucket
BLOQUEAR
bit bucket
bit bucket
bit bucket
BLOQUEAR
BLOQUEAR
BLOQUEAR
POSTROUTING (cadena)
regla 1
regla 2
regla 3
POLITICA
A
C
E
P
T
A
R
ACEPTAR
BLOQUEAR

Una regla puede hacer “saltar” un paquete hacia otra cadena

Si el paquete no es ACEPTADO o BLOQUEADO en la nueva cadena, el
paquete RETORNA a la cadena original a la siguiente regla después del
salto

El comando RETURN (mejor dicho el “destino” -target) devuelve el
paquete a la cadena original sin atravesar las reglas restantes de la nueva
cadena

Los saltos anidados están permitidos

Los saltos entre cadenas son esenciales para implementar políticas de
seguridad
Saltos entre cadenas
Saltos entre cadenas
FORWARD Cadena A Cadena B Cadena C
regla 1
regla 2
regla 3 -j A
regla 4
regla 5
regla 6
POLITICA
regla 1
regla 2
regla 3
regla 4 -j B
regla 5
regla 1
regla 2 -j C
regla 3
regla 4
regla 1
regla 2
regla 3
Regla 4 -j RETURN
regla 5
regla 6
regla 7

netfilter, iptables, tabla, cadena

Criterio (match): se refiere a un criterio de selección como:

Dirección de origen

Protocolo IP

Puerto destino

Interfaz de red

Destino (target): qué hacer si los criterios son encontrados, por ejemplo:
saltar a otra cadena, registrar, ACEPTAR o BLOQUEAR. De hecho, es la
acción a realizar sobre el paquete

Acción (action): qué hacer con la regla o cadena (NO con el paquete), por
ejemplo: insertar, agregar, borrar, listar, reemplazar, limpiar, poner en cero
los contadores, crear, establecer políticas
Vocabulario
iptables -t tabla -Acción cadena criterios -j Destino -Opciones

-t tabla, por defecto hace referencia a la tabla filter. No es necesario a
menos que se esté creando una regla para la tabla nat o mangle (use
minúsculas).

Action, una sola letra mayúscula: A(ppend) / Agregar, I(nsert) / Insertar,
D(elete) / Borrar, R(eplace) / Reemplazar

-j Destino, establece el destino del paquete si cumple los criterios

Opciones, algunos destinos toman opciones, como el puerto a ser mapeado
en una redirección o la dirección de origen a ser usada in SNAT
Sintaxis

iptables -A OUTPUT -p 17 –dport 53 -j ACCEPT

iptables -I INPUT 3 -p 6 –dport 22 -j ACCEPT

iptables -D FORWARD -p 1 –icmp-type 8 -j LOG

iptables -A FORWARD -i ipsec+ -j AccesosVPN

iptables -t nat -L POSTROUTING -v

iptables -t nat -I PREROUTING 1 -s $lan -p 6 –dport 80 
-j REDIRECT –to-ports 3128

iptables -A FORWARD -d $lan -p 6 –dport 1024:65535 
-m state –state ESTABLISHED,RELATED -j ACCEPT
Ejemplos

A -append/agregar- agrega una regla al final de la cadena. No siempre es el
mejo lugar para colocar una regla porque las reglas son evaluadas
secuencialmente.

I -insert/insertar- requiere un parámetro que indique en qué posición
insertar la regla dentro de la cadena. Por ejemplo:
iptables -I OUTPUT 3 -p 17 –dport 53 -j ACCEPT

D -delete/borrar- la acción de borrar tiene dos formas:

Especificar el número de regla a borrar: iptables -D OUTPUT 3

Especificar la regla completa:
iptables -D OUTPUT -p 17 –dport 35 -j ACCEPT
borrará la regla no importando en cual posición se encuentre dentro de la
cadena OUTPUT
Acciones

R -replace/reemplazar- requiere un parámetro para indicar qué regla
reemplazar, por ejemplo:
iptables -R INPUT 4 -p 6 –dport 22 -m state –state NEW -j ACCEPT
Reemplaza la cuarta regla en la cadena INPUT para permitir el
establecimiento de sesión SSH

L -list/listar- lista las reglas existentes en una cadena, por ejemplo:
iptables -L INPUT -v

F -flush/borrar- borra todas las reglas existentes en una cadena
iptables -t nat -F POSTROUTING

Z -zero counters- pone en cero los contadores de bytes/paquetes en la
cadena especificada o en todas si no se especifica alguna
iptables -Z FORWARD
Acciones

N – new/nueva- Crea una nueva regla con el nombre dado
iptables -N Paquetes_UDP
X – delete/borrar- Borra las cadena definida por el usuario especificada.
Observaciones:

No es posible borrar ninguna de las cadenas inter-construidas

No se puede borrar una cadena si hay otra haciendo referencia a ella

Ejemplo: iptables -X Paquetes_UDP

E -rename/renombrar- Cambia el nombre de la cadena especificada. Por
ejemplo: iptables -R Paquetes_UDP PaquetesUDP
Acciones

Los criterios principales están precedidos por un guión “-”

Los criterios de segundo nivel están precedidos por dos guiones “--”

El protocolo puede ser un criterio principal con criterios de segundo nivel
como puerto destino, puerto origen o tipo icmp

Ejemplos:

iptables -A FORWARD -p 6 –dport 23 -j DROP

iptables -I FORWARD -p 1 –icmp-type 8 
-m state –state NEW -j ACCEPT

Los criterios pueden ser negados usando el caracter signo de admiración
“!”, por ejemplo:
iptables -A INPUT -s ! 192.168.1.0/24 -j DROP
bloquearía todos los paquetes que no provengan de la red 192.168.1.0/24
Criterios

Los criterios genéricos pueden ser comparados contra cualquier tipo de
paquete. El tipo ICMP solo aplica a paquetes ICMP; el criterio puerto
destino solo aplica a paquetes UDP o TCP. El criterio dirección de origen
aplica a cualquier tipo de paquetes y por ello es un criterio genérico.

Los criterios genéricos son los criterios principales en la diapositiva
anterior
Criterios genéricos

-s (Dirección de origen). Se asume un host a menos que una máscara de
sub-red sea especificada.

La máscara puede ser especificada por la cantidad de bits o en notación
decimal

Ejemplos:

iptables -R FORWARD 5 -s 172.16.0.0/255.240.0.0

iptables -A INPUT -s 192.168.0.0/16 -j VPN

-d (Dirección de destino). Las mismas reglas aplican
Criterios genéricos

-p (Protocolo). El protocolo de Internet (IP) del paquete.

Puede ser especificado con el número de protocolo, por ejemplo:

iptables -D OUTPUT -p 1 -j DROP

Puede ser especificado con el nombre del protocolo siempre que el
nombre del protocolo esté listado en /etc/protocols.

Puede aceptar una lista separada por comas, por ejemplo:

iptables -I FORWARD 1 -p 50,51,57 -j ACCEPT

-f (Fragmentos). Este criterio discrimina los fragmentos en una cadena.

Los fragmentos no encontraran correspondencias en reglas basadas en
puertos

Balance entre seguridad y usabilidad – los fragmentos podrían aparecer
en una VPN
Criterios genéricos

-i (interfaz de entrada). Para discriminar solo los paquetes entrantes en la
interfaz.

Puede ser usado donde tiene sentido usarse, en las cadenas que tienen
una interfaz de entrada y en sus referencias, nombrando: INPUT,
FORWARD, PREROUTING (por ejemplo: OUTPUT no tiene interfaz
de entrada)

iptables -A INPUT -i eth0 -j DROP

“+” es un comodín.

iptables -A FORWARD -i ipsec+ -j ACCEPT
Criterios genéricos

-o (interfaz de salida). Para discriminar solo los paquetes salientes en la
interfaz.

Puede ser usado donde tiene sentido usarse, en las cadenas que tienen
una interfaz de entrada y en sus referencias, nombrando: OUTPUT,
FORWARD, POSTROUTING (por ejemplo: INPUT no tiene interfaz de
salida)

iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

“+” es un comodín.

iptables -A OUTPUT -o eth+ -p 17 --dport 53 -j ACCEPT
Criterios genéricos

Los criterios implícitos se habilitan como resultado de asociaciones a
criterios implícitos o criterios explícitos

Son los referidos como criterios de segundo nivel

Ejemplos son: tcp, udp, icmp y state
Criterios genéricos

--sport (Puerto origen).

Puede ser especificado por un número:
iptables -A INPUT -p 6 --sport 22 -j ACCEPT

Puede ser especificado por un nombre si el puerto está listado en
/etc/services. Es menos eficiente porque requiere la resolución del
nombre cada vez.

Puede especificarse un rango con “:”
:1023 «-- Todos los puertos arriba de 1023
1024: «-- Todos los puertos desde 1024 hasta 65535
Criterios TCP

--dport (Puerto destino). Aplica lo mismo que se ha dicho para --sport

--tcp-flags (Banderas TCP). SYN,ACK,PSH,FIN,RST,URG

Toma una lista separada por comas

Puede tomar la palabra ALL para verificar todas las banderas

Puede tomar la palabra NONE para verificar si no se han establecido
banderas

--tcp-options Discrimina según el campo opciones de los paquetes TCP
Criterios TCP

--sport (Puerto origen). Igual que para TCP

--dport (Puerto destino). Igual que para TCP
Criterios UDP

--icmp-type Discrimina según el campo tipo icmp de los paquetes ICMP
Criterios ICMP

Todos, excepto el criterio dirección MAC, empiezan con -m
iptables -A ACCION CADENA -m nombre --parametro nombre

--mac-source

Toma un argumento de la forma XX:XX:XX:XX:XX:XX

Valido solo en INPUT, FORWARD, PREROUTING y cadenas
relacionadas
Criterios explícitos

-m limit --limit

Discrimina solo sobre el límite especificado

La especificación puede ser: /second, /minute, /hour, /day

Si es negado actúa como una frontera si es negado, es decir, empieza a
discriminar una vez que el límite es alcanzado
iptables -A INPUT -p 1 --icmp-type 8 ! limit --limit 10/second -j LOG
Criterios explícitos

-m limit --limit-burst

Se usa con -m limit --limit

Toma un parámetro entero que especifica cuántos paquetes están
permitidos a “salir” antes de que el parámetro empiece a contar

Recargado en uno por cada medida de tiempo límite durante el cual
ningún paquete será recibido
iptables -I INPUT 1 -p 6 --tcp-flags SYN -m limit --limit 30/s --limit-burst 50 -j ACCEPT
iptables -I INPUT 1 -p 6 --tcp-flags SYN -m limit --limit 30/s --limit-burst 50 -j Evaluar
Criterios explícitos

-m multiport --source-port

Usada para incluir múltiples puertos no contiguos en una sola regla

Toma una lista separada por comas hasta un máximo de 15 puertos
iptables -R FORWARD 5 -p 6 -m multiport

-m multiport --destination-port

Lo mismo que para --source-port, claro para puertos destino.

-m multiport --port

Valido para puertos origen o destino
Criterios explícitos

-m owner --uid

-m owner --gid

-m owner --pid

-m owner --sid

Solo son válidos en la cadena OUTPUT

Discrima según el usuario, grupo, identificador del proceso o sesión que
creo el paquete

Toma como argumento un número entero
Criterios explícitos

-m tos --tos

Discrimina según los bits de “Tipo de servicio” en las cabeceras TCP del
paquete

Toma un número hexadecimal como argumento para representar los bits
“Tipo de servicio”

-m ttl --ttl

Discrimina según el campo “Time to Live” de la cabecera IP del paquete

Toma un número entero como argumento
Criterios explícitos

-m state --state

La “máquina” de inspección de estado

Toma como argumento una lista de estados separada por comas

Esta característica usa muchos módulos de soporte aparte de los criterios
básicos, por ejemplo: connection tracking, FTP helper, IRC helper

Si el módulo no fue incluido en el kernel y el kernel no está configurado
para cargar los módulos necesarios (por razones de seguridad), estos
módulos deben ser explícitamente cargados
Criterios explícitos

-m state --state NEW

Usado cuando una conexión es establecida
iptables -A FORWARD -s $lan -p 6 
-m multiport --destination-port 80,443 
-m state --state NEW -j ACCEPT

Corresponde con nuevos paquetes aun cuando no tengan el bit SYN
establecido
Criterios explícitos

-m state --state ESTABLISHED

Corresponde con aquellos paquetes que pertenecen a una sesión
previamente establecida
iptables -A FORWARD -s $lan -p 6 
-m multiport --destination-port 80,443 
-m state --state ESTABLISHED -j ACCEPT
Criterios explícitos

-m state --state RELATED

Corresponde a aquellos paquetes que no llevan datos sobre la sesión
pero son pertinente a ella, por ejemplo: un flujo de datos en respuesta a
un comando FTP o a un mensaje ICMP de error.
iptables -A FORWAR -p 1 --icmp-type 8 
-m state --state RELATED -j ACCEPT

Usualmente se incluye en la misma regla que incluye ESTABLISHED
iptables -A FORWARD -d $lan 
-m state --state ESTABLISHED,RELATED -j ACCEPT
Criterios explícitos

-m state --state INVALID

Corresponde con paquetes que no se “ve” que pertenezcan a alguna
conexión

Puede ser un problema interno, por ejemplo: falta de memoria

Puede ser un paquete dañado

Puede ser un ataque

Creo que la regla incluye paquetes como el denominado Crhistmas tree
(árbol de Navidad) pero no estoy seguro así debemos crear reglas
específicas
Criterios explícitos
Resumen
Sintáxis básica
iptables -t tabla -A ACTION CADENA CRITERIOS -j TARGET OPTION
Acciones

-X

-Z

-P

-L

-N

-A

-I

-D

-E

-F

-R
Criterios comunes
-s -d
-i -o
-p --dport --sport --icmp-type --tcp-flags
-m multiport --source-port --destionation-port
-m limit --limit
-m limit --limit-burst
-m state --state ESTABLISHED, RELATED

Cree reglas con acciones y criterios en su sistema

Use destinos simples como ACCEPT y DROP
Práctica

El destino es hacia donde va el paquete cuando los criterios en la regla han
coincidido

Los destinos pueden ser más que solo ACCEPT o DROP

Los destinos no necesariamente impiden que el paquete siga atravesando
las cadenas

Los destinos son precedidos por una -j
Destinos (targets)

-j ACCEPT

El paquete no será procesado por las siguientes reglas en la tabla

Un paquete aceptado en una tabla puede ser bloqueado en otra

mangle, nat(PREROUTING), filter, nat(POSTROUTING)

Un paquete aceptado en la tabla filter puede ser bloqueado en la tabla
nat
Destinos (targets)

-j DROP

Cesa el procesamiento del paquete en todas las tablas

No siempre es una buena idea:

REJECT podría ser más confuso a un atacante

REJECT podría ser más amable con los dispositivos que responden
más rápidamente al mensaje Destino/puerto inalcanzable como smtp lo
que evitaría re-intentos y tiempos de espera
Destinos (targets)

-j QUEUE

Encola el paquete para procesamiento posterior por otra aplicación

-j RETURN

Retorna el procesamiento de las reglas a la cadena que hizo la llamada
Destinos (targets)

-j LOG

Registra los paquetes que cumplen con los criterios al archivo syslog

Puede tener diferentes opciones:

--log-level nivel (por ejemplo: --log-level debug)

--log-prefix “prefix” agrega “prefix” al inicio de todos los mensajes
registrados

--log-tcp-sequence /incluye los números de secuencia tcp

--log-tcp-options /incluye las opciones tcp en el registro

--log-ip-options /incluye las opciones ip en el registro
Destinos (targets)

-j MARK --set-mark <entero>

Establecer la marca para el procesamiento del paquete en esta
computadora
Destinos (targets)

-j REJECT responde a la estación origen y luego bloquea el paquete. Tiene tres
opciones

--reject-with- que tiene seis opciones:

icmp-net-unreachable

icmp-host-unreachable

icmp-port-unreachable (opción por defecto)

icmp-proto-unreachable

icmp-net-prohibited

icmp-host-prohibited

--echo-reply Solo útil en respuesta a peticiones de eco (pings), devuelve un
paquete de respuesta a la petición de eco.

--tcp-reset Solo para paquetes tcp. Usado para bloquear pruebas de identidad
Destinos (targets)

-j TOS --set-tos <hexadecimal>

Solo usado en la tabla mangle

Establece los bits de Tipo de Servicio

Toma como argumento un número hexadecimal para expresar el estado
de los bits de Tipo de Servicio
Destinos (targets)

-j DNAT --to-destination x.x.x.x-x.x.x.x:port-port

Igual sintaxis que SNAT pero con una función completamente diferente

Cambia la dirección de destino del paquete a la dirección especificada en
el argumento

Puede ser usado en la cadena OUTPUT y en la cadena POSTROUTING

Puede tomar una única dirección o un rango como argumento

Típicamente usado para tráfico entrante, por ejemplo, hacia un host
protegido dentro de una DMZ o dentro de una red privada
Destinos (targets)

-j MASQUERADE --to-ports port-port

Mismo efecto que SNAT pero manejado de forma diferente

Consulta la dirección ip de la interfaz pública la cual re-emplazará la
dirección de origen

Agrega latencia a las búsquedas

Usado con la dirección ip pública es desconocida como en la conexiones
telefónicas y cuando la dirección pública es obtenida por DHCP
Destinos (targets)

-j TTL re-escribe los bits TTL de la cabecera ip

Tiene tres opciones:

--ttl-set <entero> estable el campo TTL al entero especificado

--ttl-dec <entero> decrementa el valor del campo ttl en la cantidad
especificada

--ttl-int <entero> incrementa el valor del campo ttl. Una manera clara de
esconder el firewall de los trazados de rutas
Destinos (targets)

-j ULOG

Provee sofisticadas facilidades para registro en el espacio de usuario
Destinos (targets)

Se refiere a la acción por defecto en las cadenas inter-construídas si el
paquete al atravesar la cadena no encuentra un destino dentro de las reglas
iptables -t tabla -P CADENA POLITICA

Por ejemplo:
iptables -P INPUT DROP
Políticas en iptables
Sintáxis básica
iptables -t tabla -A ACTION CADENA CRITERIOS -j TARGET OPTION

REJECT

LOG

SNAT

DNAT

REDIRECT

RETURN

DROP

ACCEPT
Destinos comunes

en el directorio /proc muchas configuraciones del sistema, muchas
pertinentes a la seguridad de la pila ip

la orden sysctl provee acceso a los archivos de configuración

sysctl -a lista las variables (use grep)

sysctl -w <parámetro> <valor> escribe los valores de configuración en el
archivo apropiado del directorio /proc

Los valores pueden ser directamente manipulados:
echo 1 > /proc/sys/net/ipv4/ip_forward

No conozco la portabilidad de la configuración mediante sysctl. ¿Es
específico a RedHat / Fedora?
Seguridad a nivel del kernel

/etc/sysctl.conf

Establece parámetros sysctl

Es llamado frecuentemente por los scripts rc (de RedHat) y
frecuentemente sobreescriben los cambios hechos manualmente

¿Las configuraciones en /proc toman efecto pronto para considerarlas un
mecanismo válido de seguridad?
Archivos importantes en el directorio
/proc

/proc/sys/net/ipv4/conf/default/rp_filter

Equivalente al párametro sysctl net.ipv4.conf.all.rp_filter

Por defecto controla todas las interfaces

Cada interfaz tiene un directorio por separado en el directorio conf/

Control anti-spoof pobremente documentado

Los valores que puede tomar son: 0 (Deshabilitado), 1 (Supervisar redes
directamente conectadas) ó 2 (Supervisar todas las redes (?))

Interfiere con las conexiones VPN a la pasarela

Debe estar deshabilitado a menos que se use iproute2

Desplaza el control anti-spoof al firewall si el parámetro sysctl rp_filter
está deshabilitado
Archivos importantes en el directorio
/proc

/proc/sys/net/ipv4/conf/default/accept_source_route

Booleano: 0 ó 1 para deshabilitar/habilitar

Determina cuál interfaz acepta paquetes SRB (Source Route Bridging)

Debe estar deshabilitado para impedir el envío de paquetes SRB
Archivos importantes en el directorio
/proc

/proc/sys/net/ipv4/conf/default/accept_redirects

Booleano: 0 ó 1 para deshabilitar/habilitar

Determina cuál interfaz recibe mensajes icpm de redirección

Bueno para optimizar tráfico de los clientes pero peligroso para los
firewalls

Debe estar deshabilitado para evitar el desvío de tráfico
Archivos importantes en el directorio
/proc

/proc/sys/net/ipv4/conf/default/proxy_arp

Booleano: 0 ó 1 para deshabilitar/habilitar

Debe estar habilitado solo en las interfaces que lo necesitan

Determina que interfaz responde a paquetes ARP sobre direcciones IP
distintas de la suya

No es necesario para hacer NAT

Podría ser necesario si usuarios de acceso remoto a redes privadas
virtuales usan direcciones virtuales en una red interna directamente
conectada a la pasarela
Archivos importantes en el directorio
/proc

/etc/init.d/iptables script para tratar iptables como un daemon

/etc/sysconfig/iptables Contiene las reglas del firewall

iptables save Escribe las reglas en memoria a /etc/sysconfig/iptables
SEA CUIDADOSO - Las reglas en /etc/sysconfig/iptables se cargan al
inicio del sistema

Otras reglas podrían ser cargadas desde otros scripts

¿Cuáles deben ser las reglas a cargarse al inicio del sistema?
Ordenes y archivos pertinentes

Use tcpdump para “ver” si los paquetes están entrando (o saliendo) por las
interfaces

tcpdump -l -n -i <interface>

Opciones importantes en tcpdump:

host or net w.x.y.z

ether host xx:xx:xx:xx:xx:xx

ip protocol <protocolo>

port

LEA la página del manual para tcpdump

¿Se instalará tcpdump en los firewalls?
Soluciones de problemas en iptables

Use LOG para “ver” que está pasando internamente en el firewall

Coloque una regla de registro enfrente de la regla que cree que debe
procesar el paquete para saber si el paquete llega a esa regla

Coloque una regla de registro después de la regla que cree que debe
procesar el paquete para saber si el paquete atraviesa esa regla

Coloque una regla de registro como primera regla en la cadena para “ver”
si el paquete llega a esa cadena

Coloque una regla de registro como última regla en la cadena para “ver” si
el paquete atraviesa esa cadena
Soluciones de problemas en iptables

¿Qué contiene el directorio /proc ?

¿Qué binario accede a los parámetros que guardan los archivos en el
directorio /proc ? ¿Por qué son importantes esas configuraciones?

¿Qué hay archivos en el directorio /proc son particularmente importantes y
por qué?

¿Qué binario se utiliza para inspeccionar los paquetes entrando (o
saliendo) de las interfaces? ¿Cuáles son las opciones importantes de ese
binario?

¿Cómo se usa el destino LOG para solucionar problemas en firewall?
Resumen

Este documento no cubre todos los aspectos de iptables

Aprenda más de lo que le he dado

No soy un experto
Comentarios finales

Explore sysctl

Explore tcpdump

Explore las capacidades de registro (logging) en iptables
Práctica final

Más contenido relacionado

PPT
firewall
PDF
Iptables
PDF
Linux ud12 - configuracion de iptables en linux
DOC
Manual Iptables
PDF
IPTABLES ¿Que es? y ¿Como Funciona?
PPTX
Ipchains emilio cano
PDF
Firewall de linux.
PDF
Iptables linux
firewall
Iptables
Linux ud12 - configuracion de iptables en linux
Manual Iptables
IPTABLES ¿Que es? y ¿Como Funciona?
Ipchains emilio cano
Firewall de linux.
Iptables linux

La actualidad más candente (17)

PDF
Electrónica digital: Diseño de circuitos con VHDL
PPTX
Presentacion de seguridad de la redes
PPT
Resumen IPTABLES
ODP
Asignación de Polos y Predictor de Smith
PDF
Guion%20practica%206%20 vpn
PDF
DOC
Practica 1 eigrp
PDF
Listasde Acceso
PPS
DOC
Cómo funcionan las acl en cisco
PDF
Acl seguridad-ip
PDF
Configuración de acl ip utilizadas frecuentemente
DOCX
Postgres trigger
PPTX
Acl extendida
PPTX
4. listas de control de acceso
PPTX
Estructura .COM
DOCX
Reglas acl
Electrónica digital: Diseño de circuitos con VHDL
Presentacion de seguridad de la redes
Resumen IPTABLES
Asignación de Polos y Predictor de Smith
Guion%20practica%206%20 vpn
Practica 1 eigrp
Listasde Acceso
Cómo funcionan las acl en cisco
Acl seguridad-ip
Configuración de acl ip utilizadas frecuentemente
Postgres trigger
Acl extendida
4. listas de control de acceso
Estructura .COM
Reglas acl
Publicidad

Similar a netfilter iptables (20)

PPT
firewall
PPTX
Tipos de Malware
PPT
Resumen iptables- 10 comandos mas usados de iptables
PPTX
PPT
Firewall
PDF
Apuntes iptables gerardo
PPTX
Seguridad de las redes
PPTX
Seguridades de redes
PPT
PPTX
Unidad iii seguridad de las redes
ODP
Protección perimetral. Fundamentos de firewalls y redes privadas virtuales
ODP
Protección perimetral. Fundamentos de firewalls y redes privadas virtuales
PDF
Configuración básica de Firewallcon IPtables.pdf
PDF
Firewall y nat
PPTX
Actividad 3 de redes del computador
PPTX
Firewalls
PPTX
Firewalls
PPTX
Firewalls
PPTX
Unidad III Seguridad de las Redes
PPTX
Unidad iii redes presentacion
firewall
Tipos de Malware
Resumen iptables- 10 comandos mas usados de iptables
Firewall
Apuntes iptables gerardo
Seguridad de las redes
Seguridades de redes
Unidad iii seguridad de las redes
Protección perimetral. Fundamentos de firewalls y redes privadas virtuales
Protección perimetral. Fundamentos de firewalls y redes privadas virtuales
Configuración básica de Firewallcon IPtables.pdf
Firewall y nat
Actividad 3 de redes del computador
Firewalls
Firewalls
Firewalls
Unidad III Seguridad de las Redes
Unidad iii redes presentacion
Publicidad

Último (6)

PPTX
Derechos_de_Autor_y_Creative_Commons.pptx
PPTX
Conceptos basicos de Base de Datos y sus propiedades
DOCX
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
PDF
Su punto de partida en la IA: Microsoft 365 Copilot Chat
PPTX
sistemas de informacion.................
PDF
AutoCAD Herramientas para el futuro, Juan Fandiño
Derechos_de_Autor_y_Creative_Commons.pptx
Conceptos basicos de Base de Datos y sus propiedades
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
Su punto de partida en la IA: Microsoft 365 Copilot Chat
sistemas de informacion.................
AutoCAD Herramientas para el futuro, Juan Fandiño

netfilter iptables

  • 1. netfilter & iptables These presentations were originally prepared to train systems engineers in the support of the Integrated Secure Communications System (iscs.sourceforge.net). Copyright (c) 2003 John A. Sullivan III, Nexus Management. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
  • 2. netfilter Es una estructura de soporte en el interior del kernel de Linux que provee cinco puntos donde el procesamiento de los paquetes puede ser interrumpido:  Pre-enrutamiento (pre-routing)  Entrada (input)  Re-envío (forward)  Output (salida)  Post-enrutamiento (post-routing)
  • 3. iptables  Usa la estrucutura de soporte netfilter para inspeccionar y alterar paquetes  Tiene tres tablas principales  nat – altera los campos de dirección de origen/destino  mangle – altera los otros campos, por ejemplo, el campo TOS (Type of Service)  filter – no altera ningún campo, es solo para inspección  Todas las tablas anteriores pueden contener cadenas de usuario
  • 4. iptables & netfilter PRE  connection tracking  mangle  nat (dst)  (qdisc) [ROUTE] FWD POST IN OUT  mangle  filter  connection tracking  mangle  nat (src)  filter  connection tracking  mangle  connection tracking  mangle  nat (dst) [ROUTE] recorrido de los paquetes
  • 5. ¿Qué son las cadenas?  Las cadenas son conjuntos de reglas que pueden actuar sobre un paquete  Las reglas pueden inspeccionar, alterar o tomar decisiones sobre un paquete  Las reglas son procesadas secuencialmente hasta que se encuentra una regla que ACEPTA o BLOQUEA el paquete  Los paquetes pueden ser procesados por varias reglas  Una regla puede “decirle” a un paquete que “salte” hacia otra cadena  La POLITICA de la cadena se aplica si no hay alguna regla dentro de ella que ACEPTE o BLOQUEE el paquete
  • 6. Cadenas definidas por el usuario  Las cadenas definidas por el usuario pueden ser creadas (o borradas) dinámicamente  NO pueden establecerse POLITICAS en ellas
  • 7. Cadenas inter-construidas  Tres cadenas inter-construidas en la tabla nat:  PREROUTING (DNAT)  POSTROUTING (SNAT) – mapeo de puertos, redirección  OUTPUT – para el tráfico generado por el muro de fuego  Dos cadenas inter-construidas en la tabla mangle:  PREROUTING – cambios en las cabeceras de los paquetes entrantes  OUTPUT – cambios en las cabeceras de los paquetes generados por el firewall  Tres cadenas inter-construidas en la tabla filter:  INPUT – paquetes destinados al dispositivo  OUTPUT – paquetes originados en el dispositivo  FORWARD – paquetes siendo enrutados por el dispositivo
  • 8. Procesamiento dentro de las cadenas -t nat (tabla) -t filter (tabla) -t nat (tabla) PREROUTING (cadena) regla 1 regla 2 regla 3 POLITICA bit bucket ACEPTAR INPUT (cadena) regla 1 regla 2 POLITICA OUTPUT (cadena) regla 1 regla 2 POLITICA FORWARD (cadena) regla 1 regla 2 POLITICA bit bucket BLOQUEAR bit bucket bit bucket bit bucket BLOQUEAR BLOQUEAR BLOQUEAR POSTROUTING (cadena) regla 1 regla 2 regla 3 POLITICA A C E P T A R ACEPTAR BLOQUEAR
  • 9.  Una regla puede hacer “saltar” un paquete hacia otra cadena  Si el paquete no es ACEPTADO o BLOQUEADO en la nueva cadena, el paquete RETORNA a la cadena original a la siguiente regla después del salto  El comando RETURN (mejor dicho el “destino” -target) devuelve el paquete a la cadena original sin atravesar las reglas restantes de la nueva cadena  Los saltos anidados están permitidos  Los saltos entre cadenas son esenciales para implementar políticas de seguridad Saltos entre cadenas
  • 10. Saltos entre cadenas FORWARD Cadena A Cadena B Cadena C regla 1 regla 2 regla 3 -j A regla 4 regla 5 regla 6 POLITICA regla 1 regla 2 regla 3 regla 4 -j B regla 5 regla 1 regla 2 -j C regla 3 regla 4 regla 1 regla 2 regla 3 Regla 4 -j RETURN regla 5 regla 6 regla 7
  • 11.  netfilter, iptables, tabla, cadena  Criterio (match): se refiere a un criterio de selección como:  Dirección de origen  Protocolo IP  Puerto destino  Interfaz de red  Destino (target): qué hacer si los criterios son encontrados, por ejemplo: saltar a otra cadena, registrar, ACEPTAR o BLOQUEAR. De hecho, es la acción a realizar sobre el paquete  Acción (action): qué hacer con la regla o cadena (NO con el paquete), por ejemplo: insertar, agregar, borrar, listar, reemplazar, limpiar, poner en cero los contadores, crear, establecer políticas Vocabulario
  • 12. iptables -t tabla -Acción cadena criterios -j Destino -Opciones  -t tabla, por defecto hace referencia a la tabla filter. No es necesario a menos que se esté creando una regla para la tabla nat o mangle (use minúsculas).  Action, una sola letra mayúscula: A(ppend) / Agregar, I(nsert) / Insertar, D(elete) / Borrar, R(eplace) / Reemplazar  -j Destino, establece el destino del paquete si cumple los criterios  Opciones, algunos destinos toman opciones, como el puerto a ser mapeado en una redirección o la dirección de origen a ser usada in SNAT Sintaxis
  • 13.  iptables -A OUTPUT -p 17 –dport 53 -j ACCEPT  iptables -I INPUT 3 -p 6 –dport 22 -j ACCEPT  iptables -D FORWARD -p 1 –icmp-type 8 -j LOG  iptables -A FORWARD -i ipsec+ -j AccesosVPN  iptables -t nat -L POSTROUTING -v  iptables -t nat -I PREROUTING 1 -s $lan -p 6 –dport 80 -j REDIRECT –to-ports 3128  iptables -A FORWARD -d $lan -p 6 –dport 1024:65535 -m state –state ESTABLISHED,RELATED -j ACCEPT Ejemplos
  • 14.  A -append/agregar- agrega una regla al final de la cadena. No siempre es el mejo lugar para colocar una regla porque las reglas son evaluadas secuencialmente.  I -insert/insertar- requiere un parámetro que indique en qué posición insertar la regla dentro de la cadena. Por ejemplo: iptables -I OUTPUT 3 -p 17 –dport 53 -j ACCEPT  D -delete/borrar- la acción de borrar tiene dos formas:  Especificar el número de regla a borrar: iptables -D OUTPUT 3  Especificar la regla completa: iptables -D OUTPUT -p 17 –dport 35 -j ACCEPT borrará la regla no importando en cual posición se encuentre dentro de la cadena OUTPUT Acciones
  • 15.  R -replace/reemplazar- requiere un parámetro para indicar qué regla reemplazar, por ejemplo: iptables -R INPUT 4 -p 6 –dport 22 -m state –state NEW -j ACCEPT Reemplaza la cuarta regla en la cadena INPUT para permitir el establecimiento de sesión SSH  L -list/listar- lista las reglas existentes en una cadena, por ejemplo: iptables -L INPUT -v  F -flush/borrar- borra todas las reglas existentes en una cadena iptables -t nat -F POSTROUTING  Z -zero counters- pone en cero los contadores de bytes/paquetes en la cadena especificada o en todas si no se especifica alguna iptables -Z FORWARD Acciones
  • 16.  N – new/nueva- Crea una nueva regla con el nombre dado iptables -N Paquetes_UDP X – delete/borrar- Borra las cadena definida por el usuario especificada. Observaciones:  No es posible borrar ninguna de las cadenas inter-construidas  No se puede borrar una cadena si hay otra haciendo referencia a ella  Ejemplo: iptables -X Paquetes_UDP  E -rename/renombrar- Cambia el nombre de la cadena especificada. Por ejemplo: iptables -R Paquetes_UDP PaquetesUDP Acciones
  • 17.  Los criterios principales están precedidos por un guión “-”  Los criterios de segundo nivel están precedidos por dos guiones “--”  El protocolo puede ser un criterio principal con criterios de segundo nivel como puerto destino, puerto origen o tipo icmp  Ejemplos:  iptables -A FORWARD -p 6 –dport 23 -j DROP  iptables -I FORWARD -p 1 –icmp-type 8 -m state –state NEW -j ACCEPT  Los criterios pueden ser negados usando el caracter signo de admiración “!”, por ejemplo: iptables -A INPUT -s ! 192.168.1.0/24 -j DROP bloquearía todos los paquetes que no provengan de la red 192.168.1.0/24 Criterios
  • 18.  Los criterios genéricos pueden ser comparados contra cualquier tipo de paquete. El tipo ICMP solo aplica a paquetes ICMP; el criterio puerto destino solo aplica a paquetes UDP o TCP. El criterio dirección de origen aplica a cualquier tipo de paquetes y por ello es un criterio genérico.  Los criterios genéricos son los criterios principales en la diapositiva anterior Criterios genéricos
  • 19.  -s (Dirección de origen). Se asume un host a menos que una máscara de sub-red sea especificada.  La máscara puede ser especificada por la cantidad de bits o en notación decimal  Ejemplos:  iptables -R FORWARD 5 -s 172.16.0.0/255.240.0.0  iptables -A INPUT -s 192.168.0.0/16 -j VPN  -d (Dirección de destino). Las mismas reglas aplican Criterios genéricos
  • 20.  -p (Protocolo). El protocolo de Internet (IP) del paquete.  Puede ser especificado con el número de protocolo, por ejemplo:  iptables -D OUTPUT -p 1 -j DROP  Puede ser especificado con el nombre del protocolo siempre que el nombre del protocolo esté listado en /etc/protocols.  Puede aceptar una lista separada por comas, por ejemplo:  iptables -I FORWARD 1 -p 50,51,57 -j ACCEPT  -f (Fragmentos). Este criterio discrimina los fragmentos en una cadena.  Los fragmentos no encontraran correspondencias en reglas basadas en puertos  Balance entre seguridad y usabilidad – los fragmentos podrían aparecer en una VPN Criterios genéricos
  • 21.  -i (interfaz de entrada). Para discriminar solo los paquetes entrantes en la interfaz.  Puede ser usado donde tiene sentido usarse, en las cadenas que tienen una interfaz de entrada y en sus referencias, nombrando: INPUT, FORWARD, PREROUTING (por ejemplo: OUTPUT no tiene interfaz de entrada)  iptables -A INPUT -i eth0 -j DROP  “+” es un comodín.  iptables -A FORWARD -i ipsec+ -j ACCEPT Criterios genéricos
  • 22.  -o (interfaz de salida). Para discriminar solo los paquetes salientes en la interfaz.  Puede ser usado donde tiene sentido usarse, en las cadenas que tienen una interfaz de entrada y en sus referencias, nombrando: OUTPUT, FORWARD, POSTROUTING (por ejemplo: INPUT no tiene interfaz de salida)  iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT  “+” es un comodín.  iptables -A OUTPUT -o eth+ -p 17 --dport 53 -j ACCEPT Criterios genéricos
  • 23.  Los criterios implícitos se habilitan como resultado de asociaciones a criterios implícitos o criterios explícitos  Son los referidos como criterios de segundo nivel  Ejemplos son: tcp, udp, icmp y state Criterios genéricos
  • 24.  --sport (Puerto origen).  Puede ser especificado por un número: iptables -A INPUT -p 6 --sport 22 -j ACCEPT  Puede ser especificado por un nombre si el puerto está listado en /etc/services. Es menos eficiente porque requiere la resolución del nombre cada vez.  Puede especificarse un rango con “:” :1023 «-- Todos los puertos arriba de 1023 1024: «-- Todos los puertos desde 1024 hasta 65535 Criterios TCP
  • 25.  --dport (Puerto destino). Aplica lo mismo que se ha dicho para --sport  --tcp-flags (Banderas TCP). SYN,ACK,PSH,FIN,RST,URG  Toma una lista separada por comas  Puede tomar la palabra ALL para verificar todas las banderas  Puede tomar la palabra NONE para verificar si no se han establecido banderas  --tcp-options Discrimina según el campo opciones de los paquetes TCP Criterios TCP
  • 26.  --sport (Puerto origen). Igual que para TCP  --dport (Puerto destino). Igual que para TCP Criterios UDP
  • 27.  --icmp-type Discrimina según el campo tipo icmp de los paquetes ICMP Criterios ICMP
  • 28.  Todos, excepto el criterio dirección MAC, empiezan con -m iptables -A ACCION CADENA -m nombre --parametro nombre  --mac-source  Toma un argumento de la forma XX:XX:XX:XX:XX:XX  Valido solo en INPUT, FORWARD, PREROUTING y cadenas relacionadas Criterios explícitos
  • 29.  -m limit --limit  Discrimina solo sobre el límite especificado  La especificación puede ser: /second, /minute, /hour, /day  Si es negado actúa como una frontera si es negado, es decir, empieza a discriminar una vez que el límite es alcanzado iptables -A INPUT -p 1 --icmp-type 8 ! limit --limit 10/second -j LOG Criterios explícitos
  • 30.  -m limit --limit-burst  Se usa con -m limit --limit  Toma un parámetro entero que especifica cuántos paquetes están permitidos a “salir” antes de que el parámetro empiece a contar  Recargado en uno por cada medida de tiempo límite durante el cual ningún paquete será recibido iptables -I INPUT 1 -p 6 --tcp-flags SYN -m limit --limit 30/s --limit-burst 50 -j ACCEPT iptables -I INPUT 1 -p 6 --tcp-flags SYN -m limit --limit 30/s --limit-burst 50 -j Evaluar Criterios explícitos
  • 31.  -m multiport --source-port  Usada para incluir múltiples puertos no contiguos en una sola regla  Toma una lista separada por comas hasta un máximo de 15 puertos iptables -R FORWARD 5 -p 6 -m multiport  -m multiport --destination-port  Lo mismo que para --source-port, claro para puertos destino.  -m multiport --port  Valido para puertos origen o destino Criterios explícitos
  • 32.  -m owner --uid  -m owner --gid  -m owner --pid  -m owner --sid  Solo son válidos en la cadena OUTPUT  Discrima según el usuario, grupo, identificador del proceso o sesión que creo el paquete  Toma como argumento un número entero Criterios explícitos
  • 33.  -m tos --tos  Discrimina según los bits de “Tipo de servicio” en las cabeceras TCP del paquete  Toma un número hexadecimal como argumento para representar los bits “Tipo de servicio”  -m ttl --ttl  Discrimina según el campo “Time to Live” de la cabecera IP del paquete  Toma un número entero como argumento Criterios explícitos
  • 34.  -m state --state  La “máquina” de inspección de estado  Toma como argumento una lista de estados separada por comas  Esta característica usa muchos módulos de soporte aparte de los criterios básicos, por ejemplo: connection tracking, FTP helper, IRC helper  Si el módulo no fue incluido en el kernel y el kernel no está configurado para cargar los módulos necesarios (por razones de seguridad), estos módulos deben ser explícitamente cargados Criterios explícitos
  • 35.  -m state --state NEW  Usado cuando una conexión es establecida iptables -A FORWARD -s $lan -p 6 -m multiport --destination-port 80,443 -m state --state NEW -j ACCEPT  Corresponde con nuevos paquetes aun cuando no tengan el bit SYN establecido Criterios explícitos
  • 36.  -m state --state ESTABLISHED  Corresponde con aquellos paquetes que pertenecen a una sesión previamente establecida iptables -A FORWARD -s $lan -p 6 -m multiport --destination-port 80,443 -m state --state ESTABLISHED -j ACCEPT Criterios explícitos
  • 37.  -m state --state RELATED  Corresponde a aquellos paquetes que no llevan datos sobre la sesión pero son pertinente a ella, por ejemplo: un flujo de datos en respuesta a un comando FTP o a un mensaje ICMP de error. iptables -A FORWAR -p 1 --icmp-type 8 -m state --state RELATED -j ACCEPT  Usualmente se incluye en la misma regla que incluye ESTABLISHED iptables -A FORWARD -d $lan -m state --state ESTABLISHED,RELATED -j ACCEPT Criterios explícitos
  • 38.  -m state --state INVALID  Corresponde con paquetes que no se “ve” que pertenezcan a alguna conexión  Puede ser un problema interno, por ejemplo: falta de memoria  Puede ser un paquete dañado  Puede ser un ataque  Creo que la regla incluye paquetes como el denominado Crhistmas tree (árbol de Navidad) pero no estoy seguro así debemos crear reglas específicas Criterios explícitos
  • 40. Sintáxis básica iptables -t tabla -A ACTION CADENA CRITERIOS -j TARGET OPTION
  • 42. Criterios comunes -s -d -i -o -p --dport --sport --icmp-type --tcp-flags -m multiport --source-port --destionation-port -m limit --limit -m limit --limit-burst -m state --state ESTABLISHED, RELATED
  • 43.  Cree reglas con acciones y criterios en su sistema  Use destinos simples como ACCEPT y DROP Práctica
  • 44.  El destino es hacia donde va el paquete cuando los criterios en la regla han coincidido  Los destinos pueden ser más que solo ACCEPT o DROP  Los destinos no necesariamente impiden que el paquete siga atravesando las cadenas  Los destinos son precedidos por una -j Destinos (targets)
  • 45.  -j ACCEPT  El paquete no será procesado por las siguientes reglas en la tabla  Un paquete aceptado en una tabla puede ser bloqueado en otra  mangle, nat(PREROUTING), filter, nat(POSTROUTING)  Un paquete aceptado en la tabla filter puede ser bloqueado en la tabla nat Destinos (targets)
  • 46.  -j DROP  Cesa el procesamiento del paquete en todas las tablas  No siempre es una buena idea:  REJECT podría ser más confuso a un atacante  REJECT podría ser más amable con los dispositivos que responden más rápidamente al mensaje Destino/puerto inalcanzable como smtp lo que evitaría re-intentos y tiempos de espera Destinos (targets)
  • 47.  -j QUEUE  Encola el paquete para procesamiento posterior por otra aplicación  -j RETURN  Retorna el procesamiento de las reglas a la cadena que hizo la llamada Destinos (targets)
  • 48.  -j LOG  Registra los paquetes que cumplen con los criterios al archivo syslog  Puede tener diferentes opciones:  --log-level nivel (por ejemplo: --log-level debug)  --log-prefix “prefix” agrega “prefix” al inicio de todos los mensajes registrados  --log-tcp-sequence /incluye los números de secuencia tcp  --log-tcp-options /incluye las opciones tcp en el registro  --log-ip-options /incluye las opciones ip en el registro Destinos (targets)
  • 49.  -j MARK --set-mark <entero>  Establecer la marca para el procesamiento del paquete en esta computadora Destinos (targets)
  • 50.  -j REJECT responde a la estación origen y luego bloquea el paquete. Tiene tres opciones  --reject-with- que tiene seis opciones:  icmp-net-unreachable  icmp-host-unreachable  icmp-port-unreachable (opción por defecto)  icmp-proto-unreachable  icmp-net-prohibited  icmp-host-prohibited  --echo-reply Solo útil en respuesta a peticiones de eco (pings), devuelve un paquete de respuesta a la petición de eco.  --tcp-reset Solo para paquetes tcp. Usado para bloquear pruebas de identidad Destinos (targets)
  • 51.  -j TOS --set-tos <hexadecimal>  Solo usado en la tabla mangle  Establece los bits de Tipo de Servicio  Toma como argumento un número hexadecimal para expresar el estado de los bits de Tipo de Servicio Destinos (targets)
  • 52.  -j DNAT --to-destination x.x.x.x-x.x.x.x:port-port  Igual sintaxis que SNAT pero con una función completamente diferente  Cambia la dirección de destino del paquete a la dirección especificada en el argumento  Puede ser usado en la cadena OUTPUT y en la cadena POSTROUTING  Puede tomar una única dirección o un rango como argumento  Típicamente usado para tráfico entrante, por ejemplo, hacia un host protegido dentro de una DMZ o dentro de una red privada Destinos (targets)
  • 53.  -j MASQUERADE --to-ports port-port  Mismo efecto que SNAT pero manejado de forma diferente  Consulta la dirección ip de la interfaz pública la cual re-emplazará la dirección de origen  Agrega latencia a las búsquedas  Usado con la dirección ip pública es desconocida como en la conexiones telefónicas y cuando la dirección pública es obtenida por DHCP Destinos (targets)
  • 54.  -j TTL re-escribe los bits TTL de la cabecera ip  Tiene tres opciones:  --ttl-set <entero> estable el campo TTL al entero especificado  --ttl-dec <entero> decrementa el valor del campo ttl en la cantidad especificada  --ttl-int <entero> incrementa el valor del campo ttl. Una manera clara de esconder el firewall de los trazados de rutas Destinos (targets)
  • 55.  -j ULOG  Provee sofisticadas facilidades para registro en el espacio de usuario Destinos (targets)
  • 56.  Se refiere a la acción por defecto en las cadenas inter-construídas si el paquete al atravesar la cadena no encuentra un destino dentro de las reglas iptables -t tabla -P CADENA POLITICA  Por ejemplo: iptables -P INPUT DROP Políticas en iptables
  • 57. Sintáxis básica iptables -t tabla -A ACTION CADENA CRITERIOS -j TARGET OPTION
  • 59.  en el directorio /proc muchas configuraciones del sistema, muchas pertinentes a la seguridad de la pila ip  la orden sysctl provee acceso a los archivos de configuración  sysctl -a lista las variables (use grep)  sysctl -w <parámetro> <valor> escribe los valores de configuración en el archivo apropiado del directorio /proc  Los valores pueden ser directamente manipulados: echo 1 > /proc/sys/net/ipv4/ip_forward  No conozco la portabilidad de la configuración mediante sysctl. ¿Es específico a RedHat / Fedora? Seguridad a nivel del kernel
  • 60.  /etc/sysctl.conf  Establece parámetros sysctl  Es llamado frecuentemente por los scripts rc (de RedHat) y frecuentemente sobreescriben los cambios hechos manualmente  ¿Las configuraciones en /proc toman efecto pronto para considerarlas un mecanismo válido de seguridad? Archivos importantes en el directorio /proc
  • 61.  /proc/sys/net/ipv4/conf/default/rp_filter  Equivalente al párametro sysctl net.ipv4.conf.all.rp_filter  Por defecto controla todas las interfaces  Cada interfaz tiene un directorio por separado en el directorio conf/  Control anti-spoof pobremente documentado  Los valores que puede tomar son: 0 (Deshabilitado), 1 (Supervisar redes directamente conectadas) ó 2 (Supervisar todas las redes (?))  Interfiere con las conexiones VPN a la pasarela  Debe estar deshabilitado a menos que se use iproute2  Desplaza el control anti-spoof al firewall si el parámetro sysctl rp_filter está deshabilitado Archivos importantes en el directorio /proc
  • 62.  /proc/sys/net/ipv4/conf/default/accept_source_route  Booleano: 0 ó 1 para deshabilitar/habilitar  Determina cuál interfaz acepta paquetes SRB (Source Route Bridging)  Debe estar deshabilitado para impedir el envío de paquetes SRB Archivos importantes en el directorio /proc
  • 63.  /proc/sys/net/ipv4/conf/default/accept_redirects  Booleano: 0 ó 1 para deshabilitar/habilitar  Determina cuál interfaz recibe mensajes icpm de redirección  Bueno para optimizar tráfico de los clientes pero peligroso para los firewalls  Debe estar deshabilitado para evitar el desvío de tráfico Archivos importantes en el directorio /proc
  • 64.  /proc/sys/net/ipv4/conf/default/proxy_arp  Booleano: 0 ó 1 para deshabilitar/habilitar  Debe estar habilitado solo en las interfaces que lo necesitan  Determina que interfaz responde a paquetes ARP sobre direcciones IP distintas de la suya  No es necesario para hacer NAT  Podría ser necesario si usuarios de acceso remoto a redes privadas virtuales usan direcciones virtuales en una red interna directamente conectada a la pasarela Archivos importantes en el directorio /proc
  • 65.  /etc/init.d/iptables script para tratar iptables como un daemon  /etc/sysconfig/iptables Contiene las reglas del firewall  iptables save Escribe las reglas en memoria a /etc/sysconfig/iptables SEA CUIDADOSO - Las reglas en /etc/sysconfig/iptables se cargan al inicio del sistema  Otras reglas podrían ser cargadas desde otros scripts  ¿Cuáles deben ser las reglas a cargarse al inicio del sistema? Ordenes y archivos pertinentes
  • 66.  Use tcpdump para “ver” si los paquetes están entrando (o saliendo) por las interfaces  tcpdump -l -n -i <interface>  Opciones importantes en tcpdump:  host or net w.x.y.z  ether host xx:xx:xx:xx:xx:xx  ip protocol <protocolo>  port  LEA la página del manual para tcpdump  ¿Se instalará tcpdump en los firewalls? Soluciones de problemas en iptables
  • 67.  Use LOG para “ver” que está pasando internamente en el firewall  Coloque una regla de registro enfrente de la regla que cree que debe procesar el paquete para saber si el paquete llega a esa regla  Coloque una regla de registro después de la regla que cree que debe procesar el paquete para saber si el paquete atraviesa esa regla  Coloque una regla de registro como primera regla en la cadena para “ver” si el paquete llega a esa cadena  Coloque una regla de registro como última regla en la cadena para “ver” si el paquete atraviesa esa cadena Soluciones de problemas en iptables
  • 68.  ¿Qué contiene el directorio /proc ?  ¿Qué binario accede a los parámetros que guardan los archivos en el directorio /proc ? ¿Por qué son importantes esas configuraciones?  ¿Qué hay archivos en el directorio /proc son particularmente importantes y por qué?  ¿Qué binario se utiliza para inspeccionar los paquetes entrando (o saliendo) de las interfaces? ¿Cuáles son las opciones importantes de ese binario?  ¿Cómo se usa el destino LOG para solucionar problemas en firewall? Resumen
  • 69.  Este documento no cubre todos los aspectos de iptables  Aprenda más de lo que le he dado  No soy un experto Comentarios finales
  • 70.  Explore sysctl  Explore tcpdump  Explore las capacidades de registro (logging) en iptables Práctica final