Debug di regole Iptables
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