Como habilitar o alvo TRACE do IPtables no Debian Squeeze (6)


11

Estou tentando usar o destino TRACE do IPtables, mas não consigo obter nenhuma informação de rastreamento registrada. Eu quero usar o que está descrito aqui: Depurador para Iptables .

Do homem do iptables para o 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.

Eu uso a seguinte regra: iptables -A PREROUTING -t raw -p tcp -j TRACEmas nada é anexado em / var / log / syslog ou /var/log/kern.log!

Falta outro passo? Estou procurando no lugar errado?

editar

Mesmo que eu não consiga encontrar entradas de log, o destino TRACE parece estar configurado corretamente, pois os contadores de pacotes são incrementados:

# 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

A regra iptables -A PREROUTING -t raw -p tcp -j LOG faz informações pacote de impressão para / var / log / syslog ... Por que trabalhar não TRACE?


1
acabou de encontrar um programa python (que também é chamado iptables-trace :). Quando iniciado, ele adiciona uma regra TRACE com condições especificadas à execução de iptables, analisa e exibe a saída formatada da saída TRACE resultante até que o programa seja parado (o que remove a regra TRACE de iptables). Vai tentar fazer isso em breve ...
chris

Respostas:


8

Corre:

modprobe ipt_LOG

Isso consertou para mim.


Obrigado, isso funcionou! Os logs estão disponíveis em / var / log / syslog ou /var/log/kern.log
bernie

14

Parece (ou seja, funciona para mim) com o novo kernel isso é necessário (para IPv4):

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

créditos:


Isto foi o que funcionou para mim no Ubuntu 16.04 (kernel 4.4.0-21-generic)
Ash Berlin-Taylor

Infelizmente a modinfo nf_log_ipv4descrição diz apenas: "Registro de pacotes do Netfilter IPv4". Alguma descrição poderia melhorar a resposta: O que o sysctl faz exatamente?
U. Windl

8

Descobri que precisava executar as duas respostas anteriores, nesta ordem:

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

Aqui estão algumas coisas que eu descobri ao longo do caminho.

Você pode obter uma lista de registradores válidos (junto com o registrador atualmente selecionado) com o seguinte:

cat /proc/net/netfilter/nf_log

Os números aqui representam os números da família protocolo, tal como definido na /usr/include/bits/socket.h. 2 é AF_INET(que é IPv4) e 10 é AF_INET6(IPv6).


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.