PDF de programación - Cortafuegos (Firewalls) en Linux con iptables

Imágen de pdf Cortafuegos (Firewalls) en Linux con iptables

Cortafuegos (Firewalls) en Linux con iptablesgráfica de visualizaciones

Publicado el 7 de Junio del 2018
509 visualizaciones desde el 7 de Junio del 2018
309,1 KB
19 paginas
Creado hace 12a (19/04/2012)
Cortafuegos (Firewalls) en Linux con iptables

Sistemas Telemáticos

Departamento de Sistemas Telemáticos y Computación (GSyC)

Abril de 2012

GSyC - 2012

Cortafuegos (Firewalls) en Linux con iptables

1

c2012 Grupo de Sistemas y Comunicaciones.
Algunos derechos reservados.
Este trabajo se distribuye bajo la licencia
Creative Commons Attribution Share-Alike
disponible en http://creativecommons.org/licenses/by-sa/2.1/es

GSyC - 2012

Cortafuegos (Firewalls) en Linux con iptables

2

Netfilter - iptables

Netfilter1 es un framework de Linux que permite interceptar y
modificar paquetes IP.
iptables es una herramienta de Netfilter que permite al
administrador la definición de conjuntos de reglas aplicables a
los paquetes IP que entran y/o salen de una máquina para
realizar las siguientes operaciones:

Filtrado de paquetes (packet filtering).
Seguimiento de conexiones (connection tracking).
Traducción de direcciones IP y puertos (NAT, Network
Address Translation).

Hay 3 conceptos básicos en iptables:

reglas
cadenas
tablas

1http://www.netfilter.org

GSyC - 2012

Cortafuegos (Firewalls) en Linux con iptables

3

Reglas

Una regla de iptables especifica una condición y una
acción:

condición: características que debe cumplir un paquete para
que la regla le sea aplicable. Ejemplos de condiciones:

-p tcp --dport 80: el protocolo es TCP y el puerto destino es 80
-s 13.1.2.0/24: la dirección de origen es de la subred 13.1.2.0/24.

acción: indica lo que se hace con el paquete si cumple la
condición de la regla. Ejemplos de acciones:

ACCEPT: el paquete se acepta
DROP: el paquete se descarta
SNAT --to-source 13.1.2.1: se cambia la IP origen del paquete

Las reglas se agrupan en listas de reglas, llamadas cadenas.

Las cadenas se agrupan en tablas.

GSyC - 2012

Cortafuegos (Firewalls) en Linux con iptables

4

Cadenas (I)

Una cadena es una lista ordenada de reglas.
Para cada paquete se va comprobando si se le aplica cada
regla de la cadena (es decir, si cumple la condición):

Si una regla NO se aplica a un paquete, se pasa a la siguiente
regla de la cadena.
Si una regla SÍ se aplica a un paquete, se ejecuta la acción
definida en dicha regla y, (salvo excepciones) ya no se
comprobarán más reglas de la cadena.

Una cadena puede tener definida una política, que es la acción
por defecto para la cadena. La política predefinida para todas
las cadenas es ACCEPT (es decir, aceptar el paquete).
Cuando para un paquete NO se aplica NINGUNA de las reglas
de la cadena, se ejecuta para él la política de la cadena (si
dicha cadena la tiene).

GSyC - 2012

Cortafuegos (Firewalls) en Linux con iptables

5

Cadenas (II)

Las reglas tienen una posición determinada (número de
regla) dentro de la cadena. A la hora de poner una nueva
regla en una cadena, hay tres posibilidades:

añadir la regla al fina de la cadena, detrás de las ya existentes
reemplazar en una posición a otra regla ya existente
insertar la regla en una posición ya existente, desplazando un
lugar a las reglas existentes desde esa posición en adelante.

GSyC - 2012

Cortafuegos (Firewalls) en Linux con iptables

6

Cadenas (III): Tipos de cadenas

Existen diferentes tipos de cadenas:

Predefinidas:
PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING
Definidas por el usuario. Dichas cadenas no tienen política
predefinida.

Un paquete al llegar a una máquina se le aplican las reglas de
las cadenas predeterminadas en distintos momentos según el
siguiente esquema:

GSyC - 2012

Cortafuegos (Firewalls) en Linux con iptables

