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

Jak nastavit firewall s FirewallD na CentOS 7

Správně nakonfigurovaný firewall je jedním z nejdůležitějších aspektů celkového zabezpečení systému.

Firewall je kompletní řešení firewallu, které spravuje systémová pravidla iptables a poskytuje rozhraní D-Bus pro provoz na nich. Počínaje CentOS 7 nahrazuje FirewallD iptables jako výchozí nástroj pro správu brány firewall.

V tomto tutoriálu vám ukážeme, jak nastavit firewall s FirewallD na vašem systému CentOS 7, a vysvětlíme vám základní koncepty FirewallD.

Předpoklady #

Než začnete s tímto výukovým programem, ujistěte se, že jste přihlášeni na svůj server pomocí uživatelského účtu s právy sudo nebo s uživatelem root. Nejlepším postupem je spouštět administrativní příkazy jako uživatel sudo namísto root. Pokud ve svém systému CentOS nemáte uživatele sudo, můžete si jej vytvořit podle těchto pokynů.

Základní koncepty brány firewall #

FirewallD používá koncepty zón a služeb namísto řetězce a pravidel iptables. Na základě zón a služeb, které nakonfigurujete, můžete ovládat, jaký provoz je povolen nebo zakázán do a ze systému.

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

Zóny brány firewall #

Zóny jsou předdefinované sady pravidel určujících, jaký provoz by měl být povolen na základě úrovně důvěry v sítích, 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.

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 není trvalá při restartování. Když se služba 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é, musíte použít --permanent možnost.

Instalace a aktivace brány FirewallD #

  1. Firewalld je ve výchozím nastavení nainstalován na CentOS 7, ale pokud není nainstalován ve vašem systému, můžete balíček nainstalovat zadáním:

    sudo yum install firewalld
  2. Služba brány firewall je ve výchozím nastavení zakázána. Stav brány firewall můžete zkontrolovat pomocí:

    sudo firewall-cmd --state

    Pokud jste právě nainstalovali nebo nikdy předtím neaktivovali, příkaz vypíše not running . V opačném případě uvidíte running .

  3. Chcete-li spustit službu FirewallD a povolit ji při spouštění typu:

    sudo systemctl start firewalldsudo systemctl enable firewalld

Práce se zónami brány firewall #

Po prvním povolení služby FirewallD bude public zóna je nastavena jako výchozí zóna. 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

Ve výchozím nastavení je všem síťovým rozhraním přiřazena výchozí zóna. Chcete-li zkontrolovat, jaké zóny používají vaše síťová rozhraní typu:

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

Výše uvedený výstup nám říká, že obě rozhraní eth0 a eth1 jsou přiřazeny do veřejné zóny.

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 nastavená jako výchozí, kterou používají oba eth0 a eth1 rozhraní. Rovněž jsou povolena připojení související s klientem DHCP a 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 zóny rozhraní #

Zónu rozhraní můžete snadno změnit pomocí --zone možnost v kombinaci s --change-interface volba. Následující příkaz přiřadí eth1 rozhraní do pracovní zóny:

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 domácí, měli byste spustit následující příkaz:

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

Ověřte změny pomocí:

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

Otevření portu nebo služby #

S FirewallD můžete povolit provoz pro konkrétní porty 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

Pokud chcete po restartu ponechat otevřený port 80, budete muset zadat stejný příkaz ještě jednou, ale tentokrát s --permanent možnost:

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

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 možnost:

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

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

Co když provozujete aplikaci, jako je Plex Media Server, pro kterou není k dispozici žádná vhodná služba?

V takových situacích máte dvě možnosti. Můžete buď otevřít příslušné porty, nebo definovat novou službu FirewallD.

Například server Plex naslouchá na portu 32400 a používá TCP, k otevření portu ve veřejné zóně pro aktuální relaci použijte --add-port= možnost:

sudo firewall-cmd --zone=public --add-port=32400/tcp
Protokoly mohou být buď tcp nebo udp .

Chcete-li ověřit, že port byl úspěšně přidán, použijte --list-ports možnost:

sudo firewall-cmd --zone=public --list-ports
32400/tcp

Chcete-li zachovat port 32400 otevřete po restartu, přidejte pravidlo do trvalého nastavení spuštěním stejného příkazu pomocí --permanent možnost.

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=32400/tcp

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.

Například k vytvoření definice služby pro Plex Media Server můžeme 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žba ve vašich zónách stejná jako jakákoli jiná služba..

Port pro přesměrování s firewallem #

Chcete-li přesměrovat provoz z jednoho portu na jiný port nebo adresu, nejprve povolte maskování pro požadovanou zónu pomocí --add-masquerade přepínač. Chcete-li například povolit maskování pro external typ zóny:

sudo firewall-cmd --zone=external --add-masquerade
  • Přesměrovat provoz z jednoho portu na druhý na stejném serveru

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 jiný server

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

Pokud chcete, aby forward byl trvalý, stačí připojit --permanent možnost.

Vytvoření sady pravidel pomocí brány FirewallD #

V následujícím příkladu si ukážeme, jak nakonfigurovat firewall, pokud jste provozovali webový server. Předpokládáme, že váš server má pouze jedno rozhraní eth0 a chcete povolit příchozí provoz pouze na portech SSH, HTTP a HTTPS.

  1. Změňte výchozí zónu na dmz

    Použijeme dmz (demilitarizovanou) zónu, protože ve výchozím nastavení povoluje pouze provoz SSH. Chcete-li změnit výchozí zónu na dmz a přiřadit ji k eth0 rozhraní, spusťte následující příkazy:

    sudo firewall-cmd --set-default-zone=dmzsudo firewall-cmd --zone=dmz --add-interface=eth0
  2. Otevřete porty HTTP a HTTPS:

    Chcete-li otevřít porty HTTP a HTTPS, přidejte do zóny dmz trvalá pravidla služby:

    sudo firewall-cmd --permanent --zone=dmz --add-service=httpsudo firewall-cmd --permanent --zone=dmz --add-service=https

    Proveďte změny okamžitě znovu načtením brány firewall:

    sudo firewall-cmd --reload
  3. Ověřte změny

    Chcete-li zkontrolovat nastavení konfigurace zóny dmz, zadejte:

    sudo firewall-cmd --zone=dmz --list-all
    dmz (active)
      target: default
      icmp-block-inversion: no
      interfaces: eth0
      sources:
      services: ssh http https
      ports:
      protocols:
      masquerade: no
      forward-ports:
      source-ports:
      icmp-blocks:
      rich rules:

    Výstup výše nám říká, že dmz je výchozí zóna a je aplikována na eth0 rozhraní a porty ssh (22) http (80) a https (443) jsou otevřené.


Cent OS
  1. Nakonfigurujte Firewall s FirewallD na CentOS 7

  2. Jak deaktivovat firewall na CentOS 8 Linux

  3. Jak nastavit Firewall pomocí FirewallD na CentOS 8

  1. Jak nastavit bránu firewall s iptables na Ubuntu a CentOS

  2. Jak nastavit bránu firewall s UFW na Ubuntu 16.04

  3. Jak nastavit Firewall s Firewallem na CentOS 8

  1. Jak nakonfigurovat bránu firewall na CentOS 7

  2. Nastavte FirewallD na CentOS 7

  3. CentOS / RHEL 7 :Jak otevřít port ve firewallu pomocí firewall-cmd?