Debug di regole Iptables

From RVM Wiki
Jump to navigation Jump to search

Ogni pacchetto dal kernel 2.6.23 in poi, attraversa la tabella raw, che ha un target particolare TRACE

Ipotizziamo di coler loggare tutti i pacchetti provenienti dall'host 1.2.3.4 destinati alla porta 8000

  • Caricare i moduli per il logging di iptables:
sudomodproble ipt_LOG
  • Definire che pacchetti si vogliono loggare, inserendoli in entrambe le chain OUTPUT e PREROUTING
sudo iptables -t raw -A PREROUTING -p tcp --dport 8000 -s 1.2.3.4 -j TRACE
sudo iptables -t raw -A OUTPUT -p tcp --dport 8000 -s 1.2.3.4 -j TRACE

  • Ora in syslog si vedrà un output del tipo (formattato...) che indica che il pacchetto è loggato:
TRACE: raw:PREROUTING:policy:2
IN=eth1
OUT= MAC=00:06:7b:03:7f:89:84:c9:b2:82:18:1a:08:00
SRC=1.2.3.4
DST=5.6.7.8
LEN=52 TOS=0x10 PREC=0x00 TTL=55 ID=50604 DF PROTO=TCP SPT=34953
DPT=8000
SEQ=1670740955 ACK=1467539518 WINDOW=229 RES=0x00 ACK URGP=0 OPT (0101080A0084E5D9017E96F9)
  • Qui dice che transita dalla chain FORWARD passando dalla regola 8:
TRACE: filter:FORWARD:rule:8
IN=eth1
OUT=eth0
SRC=1.2.3.4
DST=7.8.9.10
LEN=52 TOS=0x10 PREC=0x00 TTL=54 ID=50604 DF PROTO=TCP SPT=34953
DPT=8000
SEQ=1670740955 ACK=1467539518 WINDOW=229 RES=0x00 ACK URGP=0 OPT (0101080A0084E5D9017E96F9)
  • Nel caso non ci sia la rule: ma policy: significa che il pacchetto è stato matchato da una POLICY della chain.
  • Per vedere la rule interessata:
sudo iptables -t tablename -v -L CHAINNAME RULENUMBER
  • Ad esempio per vedere la regola 3 della tabella nat nella chain PREROUTING
sudo iptables -t nat -v -L PREROUTING 3
  • IMPORTANTE: Al termine, eliminare le regole di tracing impostate, sostituendo al -A il -D, altrimenti ALTRIMENTI IL SYSLOG SI RIEMPIRÀ
sudo iptables -t raw -D PREROUTING -p tcp --dport 8000 -s 1.2.3.4 -j TRACE
sudo iptables -t raw -D OUTPUT -p tcp --dport 8000 -s 1.2.3.4 -j TRACE

Riferimenti