🟢 Beginner

Firewall — Sieťová bezpečnosť na Linuxe

Firewall je prvá línia obrany servera. Kontroluje, ktorá sieťová prevádzka smie vstúpiť alebo odísť. V Linuxe máš na výber niekoľko nástrojov — od nízkoúrovňových iptables až po user-friendly UFW.


Ako funguje Linux firewall?

Jadrom je Netfilter — subsystém v Linux kerneli, ktorý spracováva pakety. Nástroje ako iptables, nftables a UFW sú len frontendy na jeho konfiguráciu. Pakety prechádzajú cez chains (INPUT, OUTPUT, FORWARD) a na základe pravidiel sa ACCEPT, DROP alebo REJECT.

iptables — Klasika

Dlhé roky štandard, stále bežný v produkčných prostrediach:

# Povoliť SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# Povoliť HTTP/HTTPS
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# Povoliť established connections
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Zahodiť všetko ostatné
iptables -A INPUT -j DROP

# Uložiť pravidlá
iptables-save > /etc/iptables/rules.v4

nftables — Moderný nástupca

nftables nahrádza iptables s čistejšou syntaxou a lepším výkonom:

# Vytvorenie tabuľky a chainu
nft add table inet filter
nft add chain inet filter input { type filter hook input priority 0 \; policy drop \; }

# Povoliť loopback a established
nft add rule inet filter input iif lo accept
nft add rule inet filter input ct state established,related accept

# Povoliť SSH a web
nft add rule inet filter input tcp dport { 22, 80, 443 } accept

UFW — Jednoduchosť pre Ubuntu/Debian

UFW (Uncomplicated Firewall) je wrapper nad iptables pre rýchlu konfiguráciu:

# Aktivácia s default deny
ufw default deny incoming
ufw default allow outgoing

# Povoliť služby
ufw allow ssh
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow from 10.0.0.0/8 to any port 5432  # PostgreSQL len z internej siete

# Zapnúť firewall
ufw enable
ufw status verbose

firewalld — Zóny (RHEL/CentOS)

firewalld pracuje s konceptom zón, kde každé sieťové rozhranie patrí do zóny s definovanými pravidlami:

# Zoznam zón
firewall-cmd --get-zones

# Pridať službu do public zóny
firewall-cmd --zone=public --add-service=https --permanent

# Vlastný port
firewall-cmd --zone=public --add-port=8080/tcp --permanent

# Aplikovať zmeny
firewall-cmd --reload

Best Practices

  • Default DENY — povoľ len to, čo naozaj potrebuješ
  • Principle of least privilege — databáza nepotrebuje byť na 0.0.0.0
  • Rate limiting — obmedz počet pripojení na SSH (-m limit --limit 3/min)
  • Loguj dropped paketyiptables -A INPUT -j LOG --log-prefix "DROPPED: "
  • Nezabudni na IPv6 — útočníci ho skúšajú, aj keď ho nepoužívaš
  • Testuj pred aplikáciouiptables -C alebo ufw --dry-run
  • Automatizuj cez Ansible/Terraform — manuálne pravidlá na 50 serveroch = katastrofa

Firewall nie je nice-to-have. Je to must-have. Každý server musí mať nakonfigurovaný firewall ešte pred tým, než sa vystaví do siete.