PDF de programación - netfilter-hacking-COMO

Imágen de pdf netfilter-hacking-COMO

netfilter-hacking-COMOgráfica de visualizaciones

Actualizado el 11 de Octubre del 2018 (Publicado el 25 de Agosto del 2018)
898 visualizaciones desde el 25 de Agosto del 2018
158,4 KB
28 paginas
Creado hace 16a (03/11/2007)
30/7/18
Linux netfilter Hacking COMO
Rusty Russell, lista de correo [email protected]
Traducido por Gabriel Rodríguez Alberich [email protected]
v1.0.1 sábado 1 de julio 1 18:24:41 EST 2000, traducción del
7 de noviembre de 2000

netfilter-hacking-COMO.txt

1

Este documento describe la arquitectura de netfilter en Linux, cómo

_h_a_c_k_e_a_r_l_a, y algunos de los sistemas más importantes que se asientan

en ella, como el filtrado de paquetes, seguimiento de conexiones (con-
nection tracking) y Traducción de Direcciones de Red (Network Address
Translation).
______________________________________________________________________

Índice general

1. Introducción
1.1 ¿Qué es «netfilter»?
1.2 ¿Qué hay de malo en lo que teníamos con el 2.0 y el 2.2?
1.3 ¿Quién eres?
1.4 ¿Por qué se cuelga?

2. ¿Dónde puedo conseguir el último?
3. La arquitectura de Netfilter
3.1 La base de Netfilter
3.2 Selección de paquetes: IP Tables
3.2.1 Filtrado de Paquetes
3.2.2 NAT
3.2.2.1 Enmascaramiento, redireccionamiento de puertos y proxys transparentes
3.3 Seguimiento de conexiones
3.4 Otros añadidos

4. Información para programadores
4.1 Comprendiendo ip_tables
4.1.1 Estructuras de datos de ip_tables
4.1.2 ip_tables desde el espacio de usuario
4.1.3 Recorrido y uso de ip_tables
4.2 Extendiendo iptables
4.2.1 El kernel
4.2.1.1 Nuevas funciones de concordancia
4.2.1.2 Nuevos objetivos
4.2.1.3 Nuevas tablas
4.2.2 Herramienta del espacio de usuario
4.2.2.1 Nuevas funciones de concordancia
4.2.2.2 Nuevos objetivos
4.2.3 Utilizando `libiptc'
4.3 Comprendiendo NAT
4.3.1 Seguimiento de conexiones
4.4 Extendiendo el seguimiento de conexiones/NAT
4.4.1 Objetivos NAT estándar
4.4.2 Nuevos protocolos
4.4.2.1 Dentro del kernel
4.4.3 Nuevos objetivos NAT
4.4.4 Ayudantes de protocolo para UDP y TCP
4.5 Comprendiendo netfilter
4.6 Escribiendo nuevos módulos netfilter
4.6.1 Conectándose a los ganchos netfilter
4.6.2 Procesando paquetes en la cola
4.6.3 Recibiendo comandos desde el espacio de usuario
4.7 Manejo de paquetes en el espacio de usuario

5. Portando los módulos de filtrado de paquetes desde 2.0 y 2.2
6. La batería de pruebas
6.1 Escribiendo una prueba
6.2 Variables y entorno
6.3 Herramientas útiles
6.3.1 gen_ip
6.3.2 rcv_ip
6.3.3 gen_err
6.3.4 local_ip
6.4 Random Advice

7. Motivación
8. Agradecimientos

file:///home/xavi/smbhome102/xavi/pdfs/tmp/181.10.47.218/compartir/biblioteca/INFOSEC/FW-IPTABLES/netfilter-hacking-COMO.txt

30/7/18

netfilter-hacking-COMO.txt

2

______________________________________________________________________

11.. IInnttrroodduucccciióónn

Hola.

Este documento es un viaje; algunas partes se recorren con comodidad,
y en otras zonas se encontrará casi en la soledad. El mejor consejo
que puedo darle es que coja una gran taza de café o chocolate
caliente, se siente en un cómodo asiento, y absorba los contenidos

antes de aventurarse en el a veces peligroso mundo del _h_a_c_k_i_n_g de

redes.

Para un mayor entendimiento del uso de la infraestructura existente
sobre el sistema netfilter, recomiendo la lectura del Packet Filtering
HOWTO y el NAT HOWTO (disponibles en castellano). Para más información

sobre la programación del kernel, sugiero el _R_u_s_t_y_'_s _U_n_r_e_l_i_a_b_l_e
_G_u_i_d_e
_t_o _K_e_r_n_e_l _H_a_c_k_i_n_g y el _R_u_s_t_y_'_s
_U_n_r_e_l_i_a_b_l_e _G_u_i_d_e _t_o _K_e_r_n_e_l _L_o_c_k_i_n_g.

(C) 2000 Paul `Rusty' Russell. Bajo licencia GNU GPL.

11..11.. ¿¿QQuuéé eess ««nneettffiilltteerr»»??

netfilter es un sistema para manipular paquetes que se encuentra fuera
del interfaz normal de sockets de Berkeley. Consta de cuatro partes.
Primero, cada protocolo define "ganchos" (IPv4 define 5), que son
puntos bien definidos en el recorrido de un paquete a través de la
pila de ese protocolo. En cada uno de estos puntos, el protocolo
llamará al sistema netfilter con el paquete y el número del gancho.

