Cómo habilitar el objetivo de seguimiento de IPtables en Debian Squeeze (6)

11

Estoy tratando de usar el objetivo TRACE de IPtables pero parece que no puedo registrar ninguna información de seguimiento. Quiero usar lo que se describe aquí: Depurador para Iptables .

Del hombre de iptables para TRACE:

   This target marks packes so that the kernel will log every  rule  which
   match  the  packets  as  those traverse the tables, chains, rules. (The
   ipt_LOG or ip6t_LOG module is required for the  logging.)  The  packets
   are   logged   with   the   string   prefix:  "TRACE:  tablename:chain-
   name:type:rulenum " where type can be "rule" for plain  rule,  "return"
   for  implicit  rule at the end of a user defined chain and "policy" for
   the policy of the built in chains.
   It can only be used in the raw table.

Uso la siguiente regla: ¡ iptables -A PREROUTING -t raw -p tcp -j TRACEpero no se agrega nada en / var / log / syslog o /var/log/kern.log!

¿Falta otro paso? ¿Estoy buscando en el lugar equivocado?

editar

Aunque no puedo encontrar entradas de registro, el objetivo TRACE parece estar configurado correctamente ya que los contadores de paquetes se incrementan:

# iptables -L -v -t raw
Chain PREROUTING (policy ACCEPT 193 packets, 63701 bytes)
 pkts bytes target     prot opt in     out     source               destination
  193 63701 TRACE      tcp  --  any    any     anywhere             anywhere

Chain OUTPUT (policy ACCEPT 178 packets, 65277 bytes)
 pkts bytes target     prot opt in     out     source               destination

editar 2

La regla iptables -A PREROUTING -t raw -p tcp -j LOG hace la información del paquete de impresión en / var / log / syslog ... ¿Por qué no funciona TRACE?

bernie
fuente
1
simplemente tropezó con un programa de Python (que también se llama iptables-trace :). Cuando se inicia, agrega una regla TRACE con condiciones específicas para ejecutar iptables, analiza y muestra la salida formateada para la salida TRACE resultante hasta que el programa se detiene (lo que elimina la regla TRACE de iptables). Probaré esto pronto ...
Chris

Respuestas:

8

Correr:

modprobe ipt_LOG

Eso me lo arregló.

Gido Bruno
fuente
Gracias, eso funcionó! Los registros están disponibles en / var / log / syslog o /var/log/kern.log
bernie
14

Parece que (es decir, funciona para mí) con un nuevo núcleo, esto es necesario (para IPv4):

modprobe nf_log_ipv4
sysctl net.netfilter.nf_log.2=nf_log_ipv4

créditos:

akostadinov
fuente
Este fue el que funcionó para mí en Ubuntu 16.04 (kernel 4.4.0-21-generic)
Ash Berlin-Taylor
Lamentablemente, la modinfo nf_log_ipv4descripción solo dice: "Netfilter IPv4 paquete de registro". Alguna descripción podría mejorar la respuesta: ¿Qué hace exactamente el sysctl?
U. Windl
8

Descubrí que necesitaba realizar las dos respuestas anteriores, en este orden:

sudo modprobe ipt_LOG
sudo sysctl net.netfilter.nf_log.2=ipt_LOG

Aquí hay un par de cosas que descubrí en el camino.

Puede obtener una lista de registradores válidos (junto con el registrador seleccionado actualmente) con lo siguiente:

cat /proc/net/netfilter/nf_log

Los números aquí representan los números de familia del protocolo, como se define en /usr/include/bits/socket.h. 2 es AF_INET(eso es IPv4) y 10 es AF_INET6(IPv6).

mavit
fuente
2

Esto funciono para mi sudo sysctl net.netfilter.nf_log.2=ipt_LOG

Nikolay Bryskin
fuente