7

!"#$%&%$'()*+#'%&#)*+,-$.$/$0'+&+)*1&+2345$(&+'+&+'1.&6+7'(*5#1&+&+#&+1&8#&+0)+)(%&2$(&2$)(1'+9:;<=:><?@A+9=B=:><?@A+?@9><+:><9><+C:=D!=-+)1EF+G"&45)1)*+)(1.&(1)*H+)1EI+G"&45)1)*+*&#$)(1)*H+ Cadenas (IV): Cadenas predefinidas

Cadena PREROUTING:

Reglas que se aplican a los paquetes que llegan a la máquina. Esta cadena se
ejecuta antes de comprobar si el paquete es para la propia máquina o hay que
reenviarlo.

Cadena INPUT:

Reglas que se aplican a los paquetes destinados a la propia máquina. Esta cadena
se ejecuta justo antes de entregarlos a la aplicación local.

Cadena FORWARD:

Reglas que se aplican a los paquetes que han llegado a la máquina pero van
destinados a otra y hay que reenviarlos. Esta cadena se ejecuta antes de consultar
la tabla de encaminamiento.

Cadena OUTPUT:

Reglas que se aplican a los paquetes creados por la propia máquina. Esta cadena
se ejecuta justo después de que la aplicación le pase los datos a enviar al kernel
del sistema operativo y antes de consultar la tabla de encaminamiento.

Cadena POSTROUTING:

Reglas que se aplican a los paquetes que salen de la máquina, tanto los creados
por ella como los que se reenvían. Esta cadena se ejecuta después de consultar la
tabla de encaminamiento.

GSyC - 2012

Cortafuegos (Firewalls) en Linux con iptables

8

Tablas (I)

Una tabla de iptables contiene un conjunto de cadenas,
tanto predefinidas como de usuario.
Una tabla concreta engloba las reglas (agrupadas en cadenas)
relacionadas con un tipo de procesamiento de los paquetes.
Netfilter define las siguientes tablas:

filter: engloba las reglas de filtrado de paquetes, es decir, de
las que deciden que un paquete continúe su camino o sea
descartado.
nat: engloba las reglas de modificación de direcciones IP y
puertos de los paquetes
mangle: engloba las reglas de modificación de algunos campos
de las cabeceras del paquete. Ejemplo: TTL
raw: engloba las reglas que permiten marcar excepciones al
seguimiento que hace el kernel de las “conexiones”2 de la
máquina.

2“conexiones” en sentido amplio: no solo conexiones TCP, sino también
tráfico UDP enviado/recibido para las mismas direcciones y puertos, tráfico
ICMP de petición/respuesta de eco. . .

GSyC - 2012

Cortafuegos (Firewalls) en Linux con iptables

9

Tablas (II): Cadenas predefinidas de cada tabla

La tabla filter incluye las cadenas:

FORWARD
INPUT
OUTPUT

La tabla nat incluye las cadenas:

PREROUTING
OUTPUT
POSTROUTING

La tabla mangle incluye las cadenas:

PREROUTING
FORWARD
INPUT
OUTPUT
POSTROUTING

La tabla raw incluye las cadenas:

PREROUTING
OUTPUT

GSyC - 2012

Cortafuegos (Firewalls) en Linux con iptables

10

Movimiento de los paquetes por tablas y cadenas

GSyC - 2012

Cortafuegos (Firewalls) en Linux con iptables

11

!"#$%&%$'()*+#'%&#)*+,-$.$/$0'+&+)*1&+2345$(&+'+&+'1.&6+7'(*5#1&+&+#&+1&8#&+0)+)(%&2$(&2$)(1'+(&1+9:;<=:><?@A+)1BC+D"&45)1)*+)(1.&(1)*E+)1BF+D"&45)1)*+*&#$)(1)*E+.&G+9=H=:><?@A+2&(/#)+9=H=:><?@A+(&1+9=H=:><?@A+2&(/#)+?@9><+I#1).+?@9><+.&G+:>9><+2&(/#)+:>9><+(&1+:>9><+I#1).+:>9><+2&(/#)+9:;<=:><?@A+2&(/#)+J:=K!=-+I#1).+J:=K!=-+ Movimiento de los paquetes (versión simplificada)

