Jak konfigurovat a spravovat bránu Firewall na CentOS 8

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 #

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 pro IPv4 a icmp6-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:

  1. Změna konfigurace runtime a aby bylo trvalé:

    sudo firewall-cmd <options>sudo firewall-cmd --runtime-to-permanent
  2. 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 firewalldsudo 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:

  1. Vytvořit zóny:

    sudo firewall-cmd --new-zone=memcached --permanent
  2. Přidat pravidla do zóny:

    sudo firewall-cmd --zone=memcached --add-port=11211/udp --permanentsudo firewall-cmd --zone=memcached --add-port=11211/tcp --permanentsudo firewall-cmd --zone=memcached --add-source=192.168.100.30/32 --permanent
  3. 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:

/ usr / lib/firewalld / services / http.xml
<?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
Pokud upravujete výchozí zóny můžete vynechat --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.

/ etc / firewalld / services / plexmediaserver.xml
<?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í.



+