iptables — ghid

iptables e interfața de configurare pentru filtrarea de pachete din kernelul Linux (Netfilter). Regulile stau în tabele, în lanțuri; ; fiecare regulă are condiții de potrivire și o țintă (target).

Tabele și lanțuri

TabelăLanțuri
filterINPUT, FORWARD, OUTPUT
natPREROUTING, INPUT, OUTPUT, POSTROUTING
manglePREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING
rawPREROUTING, OUTPUT
securityINPUT, FORWARD, OUTPUT

Calea pachetului

PREROUTING (raw → mangle → nat) → decizie de rutare → fie INPUT (mangle, filter, security, nat) pentru trafic local, fie FORWARD (mangle, filter, security) → POSTROUTING (mangle, nat).

Trafic generat local: OUTPUT (raw, mangle, nat, filter, security) → POSTROUTING.

Ținte

  • ACCEPT— lasă pachetul să continue.
  • DROP— aruncă tăcut.
  • REJECT— aruncă și răspunde (ex. --reject-with tcp-reset).
  • LOG— scrie în logul kernelului, nu oprește procesarea.
  • RETURN— revine la lanțul anterior.
  • DNAT / SNAT / MASQUERADE / REDIRECT— transformări de adresă/port.

Comenzi de bază

# listare
iptables -L -n -v --line-numbers
iptables -S
# adaugă la sfârșit / inserează / șterge
iptables -A INPUT ...
iptables -I INPUT 1 ...
iptables -D INPUT 3
# politică implicită
iptables -P INPUT DROP
# golește (ATENȚIE: cu politica DROP te blochezi; pune întâi iptables -P INPUT ACCEPT)
iptables -F
# IPv6
ip6tables ...
# salvare / restaurare
iptables-save > /etc/iptables/rules.v4
iptables-restore < /etc/iptables/rules.v4
# persistență Debian/Ubuntu
netfilter-persistent save
# protecție împotriva blocării (aplică un fișier de reguli și revine dacă nu confirmi la timp)
iptables-apply

Bune practici

  • Folosește -m conntrack --ctstate în loc de -m state --state (învechit).
  • Regulile se evaluează de sus în jos; prima potrivire cu țintă terminală câștigă.
  • Testează dintr-o a doua sesiune (ca să nu te blochezi).
  • fail2ban completează iptables, nu îl înlocuiește.
  • ufw și firewalld sunt interfețe de nivel mai înalt.

iptables și nftables

Pe distribuțiile moderne iptables poate fi un wrapper iptables-nft (iptables -V arată (nf_tables) sau (legacy)). nft list ruleset afișează regulile nftables. iptables-translate convertește o regulă în sintaxa nft.

Formatul logului din kernel (exemplu SIMULAT)

IPT-DROP: IN=eth0 OUT= MAC=... SRC=203.0.113.7 DST=198.51.100.10 LEN=60 TOS=0x00 PREC=0x00 TTL=52 ID=12345 DF PROTO=TCP SPT=44321 DPT=22 WINDOW=64240 RES=0x00 SYN URGP=0