firewall je metoda pro monitorování a filtrování příchozího a odchozího síťového provozu. Funguje tak, že definuje sadu bezpečnostních pravidel, která určují, zda povolit nebo blokovat konkrétní provoz. Správně nakonfigurovaný firewall je jedním z nejdůležitějších aspektů celkové bezpečnosti systému.
CentOS 8 je dodáván s démonem firewallu jménem firewalld. Jedná se o kompletní řešení s rozhraním D-Bus, které vám umožní dynamicky spravovat bránu firewall systému.
v tomto tutoriálu budeme hovořit o tom, jak konfigurovat a spravovat bránu firewall na CentOS 8. Vysvětlíme také základní pojmy FirewallD.
- předpoklady #
- základní Firewalld pojmy #
- Firewalld Zóny #
- služby firewallu #
- Firewalld Runtime a trvalé nastavení #
- Umožňuje FirewallD #
- Firewalld Zóny #
- Změna cíle zóny #
- Přidělení rozhraní do jiné zóny, #
- Změna Výchozí Zóna #
- Vytvoření nové Zóny #
- Firewalld Služby #
- vytvoření nové služby FirewallD #
- Otevření Přístavů a Zdroj IPs #
- Otevření zdrojové IP #
- Otevření zdrojový port #
- Přesměrování Portů #
- Vpřed provoz z jednoho portu na IP adresu #
- přesměrování provozu na jinou IP adresu #
- přesměrování provozu na jiný server na jiném portu #
- Závěr #
předpoklady #
Chcete-li nakonfigurovat službu firewall, musíte být přihlášeni jako root nebo uživatel s oprávněními sudo.
základní Firewalld pojmy #
firewalld používá pojmy zón a služeb. Na základě zón a služeb, které nakonfigurujete, můžete řídit, jaký provoz je povolen nebo blokován do a ze systému.
Firewalld lze konfigurovat a spravovat pomocí nástroje příkazového řádku firewall-cmd
.
v CentOS 8 je iptables nahrazen nftables jako výchozí backend firewallu pro démona firewalld.
Firewalld Zóny #
Zóny jsou předdefinované sady pravidel, které určují úroveň důvěryhodnosti sítě je počítač připojen k. Do zóny můžete přiřadit síťová rozhraní a zdroje.
Níže jsou uvedeny zóny poskytované FirewallD seřazené podle úrovně důvěry zóny od nedůvěryhodné po důvěryhodnou:
- pokles: Všechna příchozí připojení jsou zrušena bez jakéhokoli oznámení. Povolena jsou pouze odchozí připojení.
- blok: všechna příchozí spojení jsou odmítnuta zprávou
icmp-host-prohibited
proIPv4
aicmp6-adm-prohibited
pro IPv6n. povolena jsou pouze odchozí spojení. - veřejnost: pro použití v nedůvěryhodných veřejných prostorách. Nedůvěřujete jiným počítačům v síti, ale můžete povolit vybraná příchozí připojení.
- externí: pro použití v externích sítích s povoleným maskováním NAT, když váš systém funguje jako brána nebo router. Povolena jsou pouze vybraná příchozí připojení.
- interní: pro použití v interních sítích, když váš systém funguje jako brána nebo router. Ostatní systémy v síti jsou obecně důvěryhodné. Povolena jsou pouze vybraná příchozí připojení.
- dmz: Používá se pro počítače umístěné ve vaší demilitarizované zóně, které mají omezený přístup ke zbytku vaší sítě. Povolena jsou pouze vybraná příchozí připojení.
- práce: používá se pro pracovní stroje. Ostatní počítače v síti jsou obecně důvěryhodné. Povolena jsou pouze vybraná příchozí připojení.
- Úvod: Používá se pro domácí stroje. Ostatní počítače v síti jsou obecně důvěryhodné. Povolena jsou pouze vybraná příchozí připojení.
- důvěryhodné: všechna síťová připojení jsou přijímána. Důvěřujte všem počítačům v síti.
služby firewallu #
služby Firewalld jsou předdefinovaná pravidla, která platí v zóně a definují nezbytná nastavení pro umožnění příchozího provozu pro konkrétní službu. Služby vám umožňují snadno provádět několik úkolů v jednom kroku.
služba může například obsahovat definice týkající se otevírání portů, předávání provozu a dalších.
Firewalld Runtime a trvalé nastavení #
Firewalld používá dvě oddělené konfigurační sady, runtime a trvalou konfiguraci.
runtime konfigurace je skutečná běžící konfigurace a při restartu přetrvává. Když se spustí démon firewalld, načte trvalou konfiguraci, která se stane runtime konfigurací.
ve výchozím nastavení jsou při provádění změn konfigurace Firewalld pomocí nástroje firewall-cmd
změny aplikovány na konfiguraci runtime. Chcete-li, aby změny byly trvalé, přidejte do příkazu volbu --permanent
.
Chcete-li použít změny v obou konfigurační sady, můžete použít jednu z následujících dvou metod:
-
Změna konfigurace runtime a aby bylo trvalé:
sudo firewall-cmd <options>
sudo firewall-cmd --runtime-to-permanent
-
Změnit trvalé konfigurace a znovu firewalld daemon:
sudo firewall-cmd --permanent <options>
sudo firewall-cmd --reload
Umožňuje FirewallD #
Na CentOS 8, firewalld je nainstalována a povolena ve výchozím nastavení. Pokud z nějakého důvodu není nainstalován ve vašem systému, můžete nainstalovat a spustit démona zadáním:
sudo dnf install firewalld
sudo systemctl enable firewalld --now
stav služby firewall můžete zkontrolovat pomocí:
sudo firewall-cmd --state
pokud je brána firewall povolena, příkaz by měl vytisknout running
. V opačném případě uvidíte not running
.
Firewalld Zóny #
Pokud jste nezměnili, výchozí zóna je nastavena na public
a všechna síťová rozhraní jsou do této zóny zařazeny.
výchozí zóna je ta, která se používá pro vše, co není explicitně přiřazeno jiné zóně.
výchozí zónu můžete zobrazit zadáním:
sudo firewall-cmd --get-default-zone
public
Chcete-li získat seznam všech dostupných zón, zadejte:
sudo firewall-cmd --get-zones
block dmz drop external home internal public trusted work
vidět aktivní zóny a síťových rozhraní, které jim:
sudo firewall-cmd --get-active-zones
následující výstup ukazuje, že rozhraní eth0
a eth1
jsou přiřazeny k public
zóny:
public interfaces: eth0 eth1
můžete vytisknout zóny nastavení konfigurace s:
sudo firewall-cmd --zone=public --list-all
public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: ssh dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Z výstupu výše, můžeme vidět, že veřejná zóna je aktivní a používá výchozí cíl, který je REJECT
. Výstup také ukazuje, že zóna je používána rozhraními eth0
a eth1
a umožňuje provoz klienta DHCP a SSH.
Pokud chcete zkontrolovat konfigurace všech dostupných zón typu:
sudo firewall-cmd --list-all-zones
příkaz vytiskne obrovský seznam s nastavením všech dostupných zóny.
Změna cíle zóny #
cíl definuje výchozí chování zóny pro příchozí provoz, který není zadán. Lze jej nastavit na jednu z následujících možností: default
, ACCEPT
, REJECT
, a DROP
.
Chcete-li nastavit cíl zóny, zadejte zónu s volbou --zone
a cíl s volbou --set-target
.
například, změnit public
zóny je cíl DROP
spustit:
sudo firewall-cmd --zone=public --set-target=DROP
Přidělení rozhraní do jiné zóny, #
můžete vytvořit konkrétní sady pravidel pro různé zóny a přiřadit různá rozhraní k nim. To je užitečné zejména při více rozhraní na vašem počítači.
Chcete-li přiřadit rozhraní jiné zóně, zadejte zónu s volbou --zone
a rozhraní s volbou --change-interface
.
například následující příkaz přiřadí rozhraní eth1
zóně work
:
sudo firewall-cmd --zone=work --change-interface=eth1
Ověřte, zda se změny zadáním:
sudo firewall-cmd --get-active-zones
work interfaces: eth1public interfaces: eth0
Změna Výchozí Zóna #
Chcete-li změnit výchozí zóny, použijte --set-default-zone
možnost následuje název zóny, kterou chcete nastavit jako výchozí.
například, chcete-li změnit výchozí zóny home
spusťte následující příkaz:
sudo firewall-cmd --set-default-zone=home
zkontrolujte změny, s:
sudo firewall-cmd --get-default-zone
home
Vytvoření nové Zóny #
Firewalld také umožňuje vytvořit své vlastní zóny. To je užitečné, pokud chcete vytvořit pravidla pro jednotlivé aplikace.
V následujícím příkladu vytvoříme novou zónu s názvem memcached
, otevřete port 11211
a povolit přístup pouze z 192.168.100.30
IP adresa:
-
Vytvořit zóny:
sudo firewall-cmd --new-zone=memcached --permanent
-
Přidat pravidla do zóny:
sudo firewall-cmd --zone=memcached --add-port=11211/udp --permanent
sudo firewall-cmd --zone=memcached --add-port=11211/tcp --permanent
sudo firewall-cmd --zone=memcached --add-source=192.168.100.30/32 --permanent
-
Znovu firewalld daemon pro aktivaci změn:
sudo firewall-cmd --reload
Firewalld Služby #
S firewalld můžete povolit provoz pro konkrétní porty a/nebo zdrojů na základě předdefinovaných pravidel názvem služby.
Chcete-li získat seznam všech výchozích dostupných služeb typu:
sudo firewall-cmd --get-services
další informace o každé službě najdete otevřením přidružené služby .xml soubor v adresáři /usr/lib/firewalld/services
. Například služba HTTP je definována takto:
<?xml version="1.0" encoding="utf-8"?><service> <short>WWW (HTTP)</short> <description>HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.</description> <port protocol="tcp" port="80"/></service>
povolit příchozí přenosy protokolu HTTP (port 80) pro rozhraní ve veřejné zóně, pouze pro aktuální relaci (runtime konfiguraci) typ:
sudo firewall-cmd --zone=public --add-service=http
--zone
možnost.K ověření, že služba byla úspěšně přidána použít --list-services
možnost:
sudo firewall-cmd --zone=public --list-services
ssh dhcpv6-client http
Aby port 80 otevřít po restartu spustit stejný příkaz znovu s --permanent
možnost, nebo spustit:
sudo firewall-cmd --runtime-to-permanent
Použijte --list-services
spolu s --permanent
možnost ověřit změny:
sudo firewall-cmd --permanent --zone=public --list-services
ssh dhcpv6-client http
syntaxe pro odstranění služby je stejný jako při přidávání. Stačí použít --remove-service
místo příznaku --add-service
:
sudo firewall-cmd --zone=public --remove-service=http --permanent
výše uvedený příkaz odstraní službu http
z trvalé konfigurace veřejné zóny.
vytvoření nové služby FirewallD #
jak jsme již zmínili, výchozí služby jsou uloženy v adresáři /usr/lib/firewalld/services
. Nejjednodušší způsob, jak vytvořit novou službu, je zkopírovat existující soubor služeb /etc/firewalld/services
adresář, který je umístění na vytvořené uživatelem služby a upravit soubor nastavení.
například, vytvořit služby definice pro Plex Media Server, můžete použít službu SSH souboru:
sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/plexmediaserver.xml
Otevřete nově vytvořený plexmediaserver.xml
soubor a změnit krátký název a popis služby v rámci <short>
a <description>
tagy. Nejdůležitější značkou, kterou musíte změnit, je značka port
, která definuje číslo portu a protokol, který chcete otevřít.
v následujícím příkladu otevíráme porty 1900
UDP a 32400
TCP.
<?xml version="1.0" encoding="utf-8"?><service version="1.0"><short>plexmediaserver</short><description>Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere.</description><port protocol="udp" port="1900"/><port protocol="tcp" port="32400"/></service>
Uložte soubor a znovu načíst FirewallD služby:
sudo firewall-cmd --reload
nyní můžete použít plexmediaserver
služby v pásmech stejný jako všechny ostatní služby.
Otevření Přístavů a Zdroj IPs #
Firewalld také umožňuje rychle povolit veškerý provoz z důvěryhodné IP adresy, nebo na konkrétní port, bez vytvoření služby definice.
Otevření zdrojové IP #
, Aby všichni příchozí provoz z konkrétní IP adresu (nebo rozsah), určit zóny s --zone
volba a zdroj IP s --add-source
možnost.
Chcete-li například povolit veškerý příchozí provoz z 192.168.1.10 v zóně public
, spusťte:
sudo firewall-cmd --zone=public --add-source=192.168.1.10
udělejte nové pravidlo trvalé:
sudo firewall-cmd --runtime-to-permanent
ověřte změny pomocí následujícího příkazu:
sudo firewall-cmd --zone=public --list-sources
192.168.1.10
syntaxe pro odebrání zdrojové IP je stejná jako při přidávání. Stačí použít --remove-source
místo --add-source
možnost:
sudo firewall-cmd --zone=public --remove-source=192.168.1.10
Otevření zdrojový port #
povolit všechny příchozí provoz na daném portu, zadejte zónu s --zone
možnost a port a protokol s --add-port
možnost.
například, aby otevřít port 8080
ve veřejné zóny pro aktuální relaci ty rány spustit:
sudo firewall-cmd --zone=public --add-port=8080/tcp
protokol může být buď tcp
, udp
, sctp
, nebo dccp
.
Ověření změn:
sudo firewall-cmd --zone=public --list-ports
8080
udržet port otevřít po restartu, přidejte pravidlo pro trvalé nastavení spuštěním stejného příkazu pomocí --permanent
vlajky nebo provedením:
sudo firewall-cmd --runtime-to-permanent
syntaxe pro odstranění port je stejný jako při přidávání portu. Stačí použít --remove-port
místo možnosti --add-port
.
sudo firewall-cmd --zone=public --remove-port=8080/tcp
Přesměrování Portů #
Aby předal provoz z jednoho portu na jiný port, nejprve povolit maskující pro požadované pásmo pomocí --add-masquerade
možnost. Chcete-li například povolit maskování pro zónu external
, zadejte:
sudo firewall-cmd --zone=external --add-masquerade
Vpřed provoz z jednoho portu na IP adresu #
V následujícím příkladu jsme přesměrování provoz z portu 80
na portu 8080
na stejném serveru:
sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080
přesměrování provozu na jinou IP adresu #
V následujícím příkladu jsme přesměrování provoz z portu 80
na portu 80
na serveru s IP 10.10.10.2
:
sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.10.10.2
přesměrování provozu na jiný server na jiném portu #
V následujícím příkladu jsme přesměrování provoz z portu 80
na portu 8080
na serveru s IP 10.10.10.2
:
sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.10.10.2
Aby předal pravidlo trvalé, použijte:
sudo firewall-cmd --runtime-to-permanent
Závěr #
Jste se naučili, jak konfigurovat a spravovat firewalld služby na CentOS 8 systém.
nezapomeňte povolit všechna příchozí připojení, která jsou nezbytná pro správné fungování vašeho systému, a zároveň omezit všechna nepotřebná připojení.