En segundo lugar, hay partes del kernel que pueden registrarse para
escuchar los diferentes ganchos de cada protocolo. Entonces, cuando se
le pasa un paquete al sistema netfilter, éste comprueba si alguien se
ha registrado para ese protocolo y ese gancho; si es así, cada uno de
los que se ha registrado tiene la posibilidad de examinar (y quizá
alterar) el paquete en cuestión, y luego rechazarlo, permitir que
pase, o pedirle a netfilter que ponga el paquete en una cola para el
espacio de usuario.

En tercer lugar, los paquetes que han sido colocados en la cola son
recogidos (por el controlador ip_queue_driver) para enviarlos al
espacio de usuario; estos paquetes se manejan asincrónicamente.

La parte final está constituida por comentarios útiles en el código y
por la documentación. Esto juega un papel decisivo en cualquier
proyecto experimental. El lema de netfilter es (robado descaradamente
a Cort Dougan):

``Entonces... ¿en qué es mejor esto que KDE?''

(Este lema casi dice `Azótame, pégame, hazme usar ipchains').

Además de este sistema crudo, se han escrito varios módulos que
proporcionan una funcionalidad similar a la que tenían los kernels
anteriores (pre-netfilter). En particular, un sistema NAT extensible,
y un sistema de filtrado de paquetes extensible (iptables).

11..22.. ¿¿QQuuéé hhaayy ddee mmaalloo eenn lloo qquuee
tteennííaammooss ccoonn eell 22..00 yy eell 22..22??

file:///home/xavi/smbhome102/xavi/pdfs/tmp/181.10.47.218/compartir/biblioteca/INFOSEC/FW-IPTABLES/netfilter-hacking-COMO.txt

30/7/18
11..22.. ¿¿QQuuéé hhaayy ddee mmaalloo eenn lloo qquuee
tteennííaammooss ccoonn eell 22..00 yy eell 22..22??

netfilter-hacking-COMO.txt

3

1. No hay establecida una infraestructura para pasar paquetes al
espacio de usuario:

· La programación del kernel se hace difícil

· La programación del kernel tiene que hacerse en C/C++

· Las políticas de filtrado dinámicas no pertenecen al kernel

· 2.2 introdujo una manera de pasar paquetes al espacio de usuario
mediante netlink, pero la reinyección de paquetes es lenta, y
sujeta a comprobaciones de `sanidad'. Por ejemplo, reinyectar un
paquete que afirma venir de una interfaz existente no es
posible.

2. Montar un proxy transparente es una chapuza:

· Tenemos que observar ttooddooss los paquetes para ver si hay un

socket ligado a esa dirección

· root puede ligar (bind :-) a direcciones externas

· No se pueden redirigir paquetes generados localmente

· REDIRECT no maneja respuestas UDP: redirigir paquetes UDP al
puerto 1153 no funciona porque a algunos clientes no les gustan
las respuestas que vienen de otro puerto que no sea el 53.

· REDIRECT no se coordina con la asignación de puertos tcp/udp: un
usuario podría conseguir un puerto (shadowed) por una regla
REDIRECT. (a user may get a port shadowed by a REDIRECT rule)

· Ha sido interrumpido al menos dos veces desde la serie 2.1. Has
been broken at least twice during 2.1 series.

· El código es extremadamente molesto. Considere el número de
apariciones de #ifdef CONFIG_IP_TRANSPARENT_PROXY en el 2.2.1:
34 apariciones en 11 ficheros. Compare esto con
CONFIG_IP_FIREWALL, que aparece 10 veces en 5 ficheros.

3. No es posible crear reglas de filtrado de paquetes independientes
de las direcciones de interfaz:

· Se deben conocer las direcciones de interfaz locales para
distinguir los paquetes generados localmente o los que terminan
localmente de los paquetes redirigidos.

· Incluso esto es insuficiente en casos de redirección o
enmascaramiento.

· La cadena forward (redirección) sólo tiene información de la
interfaz de salida, lo que significa que usted tiene que
figurarse de dónde proviene el paquete utilizando sus
conocimientos sobre la topología de la red.

4. El enmascaramiento está encima del filtrado de paquetes:

Las interacciones entre el filtrado de paquetes y el
enmascaramiento hacen que sea complejo manejar un cortafuegos:

· En el filtrado de entrada (input), los paquetes de respuesta
parecen ir destinados a la propia máquina

· En el filtrado de redirección (forward), los paquetes
desenmascarados no se pueden ver

file:///home/xavi/smbhome102/xavi/pdfs/tmp/181.10.47.218/compartir/biblioteca/INFOSEC/FW-IPTABLES/netfilter-hacking-COMO.txt

30/7/18
· En el filtrado de salida (output), los paquetes parecen venir de
la máquina local

netfilter-hacking-COMO.txt

4

5. La manipulación del TOS, la redirección, el ICMP unreachable y el
marcado (mark) (que pueden proporcionan redirección de puertos,
enrutado y QoS) también están encima del código de filtrado de
paquetes.

6. El código de ipchains no es ni modular ni extensible (p.ej.
filtrado de direcciones MAC, opciones de filtrado, etc).

7. La falta de una infraestructura suficiente ha llevado a la
profusión de distintas técnicas:

· Enmascaramiento, además de módulos por cada protocolo

· NAT estático veloz mediante código de enrutamiento (no tiene
manejo por protocolo)

· Redirección de puertos (port forwarding), redirección, auto
redirección (auto forwarding)

· Los Proyectos NAT
  • Links de descarga
http://lwp-l.com/pdf13217

Comentarios de: netfilter-hacking-COMO (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