Filtrarea Pachetelor de Rețea și Rutare cu iptables și nftables în Linux / Bash

Permisiuni și securitate Standard Linux Kernel Netfilter

Ghid complet pentru administrarea firewall-ului la nivel de pachet cu iptables și nftables: tabele (filter, nat), lanțuri de reguli (INPUT, FORWARD), port forwarding și salvarea persistentă.

Sintaxă comandă
iptables -L -n -v | iptables -A INPUT -p tcp --dport 22 -j ACCEPT | iptables-save

În spatele oricărui utilitar de securitate din Linux (inclusiv ufw, firewalld și rețelele interne Docker) se află subsistemul de filtrare a pachetelor din nucleu: Netfilter. Utilitarul tradițional de control este iptables, înlocuit gradual în distribuțiile moderne de noul cadru de înaltă performanță nftables.

Arhitectura Tabelelor și Lanțurilor în iptables
# Structura logică de filtrare:
# Tabele principale:
# 1. 'filter' (Implicit): Decizii de acceptare sau blocare a traficului.
# 2. 'nat': Schimbarea adresei sau portului sursă/destinație (Port Forwarding, Masquerading).
# 3. 'mangle': Modificarea antetelor pachetelor (TTL, TOS).

# Lanțuri (Chains) de bază în tabela filter:
# - INPUT: Pachete care au ca destinație mașina locală.
# - OUTPUT: Pachete generate local care părăsesc mașina.
# - FORWARD: Pachete care tranzitează mașina (utilizate când Linux acționează ca router sau host Docker).

Comenzi Esențiale de Inspecție și Configurare

Inspectarea regulilor active fără întârziere DNS
# -L = listare, -n = afișează numere (fără rezoluție DNS), -v = verbose cu contoare de octeți:
sudo iptables -L -n -v

# Permite traficul pe interfața de loopback (esențial pentru comunicare internă localhost!):
sudo iptables -A INPUT -i lo -j ACCEPT

# Permite conexiunile existente deja stabilite (Stateful Firewall):
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# Deschide portul SSH (22):
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# Setează politica implicită pe DROP (tot restul traficului nepermis este aruncat):
sudo iptables -P INPUT DROP

Port Forwarding prin Tabela NAT

Dacă doriți să redirecționați traficul venit pe portul exterior 80 către un port intern (de exemplu o aplicație Node.js care rulează local pe portul 3000):

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000

Salvarea Persistentă a Regulilor

Regulile adăugate cu comanda iptables sunt salvate exclusiv în memoria RAM a nucleului și se pierd la repornirea serverului! Pentru a le face persistente, instalați utilitarul dedicat:

sudo apt install iptables-persistent
# Salvează regulile curente în fișierele /etc/iptables/rules.v4 și rules.v6:
sudo netfilter-persistent save