GNU/Linux >> Znalost Linux >  >> Cent OS

Jak nakonfigurovat 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ého zabezpečení systému.

CentOS 8 se dodává s démonem brány firewall s názvem firewalld. Jedná se o kompletní řešení s rozhraním D-Bus, které vám umožňuje dynamicky spravovat systémový firewall.

V tomto tutoriálu budeme hovořit o tom, jak nakonfigurovat a spravovat firewall na CentOS 8. Vysvětlíme také základní koncepty FirewallD.

Předpoklady #

Chcete-li nakonfigurovat službu brány firewall, musíte být přihlášeni jako uživatel root nebo uživatel s právy sudo.

Základní koncepty brány firewall #

firewalld používá koncepty zón a služeb. Na základě zón a služeb, které nakonfigurujete, můžete ovládat, jaký provoz je povolen nebo blokován do a ze systému.

Firewalld lze konfigurovat a spravovat pomocí firewall-cmd nástroj příkazového řádku.

V CentOS 8 je iptables nahrazeno nftables jako výchozí backend firewallu pro firewalld démona.

Zóny brány firewall #

Zóny jsou předdefinované sady pravidel, které určují úroveň důvěryhodnosti sítí, ke kterým je váš počítač připojen. K zóně můžete přiřadit síťová rozhraní a zdroje.

Níže jsou zóny poskytované FirewallD seřazené podle úrovně důvěryhodnosti zóny od nedůvěryhodné po důvěryhodné:

  • pokles :Všechna příchozí připojení jsou přerušena bez jakéhokoli upozornění. Jsou povolena pouze odchozí připojení.
  • blokovat :Všechna příchozí připojení jsou odmítnuta s icmp-host-prohibited zprávu pro IPv4 a icmp6-adm-prohibited pro IPv6n. Jsou povolena pouze odchozí připojení.
  • veřejné :Pro použití v nedůvěryhodných veřejných prostorách. Ostatním počítačům v síti nedůvěřujete, 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 směrovač. Jsou povolena 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 směrovač. Ostatní systémy v síti jsou obecně důvěryhodné. Jsou povolena 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ě. Jsou povolena 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é. Jsou povolena pouze vybraná příchozí připojení.
  • domů :Používá se pro domácí stroje. Ostatní počítače v síti jsou obecně důvěryhodné. Jsou povolena pouze vybraná příchozí připojení.
  • důvěryhodný :Všechna síťová připojení jsou akceptována. Důvěřujte všem počítačům v síti.

Služby brány firewall #

Služby brány firewall jsou předdefinovaná pravidla, která platí v rámci zóny a definují nezbytná nastavení pro povolení příchozího provozu pro konkrétní službu. Služby vám umožňují snadno provádět několik úkolů v jediném kroku.

Služba může například obsahovat definice o otevírání portů, přesměrování provozu a další.

Běh brány firewall a trvalá nastavení #

Firewalld používá dvě oddělené konfigurační sady, runtime a trvalou konfiguraci.

Konfigurace runtime je skutečná spuštěná konfigurace a nezůstává po restartu. Když se démon firewalld spustí, načte trvalou konfiguraci, která se stane konfigurací běhového prostředí.

Ve výchozím nastavení při provádění změn v konfiguraci brány firewall pomocí firewall-cmd obslužný program, změny se použijí na konfiguraci runtime. Aby byly změny trvalé, připojte --permanent možnost k příkazu.

Chcete-li použít změny v obou konfiguračních sadách, můžete použít jednu z následujících dvou metod:

  1. Změňte konfiguraci runtime a nastavte ji na trvalou:

    sudo firewall-cmd <options>sudo firewall-cmd --runtime-to-permanent
  2. Změňte trvalou konfiguraci a znovu načtěte démona brány firewall:

    sudo firewall-cmd --permanent <options>sudo firewall-cmd --reload

Povolení brány FirewallD #

Na CentOS 8 je firewalld nainstalován a povolen ve výchozím nastavení. Pokud z nějakého důvodu není ve vašem systému nainstalován, můžete démona nainstalovat a spustit zadáním:

sudo dnf install firewalldsudo systemctl enable firewalld --now

