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í
  • 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 pravidel
    • iptables -L -v -n - detailní výpis s čísly
    • iptables -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í pravidel
    • nft add table - přidání tabulky
    • nft add chain - přidání řetězce
    • nft 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 firewallu
    • firewall-cmd --list-all - zobrazení konfigurace
    • firewall-cmd --add-service=http - povolení služby
    • firewall-cmd --add-port=8080/tcp - povolení portu
    • firewall-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í stavu
    • ufw allow 22/tcp - povolení SSH
    • ufw deny from 192.168.1.100 - blokování IP
    • ufw 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.log nebo /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

iptables

nftables

firewalld a ufw

NAT a port forwarding

Připrav se na HAXAGONu

Bezpečnost sítí:

  • Firewall v linuxu - úvod
  • Firewall v linuxu - NAT