Firewall na Linuxu hraje zásadní roli v zabezpečení počítačového systému. Funguje jako bariéra, řídí a filtruje síťový provoz, aby chránil systém před neoprávněným přístupem, útoky a dalšími hrozbami. Bez správně nakonfigurované brány firewall by mohl být server zranitelný vůči různým typům kybernetických útoků, což by mělo vážné důsledky pro bezpečnost a důvěrnost dat.
V tomto článku se podíváme na dva hlavní nástroje pro konfiguraci Linuxového firewallu: firewalld a iptables. Provedeme srovnávací analýzu jejich vlastností, funkčnosti a výhod. Dále poskytneme podrobné pokyny k nastavení a používání každého z těchto nástrojů a také probereme osvědčené postupy pro zabezpečení systému pomocí firewallu na platformě Linux. Všechny akce budou demonstrovány na virtuálním serveru s root přístupem.
Konfigurace firewallu v systému Linux
Firewalld (Firewall Daemon) je program pro správu firewallu v operačních systémech Linux. Poskytuje uživatelské rozhraní pro konfiguraci pravidel firewallu, povolování nebo blokování připojení síťových aplikací. Ve většině serverových distribucí je standardně předinstalován. Pokud Firewalld není předinstalován, lze jej nainstalovat nezávisle z oficiálních repozitářů distribuce.
U systémů Red Hat (jako RHEL, CentOS, Fedora) se instalace provádí příkazem:
yum install firewalld
Pro Debian/Ubuntu:
apt-get install firewalld
Po instalaci jej lze spustit a ihned aktivovat příkazem:
systemctl start firewalld
Dále musíte službu přidat do spuštění:
systemctl enable firewalld
V tomto okamžiku doporučujeme deaktivovat ufw, protože současné použití tohoto nástroje s firewalld nebo iptables se nedoporučuje. Zkontrolujte stav:
systemctl status ufw
Chcete-li to zastavit, zadejte příkaz:
systemctl stop ufw
Pro úplnou deaktivaci:
ufw disable
Po těchto akcích můžete pokračovat v konfiguraci brány firewall.
Nejprve je nutné definovat zóny důvěryhodnosti. Firewalld používá koncept zón k určení úrovně důvěryhodnosti síťových rozhraní. Každému rozhraní je přiřazena jedna zóna a pravidla brány firewall jsou aplikována na základě zóny. Seznam všech dostupných zón se otevře příkazem:
firewall-cmd --get-zones
Obvykle se používají 4 hlavní zóny:
- Veřejné: Tato zóna je určena pro sítě, které považujete za nebezpečné;
- soukromý: Platí pro domácí sítě nebo jiná důvěryhodná síťová připojení;
- Interní: Používá se pro interní sítě, jako jsou sítě v rámci organizace nebo podnikové sítě;
- DMZ: V této zóně jsou obvykle umístěny servery, které by měly být přístupné z internetu.
To je však jen jeden příklad. Vlastní zónu můžete přidat pomocí příkazu:
firewall-cmd --permanent --new-zone=nameyourzone
Po přidání je nutné znovu načíst:
firewall-cmd --reload
K odstranění zóny se používá podobná metoda
firewall-cmd --permanent --delete-zone=nameyourzone
Po definování zón je nutné povolit provoz pro potřebné služby a porty. Chcete-li povolit určitou službu, použijte příkaz:
firewall-cmd --zone=public --add-service=name
Kde název je název služby. Například pro povolení provozu pro Apache:
firewall-cmd --zone=public --add-service=http
Chcete-li definovat povolené porty, použijte příkaz:
firewall-cmd --zone=public --add-port=number/protocol
Například standardní port 22 pro SSH by vypadal takto:
firewall-cmd --zone=public --add-port=22/tcp
V této fázi jsou již vytvořena hlavní pravidla. Dále určete, jak bude provoz zpracováván v závislosti na zdroji, cíli, portu a dalších kritériích. Přidání pravidla (na příkladu veřejné zóny):
firewall-cmd --zone=public rule
Chcete-li například povolit příchozí provoz z libovolného zdroje na port 80 (HTTP):
firewall-cmd --zone=public --add-port=80/tcp --permanent
Postup odstranění pravidla:
firewall-cmd --permanent --remove-rule=rule_specification
Kde pravidlo je typ pravidla (např. port, služba, rich-rule atd.) a specifikace_pravidla je specifikace samotného pravidla.
Po provedení změn v konfiguraci Firewallu je nutné je uložit a použít. Chcete-li uložit změny, použijte příkaz:
firewall-cmd --runtime-to-permanent
Chcete-li použít změny:
firewall-cmd --reload
Po dokončení nastavení můžete vybrané parametry ověřit otevřením seznamu všech pravidel:
firewall-cmd --list-all
Pokud se vyskytnou nějaké problémy, zkontrolujte protokoly brány firewall pomocí příkazu:
journalctl -u firewalld
Poznámka: Popsali jsme pouze obecný algoritmus pro nastavení připojení. Nástroj má rozsáhlou funkcionalitu. Úplné informace o všech dostupných možnostech naleznete v oficiální dokumentaci nebo v nápovědě:
firewall-cmd --help
Konfigurace iptables na Linuxu
Na rozdíl od Firewalldu je iptables starší, ale stále hojně používaný nástroj v Linuxu pro správu firewallu. Poskytuje přímější a flexibilnější přístup k pravidlům filtrování paketů na úrovni jádra Linuxu. Ve srovnání s Firewallem však iptables vyžaduje pokročilejší znalosti a zkušenosti, takže je pro začátečníky méně dostupný. Zkontrolujte předinstalovanou verzi nástroje pomocí příkazu:
iptables -V
Pokud nástroj není nainstalován, bude nutné jej nainstalovat. Příkaz pro instalaci na Ubuntu, Debian:
apt install iptables
Pro systémy Red Hat (např. CentOS, Fedora):
yum install iptables
Příkaz pro aktivaci po instalaci:
systemctl start iptables
Chcete-li přidat do spuštění, spusťte:
systemctl enable iptables
Před zahájením konfigurace iptables je důležité pochopit, jak funguje. Tomu napomáhá syntaxe programu. Vypadá to následovně:
iptables -t table action chain additional_parameters
Pojďme se ponořit hlouběji do každé položky.
Iptables má čtyři hlavní tabulky: filter, nat, mangle a raw . Každá z nich je určena pro zpracování určitých typů paketů a má své vlastní řetězce pravidel:
- filtr: Toto je nejčastěji používaná tabulka obsahující pravidla filtrování paketů. Používá se pro rozhodování, zda povolit nebo zakázat pakety.
- Nat: Tato tabulka se používá pro úpravu síťových adres a portů v paketech. Často se používá pro nastavení maskování (NAT).
- mandl: V této tabulce můžete upravit hlavičky paketů. Používá se pro specializované paketové operace, jako je označování.
- syrový: Tato tabulka se používá pro konfiguraci pravidel, která platí před tím, než projdou systémem sledování připojení. Obvykle se používá pro nastavení pravidel, která by systém sledování neměl měnit, jako je zahazování paketů z určitých adres.
Každý stůl obsahuje sadu řetězů. Řetězce jsou posloupností pravidel, která se kontrolují postupně. Existují tři předdefinované řetězce:
- INPUT (příchozí). Pravidla v tomto řetězci určují, co dělat s příchozími pakety.
- VÝSTUP (odchozí). Tento řetězec se vztahuje na všechny pakety, které váš počítač odesílá do jiných zařízení nebo počítačů v síti.
- FORWARD (předávání). Pravidla v tomto řetězci určují, co dělat s předávanými pakety.
Konečně, každý řetězec má nějakou akci (cíl). V praxi se používá 5 hlavních akcí:
- AKCEPTOVAT: Umožněte paketu projít bránou firewall.
- DROP: Odmítněte paket a zahoďte jej bez jakékoli odpovědi.
- ODMÍTNOUT: Odmítněte paket a odešlete odesílateli chybovou zprávu ICMP.
- LOG: Zapište paket do systémového protokolu a proveďte jinou akci (např. ACCEPT nebo DROP).
- VRÁTIT SE: Přestaňte kontrolovat pravidla v aktuálním řetězci a vraťte se do volajícího řetězce (pokud je to možné).
Chcete-li zahájit nastavení, otevřete seznam existujících pravidel příkazem:
iptables -L
Jako vodítko pro konfiguraci Iptables se podívejme na praktické příklady nejčastěji používaných příkazů. Pro usnadnění rozdělíme příklady do 3 skupin v závislosti na konkrétním řetězci.
VSTUP řetězce :
- Povolit příchozí provoz přes protokol TCP na portu 80:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
2. Povolte příchozí provoz přes protokol UDP na portu 22:
iptables -A INPUT -p udp --dport 22 -j ACCEPT
3. Blokujte příchozí provoz z konkrétní IP adresy:
iptables -A INPUT -s 192.168.1.100 -j DROP
VÝSTUP řetězce :
- Povolit odchozí provoz přes protokol TCP na portu 443:
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
2. Povolte odchozí provoz přes protokol UDP na portu 80:
iptables -A OUTPUT -p udp --dport 80 -j ACCEPT
3. Blokujte odchozí provoz na konkrétní port (například 21):
iptables -A OUTPUT -p tcp --dport 21 -j DROP
Řetěz VPŘED :
- Blokovat přesměrovaný provoz z určitého rozsahu IP adres:
iptables -A FORWARD -s 172.16.0.0/24 -j DROP
2. Blokujte předávání paketů z konkrétního síťového rozhraní:
iptables -A FORWARD -i eth1 -j DROP
3. Omezte počet současných připojení pro konkrétní port (v tomto příkladu 10 připojení za minutu na portu 80):
iptables -A INPUT -p tcp --dport 80 -m limit --limit 10/minute -j ACCEPT
Jak vidíte, v každém samostatném případě se používá další argument (příkaz). Chcete-li získat úplný seznam možných argumentů a celkovou podporu funkcí nástroje, zadejte:
iptables -h
Chcete-li zajistit správnost nastavení, zadejte příkaz znovu a zobrazte seznam pravidel:
iptables -L
Chcete-li odstranit konkrétní pravidlo, použijte příkaz:
iptables -D chain rule_number
Pokud například chcete odstranit pravidlo číslo 1 z řetězce INPUT, příkaz bude vypadat takto:
iptables -D INPUT 1
Chcete-li odstranit všechna pravidla jedním příkazem:
iptables -F
Důležitá poznámka : pravidla iptables se po restartu systému nebo služby automaticky neukládají. Chcete-li pravidla uložit, je třeba je přidat do konfiguračního souboru a po restartu obnovit. S tím vám mohou pomoci utility iptables-save a iptables-restore . Chcete-li pravidla uložit, zadejte příkaz:
iptables-save > /etc/iptables/rules.v4
Tím se uloží aktuální pravidla iptables do souboru rules.v4. Pro obnovení po restartu zadejte:
iptables-restore < /etc/iptables/rules.v4
Tento příkaz obnoví pravidla ze souboru rules.v4.
Závěr
Konfigurace brány firewall v systému Linux pomocí brány firewalld nebo iptables je důležitým aspektem zajištění bezpečnosti serveru. Oba nástroje nabízejí spolehlivé prostředky pro řízení síťového provozu a ochranu systému před neoprávněným přístupem a kybernetickými útoky. Volba mezi firewallem a iptables závisí na konkrétních potřebách a preferencích uživatele s ohledem na jejich různé funkce a silné stránky.