Stav služby brány firewall můžete zkontrolovat pomocí:

sudo firewall-cmd --state

Pokud je povolena brána firewall, měl by příkaz vypsat running . V opačném případě uvidíte not running .

Zóny brány firewall #

Pokud jste ji nezměnili, výchozí zóna je nastavena na public a všechna síťová rozhraní jsou přiřazena této zóně.

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 zobrazíte 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

Chcete-li zobrazit aktivní zóny a k nim přiřazená síťová rozhraní:

sudo firewall-cmd --get-active-zones

Níže uvedený výstup ukazuje, že rozhraní eth0 a eth1 jsou přiřazeny k public zóna:

public
  interfaces: eth0 eth1

Nastavení konfigurace zóny můžete vytisknout pomocí:

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ýše uvedeného výstupu vidíme, že veřejná zóna je aktivní a používá výchozí cíl, kterým je REJECT . Výstup také ukazuje, že zóna je používána eth0 a eth1 rozhraní a umožňuje klienty DHCP a provoz SSH.

Pokud chcete zkontrolovat konfigurace všech dostupných zón, zadejte:

sudo firewall-cmd --list-all-zones

Příkaz vytiskne obrovský seznam s nastavením všech dostupných zón.

Změna cíle zóny #

Cíl definuje výchozí chování zóny pro příchozí provoz, který není specifiková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, určete zónu pomocí --zone a cíl pomocí --set-target možnost.

Chcete-li například změnit public cíl zóny na DROP běželi byste:

sudo firewall-cmd --zone=public --set-target=DROP

Přiřazení rozhraní k jiné zóně #

Můžete vytvořit specifické sady pravidel pro různé zóny a přiřadit jim různá rozhraní. To je zvláště užitečné, když máte na svém počítači více rozhraní.

Chcete-li přiřadit rozhraní k jiné zóně, určete zónu pomocí --zone a rozhraní s --change-interface možnost.

Například následující příkaz přiřadí eth1 rozhraní k work zóna:

sudo firewall-cmd --zone=work --change-interface=eth1

Ověřte změny zadáním:

sudo firewall-cmd --get-active-zones
work
  interfaces: eth1
public
  interfaces: eth0

Změna výchozí zóny #

Chcete-li změnit výchozí zónu, použijte --set-default-zone následuje název zóny, kterou chcete nastavit jako výchozí.

Chcete-li například změnit výchozí zónu na home spustíte následující příkaz:

sudo firewall-cmd --set-default-zone=home

Ověřte změny pomocí:

sudo firewall-cmd --get-default-zone
home

Vytváření nových zón #

Firewalld také umožňuje vytvářet vlastní zóny. To je užitečné, když 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řte zónu:

    sudo firewall-cmd --new-zone=memcached --permanent
  2. Přidejte 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 načtěte démona brány firewall, abyste aktivovali změny:

    sudo firewall-cmd --reload

Služby brány firewall #

S firewalld můžete povolit provoz pro konkrétní porty a/nebo zdroje na základě předdefinovaných pravidel nazývaných služby.

Chcete-li získat seznam všech výchozích dostupných typů služeb:

sudo firewall-cmd --get-services

Další informace o každé službě naleznete otevřením příslušného souboru .xml v /usr/lib/firewalld/services adresář. 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>

Chcete-li povolit příchozí provoz HTTP (port 80) pro rozhraní ve veřejné zóně, pouze pro aktuální relaci (konfiguraci runtime) typu:

sudo firewall-cmd --zone=public --add-service=http
Pokud upravujete výchozí zónu, můžete vynechat --zone volba.

Chcete-li ověřit, že služba byla úspěšně přidána, použijte --list-services možnost:

sudo firewall-cmd --zone=public --list-services
ssh dhcpv6-client http

Chcete-li po restartu ponechat otevřený port 80, spusťte stejný příkaz znovu s --permanent možnost nebo spusťte:

sudo firewall-cmd --runtime-to-permanent

Použijte --list-services spolu s --permanent možnost ověření vašich změn:

sudo firewall-cmd --permanent --zone=public --list-services
ssh dhcpv6-client http

Syntaxe pro odebrání služby je stejná jako při přidávání služby. Stačí použít --remove-service místo --add-service příznak:

