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 |
|---|---|
filter | INPUT, FORWARD, OUTPUT |
nat | PREROUTING, INPUT, OUTPUT, POSTROUTING |
mangle | PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING |
raw | PREROUTING, OUTPUT |
security | INPUT, 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).
-
fail2bancompletează iptables, nu îl înlocuiește. -
ufwșifirewalldsunt 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