15. Práce s firewallem
Co se po vás bude chtít?
Firewall obecně
-
Co je to firewall:
- Síťové bezpečnostní zařízení/software pro filtrování provozu
- Kontrola příchozího a odchozího síťového provozu
- Rozhodování na základě definovaných pravidel
-
Typy firewallů:
- Síťový firewall - chrání celou síť, umístěn na perimetru
- Host-based firewall - chrání jednotlivé zařízení
- Aplikační firewall (WAF) - filtrování na úrovni aplikací (HTTP, DNS)
- Stavový vs bezstavový firewall:
- Stateless - kontroluje jednotlivé pakety nezávisle
- Stateful - sleduje stav spojení (connection tracking)
-
Kde se s firewallem setkáme:
- Dedikovaná síťová zařízení (hardware firewall)
- Software na serverech a pracovních stanicích
- Routery a síťové brány
- Cloud prostředí (security groups, network ACLs)
Terminologie firewallu
-
Chain (řetězec):
- Sada pravidel aplikovaných na určitý typ provozu
- INPUT - příchozí provoz směřující na lokální systém
- OUTPUT - odchozí provoz z lokálního systému
- FORWARD - provoz procházející systémem (routing)
- PREROUTING - zpracování před routingem
- POSTROUTING - zpracování po routingu
-
Tabulka (table):
- filter - výchozí tabulka pro filtrování provozu
- nat - překlad síťových adres
- mangle - modifikace paketů
- raw - konfigurace výjimek z connection trackingu
-
Pravidlo (rule):
- Definice podmínek a akce pro odpovídající provoz
- Match - kritéria pro výběr paketů
- Target/Action - akce pro odpovídající pakety
-
Cíle (targets):
- ACCEPT - povolení průchodu paketu
- DROP - zahození paketu bez odpovědi
- REJECT - odmítnutí s ICMP odpovědí
- LOG - zalogování paketu (pokračuje ve vyhodnocování)
- RETURN - návrat z uživatelského řetězce
-
Politika (policy):
- Výchozí akce pro pakety, které neodpovídají žádnému pravidlu
- Default ACCEPT - povolí vše, co není explicitně zakázáno
- Default DROP - zakáže vše, co není explicitně povoleno (bezpečnější)
NAT (Network Address Translation)
-
Účel NAT:
- Překlad síťových adres mezi sítěmi
- Sdílení jedné veřejné IP pro více zařízení
- Skrytí vnitřní struktury sítě
-
Typy NAT:
- SNAT (Source NAT):
- Změna zdrojové IP adresy
- Použití: odchozí provoz z privátní sítě na internet
- Konfigurace v chainu POSTROUTING
- DNAT (Destination NAT):
- Změna cílové IP adresy
- Použití: přesměrování provozu na interní adresy
- Konfigurace v chainu PREROUTING
- Masquerade:
- Speciální forma SNAT pro dynamické IP adresy
- Automaticky používá IP odchozího rozhraní
- SNAT (Source NAT):
-
Port forwarding:
- Přesměrování provozu na konkrétní port na jiný server/port
- Umožnění přístupu k interním službám z internetu
- Příklad: přesměrování portu 8080 na interní web server port 80
Firewally v GNU/Linux
iptables
-
Základní syntaxe:
iptables [tabulka] [akce] [chain] [match] [cíl] -
Zobrazení pravidel:
iptables -L- výpis pravideliptables -L -v -n- detailní výpis s číslyiptables -L -n --line-numbers- výpis s čísly řádků
-
Správa pravidel:
-A(append) - přidání pravidla na konec-I(insert) - vložení pravidla na pozici-D(delete) - smazání pravidla-R(replace) - nahrazení pravidla-F(flush) - smazání všech pravidel
-
Definování pravidel (match):
-p/--protocol- protokol (tcp, udp, icmp)-s/--source- zdrojová IP adresa-d/--destination- cílová IP adresa-i/--in-interface- vstupní rozhraní-o/--out-interface- výstupní rozhraní--sport/--source-port- zdrojový port--dport/--destination-port- cílový port-m conntrack --ctstate- stav spojení (NEW, ESTABLISHED, RELATED)
-
Nastavení politiky:
iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT -
Ukládání a obnova pravidel:
iptables-save > /etc/iptables/rules.v4- uloženíiptables-restore < /etc/iptables/rules.v4- obnova
nftables (moderní náhrada iptables)
-
Výhody oproti iptables:
- Jednotná syntaxe pro IPv4/IPv6
- Atomické aktualizace pravidel
- Čitelnější konfigurace
-
Základní příkazy:
nft list ruleset- zobrazení pravidelnft add table- přidání tabulkynft add chain- přidání řetězcenft add rule- přidání pravidla
firewalld (správce firewallu)
- Zóny (zones):
- Předdefinované sady pravidel podle úrovně důvěry
- drop, block, public, external, dmz, work, home, internal, trusted
- Základní příkazy:
firewall-cmd --state- stav firewallufirewall-cmd --list-all- zobrazení konfiguracefirewall-cmd --add-service=http- povolení službyfirewall-cmd --add-port=8080/tcp- povolení portufirewall-cmd --runtime-to-permanent- uložení změn
ufw (Uncomplicated Firewall)
- Zjednodušená správa iptables:
ufw enable/ufw disable- zapnutí/vypnutíufw status verbose- zobrazení stavuufw allow 22/tcp- povolení SSHufw deny from 192.168.1.100- blokování IPufw default deny incoming- výchozí politika
Logování a monitoring
-
Logování pravidel:
- Použití cíle LOG pro záznam odpovídajících paketů
iptables -A INPUT -j LOG --log-prefix "FIREWALL: "
-
Zobrazení logů:
journalctl -k | grep "IN=.*OUT=.*"/var/log/kern.lognebo/var/log/messages
-
Monitoring provozu:
- Analýza logů pro detekci podezřelých aktivit
- Sledování odmítnutých spojení
- Identifikace pokusů o průnik
Bezpečnostní politiky a best practices
-
Princip nejmenších oprávnění:
- Povolit pouze nezbytný provoz
- Default DROP pro příchozí provoz
-
Doporučená pravidla:
- Povolit loopback rozhraní
- Povolit established a related spojení
- Povolit pouze potřebné služby
- Logovat odmítnutý provoz
-
Dokumentace konfigurace:
- Komentáře u pravidel
- Verzování konfigurace
- Dokumentace změn
Odkazy na zdroje informací
Teorie a základy
- Wikipedia - Firewall - Obecný článek o firewallu na české Wikipedii
- YouTube - Firewall Explained - Vizuální vysvětlení principů firewallu
iptables
- Arch Wiki - iptables - Kompletní dokumentace iptables
- Linuxtopia - iptables - Podrobný návod na iptables
- Arch Wiki - Simple stateful firewall - Příklad konfigurace stavového firewallu
nftables
- nftables Wiki - Oficiální dokumentace nftables
- Arch Wiki - nftables - Arch wiki dokumentace
firewalld a ufw
- Fedora - firewalld - Dokumentace firewalld
- Ubuntu - ufw - Ubuntu dokumentace ufw
NAT a port forwarding
- Linuxtopia - NAT - NAT s iptables
- DigitalOcean - NAT - Praktické příklady
Připrav se na HAXAGONu
Bezpečnost sítí:
- Firewall v linuxu - úvod
- Firewall v linuxu - NAT