sudo firewall-cmd --zone=public --remove-service=http --permanent

Výše uvedený příkaz odstraní http služby z trvalé konfigurace veřejné zóny.

Vytvoření nové služby FirewallD #

Jak jsme již uvedli, výchozí služby jsou uloženy v /usr/lib/firewalld/services adresář. Nejjednodušší způsob, jak vytvořit novou službu, je zkopírovat existující soubor služby do /etc/firewalld/services adresář, což je umístění pro uživatelem vytvořené služby a upravte nastavení souboru.

Chcete-li například vytvořit definici služby pro server Plex Media Server, můžete použít soubor služby SSH:

sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/plexmediaserver.xml

Otevřete nově vytvořený plexmediaserver.xml a změňte krátký název a popis služby v <short> a <description> značky. Nejdůležitější tag, který musíte změnit, je port tag, 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čtěte službu FirewallD:

sudo firewall-cmd --reload

Nyní můžete použít plexmediaserver službu ve vašich zónách stejně jako kterákoli jiná služba.

Otevření portů a zdrojových IP adres #

Firewalld také umožňuje rychle povolit veškerý provoz z důvěryhodné IP adresy nebo na konkrétním portu bez vytvoření definice služby.

Otevření zdrojové adresy IP #

Chcete-li povolit veškerý příchozí provoz z konkrétní IP adresy (nebo rozsahu), určete zónu pomocí --zone a zdrojovou IP s --add-source možnost.

Chcete-li například povolit veškerý příchozí provoz z adresy 192.168.1.10 ve public zóna, spustit:

sudo firewall-cmd --zone=public --add-source=192.168.1.10

Udělejte nové pravidlo trvalým:

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á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ého portu #

Chcete-li povolit veškerý příchozí provoz na daném portu, určete zónu pomocí --zone a port a protokol s --add-port možnost.

Například pro otevření portu 8080 ve veřejné zóně pro aktuální relaci, kterou jste spustili:

sudo firewall-cmd --zone=public --add-port=8080/tcp

Protokol může být buď tcp , udp , sctp nebo dccp .

Ověřte změny:

sudo firewall-cmd --zone=public --list-ports
8080

Chcete-li zachovat port otevřený i po restartu, přidejte pravidlo do trvalého nastavení spuštěním stejného příkazu pomocí --permanent flag nebo provedením:

sudo firewall-cmd --runtime-to-permanent

Syntaxe pro odebrání portu je stejná jako při přidávání portu. Stačí použít --remove-port místo --add-port možnost.

sudo firewall-cmd --zone=public --remove-port=8080/tcp

Porty pro předávání #

Chcete-li přesměrovat provoz z jednoho portu na druhý, nejprve povolte maskování pro požadovanou zónu pomocí --add-masquerade volba. Chcete-li například povolit maskování pro external zóna, zadejte:

sudo firewall-cmd --zone=external --add-masquerade

Přesměrovat provoz z jednoho portu na druhý na IP adrese #

V následujícím příkladu přesměrováváme provoz z portu 80 na port 8080 na stejném serveru:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080

Přesměrovat provoz na jinou IP adresu #

V následujícím příkladu přesměrováváme provoz z portu 80 na port 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ěrovat provoz na jiný server na jiném portu #

V následujícím příkladu přesměrováváme provoz z portu 80 na port 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 bylo dopředné pravidlo trvalé, použijte:

sudo firewall-cmd --runtime-to-permanent

Cent OS
  1. Jak nainstalovat a nakonfigurovat Nginx na CentOS 7

  2. Jak nakonfigurovat bránu firewall na CentOS 7

  3. Jak nainstalovat a nakonfigurovat HAProxy na CentOS?

  1. Jak povolit a používat firewall na CentOS 7

  2. Jak nastavit firewall s FirewallD na CentOS 7

  3. Jak nainstalovat a nakonfigurovat Redis na CentOS 7

  1. Jak nainstalovat a nakonfigurovat GitLab na CentOS 7

  2. Jak nainstalovat a nakonfigurovat Redmine na CentOS 7

  3. Jak nainstalovat a nakonfigurovat Redis na CentOS 8