GSyC - 2012

Cortafuegos (Firewalls) en Linux con iptables

12

!"#$%&%$'()*+#'%&#)*+,-$.$/$0'+&+)*1&+2345$(&+'+&+'1.&6+7'(*5#1&+&+#&+1&8#&+0)+)(%&2$(&2$)(1'+(&1+9:;<=:><?@A+)1BC+D"&45)1)*+)(1.&(1)*E+)1BF+D"&45)1)*+*&#$)(1)*E+.&G+9=H=:><?@A+2&(/#)+9=H=:><?@A+(&1+9=H=:><?@A+2&(/#)+?@9><+I#1).+?@9><+.&G+:>9><+2&(/#)+:>9><+(&1+:>9><+I#1).+:>9><+2&(/#)+9:;<=:><?@A+2&(/#)+J:=K!=-+I#1).+J:=K!=-+ iptables: comandos

iptables [-t <tabla>] <comando> [<condición>] [<acción>]
Si no se especifica una tabla se utilizará por defecto la tabla filter.

Comandos más utilizados:

iptables [-t <tabla>] -L [<cadena>] [-v]

lista las reglas definidas en una cadena de una tabla. Si se omite la cadena el comando actúa sobre todas. Con
-v se mostrará también el número de paquetes y bytes que han cumplido la condición de cada regla.

iptables [-t <tabla>] -F [<cadena>]

borra la lista de reglas que hay en una cadena de una tabla. Si se omite la cadena el comando actúa sobre todas.

iptables [-t <tabla>] -Z [<cadena>]

reinicia los contadores de una cadena de una tabla: número de paquetes y bytes que cumplen las condiciones de
sus reglas. Si se omite la cadena el comando actúa sobre todas.

iptables [-t <tabla>] -N [<cadena-usuario>]

crea en una tabla una nueva cadena definida por el usuario.

iptables [-t <tabla>] -P <cadena> <política>

establece la política por defecto para una cadena predefinida de una tabla, donde la política puede ser DROP o
ACCEPT.

iptables [-t <tabla>] -A <cadena> <condición> <acción>

añade una regla al final de las reglas que tiene definidas una cadena de una tabla. La regla queda definida por la
ejecución de una acción si un paquete cumple una condición.

iptables [-t <tabla>] -D <cadena> <condición> <acción>
iptables [-t <tabla>] -D <cadena> <numregla>

borra una regla de una cadena de una tabla dada su especificación o dado su número de regla.

iptables [-t <tabla>] -R <cadena> <numregla> <condición> <acción>

reemplaza la regla número numregla de una cadena por una nueva regla.

iptables [-t <tabla>] -I <cadena> <numregla> <condición> <acción>

inserta una regla en la posición numregla en una cadena de una tabla.

GSyC - 2012

Cortafuegos (Firewalls) en Linux con iptables

13

iptables: condiciones

Condiciones:

Protocolo

Dirección IP

Puerto

Interfaz

Estado de
la conexión3

-p <protocolo>
-s <dirIP[/máscara]>: dirección origen
-d <dirIP[/máscara]>: dirección destino
--sport <puerto|puertoInicio:puertoFin>: puerto origen
--dport <puerto|puertoInicio:puertoFin>: puerto destino
-i <interfaz>: interfaz de entrada
-o <interfaz>: interfaz de salida
-m state --state <estado>
situación de un paquete con respecto a la conexión a la que pertenece. Estado:

INVALID: no pertenece a una conexión existente
ESTABLISHED: es parte de una conexión existente con paquetes en ambos sentidos
NEW: es parte de una nueva conexión que aún no está establecida
RELATED: está relacionado con otra conexión ya existente

Ejemplo: un mensaje ICMP de error

Flags TCP

--syn: segmento SYN
--tcp-flag <flagsAComprobar> <flagsQueDebenEstarActivados>

flags: SYN, FIN, ACK, RST, PSH, URG, ALL, NONE
Ejemplo: -p tcp --tcp-flags ALL SYN,ACK
(deben estar activados SYN, ACK y desactivados FIN, RST, PSH, URG)

La negación de una condició
  • Links de descarga
http://lwp-l.com/pdf11640

Comentarios de: Cortafuegos (Firewalls) en Linux con iptables (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad