Náš svět nebyl nikdy tak propojený, jako je právě teď. Každý člověk, firma, vláda atd. používá web ke komunikaci, výměně měn a dat a obecně prochází pohyby každodenního života a operací. Tato spojení však nejsou ze své podstaty bezpečná, a proto musíme zavést obranná opatření, abychom ochránili naši polohu, informace a peníze. V dobách minulých, když někdo chtěl zabezpečit jejich majetek, postavili brány a ploty, aby vetřelce udrželi v dostatečné vzdálenosti. Dnes dosahujeme stejných cílů pomocí firewallů. Většina linuxových systémů používala iptables
užitečnost, na obzoru však byla nová technologie.
S představením Red Hat Enterprise Linux 7.0 (RHEL) v roce 2011 byly iptables nahrazeny jako firewalld
byl narozen. Ve svém jádru firewalld
je zónový firewall. Zónové firewally jsou systémy zabezpečení sítě, které monitorují provoz a provádějí akce na základě sady definovaných pravidel aplikovaných proti příchozím/odchozím paketům.
Vše o zónách
Firewalld
poskytuje různé úrovně zabezpečení pro různé zóny připojení. Zóna je přidružena alespoň k jednomu síťovému rozhraní (eth0
, například). Předkonfigurované zóny vidíme pomocí následujícího příkazu:
[tcarrigan@server ~]$ firewall-cmd --get-zones
block dmz drop external home internal libvirt public trusted work
Jak vidíte, ve výchozím nastavení jsou uvedeny zóny:
- blokovat
- dmz
- klesnout
- externí
- domů
- interní
- libvirt
- veřejné
- důvěryhodný
- práce
POZNÁMKA:Pro tuto ukázku používám virtuální stroj RHEL 8.2.
Obecně platí, že výchozím pravidlem firewallu je zakázat vše a povolit pouze určité výjimky pro potřebné služby.
Mnohokrát je užitečné podívat se, jaké služby jsou spojeny s danou zónou. Chcete-li zobrazit tyto informace, použijte následující příkaz:
firewall-cmd --list-all
Všimněte si, že pokud neurčíte zónu, bude dotazována výchozí zóna. Zde je výchozí zóna public
zóny.
[tcarrigan@server ~]$ firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3 enp0s8
sources:
services: cockpit dhcpv6-client mountd nfs rpc-bind ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Pokud chcete určit zónu, jednoduše přidejte --zone=zonename
Chcete-li například zobrazit external
zóny, použijte následující:
[tcarrigan@server ~]$ firewall-cmd --zone=external --list-all
external
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh
ports:
protocols:
masquerade: yes
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Pokud jste z nějakého důvodu chtěli změnit výchozí zónu, můžete to snadno udělat pomocí následujícího příkazu:
firewall-cmd --set-default=zonename
Povolit a zakázat službou
Dobrá věc na firewallech je, že udržují naše sítě v bezpečí. Špatná věc je, že neexistuje žádný „univerzální“ firewall, který by vyhovoval každé situaci. Z tohoto důvodu jsou firewally přizpůsobeny tak, aby přesně odpovídaly potřebám situace, ve které jsou nasazeny. Například pokud potřebuji povolit přenosy FTP (File Transfer Protocol) v external
zóny, abych mohl přesunout soubor přes port 21, mohl bych použít něco takového:
firewall-cmd --zone=external --add-service=ftp
Zde je skutečný příklad z mého VM:
[tcarrigan@server ~]$ sudo firewall-cmd --zone=external --add-service=ftp
[sudo] password for tcarrigan:
success
Vidíme, že démon vrátil úspěch , takže bychom měli mít povolenou službu FTP v external
pásmo. Abychom to mohli ověřit, musíme zkontrolovat external
seznam služeb zóny:
[tcarrigan@server ~]$ firewall-cmd --zone=external --list-services
ftp ssh
Ale co se stane, když znovu načteme konfiguraci firewallu?
[tcarrigan@server ~]$ sudo firewall-cmd --reload
success
[tcarrigan@server ~]$ firewall-cmd --zone=external --list-all
external
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh
ports:
protocols:
masquerade: yes
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Nové povolit pravidlo nepřežije reinicializaci firewalld
konfigurace. Aby bylo zajištěno, že naše nové pravidlo přetrvává, musíme přidat --permanent
volba. Nový příkaz je:
# firewall-cmd --permanent --zone=external --add-service=ftp
Jakmile použijete permanent
musíte znovu načíst konfiguraci, aby se změny uchytily.
Abychom odstranili službu, provedeme jednu malou změnu v syntaxi. Zde se chystám odebrat službu FTP z external
zóna trvale:
[tcarrigan@server ~]$ sudo firewall-cmd --permanent --zone=external --remove-service=ftp
Warning: NOT_ENABLED: ftp
success
Vidíme, že mě systém varuje, že FTP bylo zakázáno a že operace byla úspěšná.
Povolit a zakázat podle portu
Co se nyní stane, když potřebujete povolit provoz přes nestandardní port? Představte si, že máte zálohovací službu, která musí běžet přes vyhrazený port UDP. Jak byste přidali tuto výjimku do vaší zóny? Syntaxe je velmi uživatelsky přívětivá a jen mírně se liší od toho, co jsme použili pro služby. Chcete-li přidat port do konfigurace zóny, použijte následující:
[tcarrigan@server ~]$ sudo firewall-cmd --permanent --zone=external --add-port=60001/udp
success
Povolené porty zkontrolujeme pomocí následujícího příkazu:
[tcarrigan@server ~]$ sudo firewall-cmd --zone=external --list-ports
60001/udp
A chcete-li odstranit pravidlo portu, uhodli jste správně... jednoduše přepněte --add-port=x
na --remove-port=x
[tcarrigan@server ~]$ sudo firewall-cmd --permanent --zone=external --remove-port=60001/udp
success
Co bude dál?
Pokud se po přečtení tohoto článku ptáte, co s informacemi dělat, vřele doporučuji zapnout váš oblíbený VM (RHEL, Fedora, CentOS atd.) a začít experimentovat s příkazy výše. Nejlepší způsob, jak se učit, je získat praktické zkušenosti. Pokud vás tento obsah zaujal, sledujte část Povolit Sysadmin ve druhé části, kde se ponoříte do vytváření vlastních zón a pokročilejšího vytváření pravidel.
[ Usnadněte si správu sítě. Podívejte se na Automatizaci sítě pro každého, bezplatnou knihu od společnosti Red Hat. ]