A tűzfal konfigurálása és kezelése a CentOS-on 8

a tűzfal egy módszer a bejövő és kimenő hálózati forgalom megfigyelésére és szűrésére. Úgy működik, hogy meghatározza a biztonsági szabályok halmazát, amelyek meghatározzák, hogy engedélyezzék vagy blokkolják-e az adott forgalmat. A megfelelően konfigurált tűzfal az Általános rendszerbiztonság egyik legfontosabb szempontja.

a CentOS 8 egy firewalld nevű tűzfaldémonnal szállít. Ez egy komplett megoldás egy D-Bus interfésszel, amely lehetővé teszi a rendszer tűzfalának dinamikus kezelését.

ebben az oktatóanyagban arról fogunk beszélni, hogyan kell konfigurálni és kezelni a tűzfalat a CentOS 8 rendszeren. Elmagyarázzuk az alapvető FirewallD fogalmakat is.

előfeltételek #

a tűzfalszolgáltatás konfigurálásához be kell jelentkeznie root vagy sudo jogosultsággal rendelkező felhasználóként.

Basic Firewalld Concepts #

a firewalld a zónák és szolgáltatások fogalmát használja. A konfigurált zónák és szolgáltatások alapján szabályozhatja, hogy milyen forgalom engedélyezett vagy blokkolt a rendszerbe és a rendszerből.

a Firewalld konfigurálható és kezelhető a firewall-cmd parancssori segédprogrammal.

a CentOS 8-ban az iptables helyébe nftables lép, mint a firewalld démon alapértelmezett tűzfal-háttere.

Firewalld Zones #

a zónák előre meghatározott szabálykészletek, amelyek meghatározzák a számítógép által csatlakoztatott hálózatok megbízhatósági szintjét. Hálózati csatolókat és forrásokat rendelhet egy zónához.

az alábbiakban a FirewallD által biztosított zónák vannak rendezve a zóna megbízhatósági szintje szerint a megbízhatatlantól a megbízottig:

  • csepp: Minden bejövő kapcsolat értesítés nélkül megszűnik. Csak kimenő kapcsolatok engedélyezettek.
  • blokk: minden bejövő kapcsolatot Elutasít a icmp-host-prohibited üzenet IPv4 és icmp6-adm-prohibited IPv6n esetén. csak kimenő kapcsolatok engedélyezettek.
  • Nyilvános: nem megbízható nyilvános helyiségekben való használatra. Nem bízik a hálózat többi számítógépében, de engedélyezheti a kiválasztott bejövő kapcsolatokat.
  • külső: olyan külső hálózatokon használható, ahol a NAT maszkolás engedélyezve van, amikor a rendszer átjáróként vagy útválasztóként működik. Csak a kiválasztott bejövő kapcsolatok engedélyezettek.
  • belső: belső hálózatokon használható, amikor a rendszer átjáróként vagy útválasztóként működik. A hálózat többi rendszere általában megbízható. Csak a kiválasztott bejövő kapcsolatok engedélyezettek.
  • dmz: a demilitarizált zónában található számítógépekhez használható, amelyek korlátozott hozzáféréssel rendelkeznek a hálózat többi részéhez. Csak a kiválasztott bejövő kapcsolatok engedélyezettek.
  • munka: munkagépekhez használható. A hálózat többi számítógépe általában megbízható. Csak a kiválasztott bejövő kapcsolatok engedélyezettek.
  • home: használt otthoni gépek. A hálózat többi számítógépe általában megbízható. Csak a kiválasztott bejövő kapcsolatok engedélyezettek.
  • megbízható: minden hálózati kapcsolat elfogadott. Bízzon a hálózat összes számítógépében.

Tűzfalszolgáltatások #

a Tűzfalszolgáltatások előre meghatározott szabályok, amelyek egy zónán belül érvényesek, és meghatározzák az adott szolgáltatás bejövő forgalmának engedélyezéséhez szükséges beállításokat. A Szolgáltatások lehetővé teszik több feladat egyszerű elvégzését egyetlen lépésben.

például a szolgáltatás tartalmazhat definíciókat a portok megnyitásáról, a forgalom továbbításáról stb.

Firewalld Runtime and Permanent Settings #

a Firewalld két különálló konfigurációs készletet használ, a futásidejű és az állandó konfigurációt.

a futásidejű konfiguráció a tényleges futási konfiguráció, amely újraindításkor nem marad fenn. Amikor a firewalld démon elindul, betölti az állandó konfigurációt, amely futásidejű konfigurációvá válik.

alapértelmezés szerint, amikor a Firewalld konfigurációt a firewall-cmd segédprogrammal módosítja, a módosítások a futásidejű konfigurációra vonatkoznak. A módosítások véglegesítéséhez csatolja a --permanent opciót a parancshoz.

a módosítások mindkét konfigurációs készletben történő alkalmazásához az alábbi két módszer egyikét használhatja:

  1. módosítsa a futásidejű konfigurációt, és tegye állandóvá:

    sudo firewall-cmd <options>sudo firewall-cmd --runtime-to-permanent
  2. módosítsa az állandó konfigurációt és töltse be újra a firewalld démont:

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

a FirewallD #

engedélyezése a CentOS 8 rendszeren a firewalld alapértelmezés szerint telepítve van. Ha valamilyen oknál fogva nincs telepítve a rendszerére, a démont a gépeléssel telepítheti és elindíthatja:

sudo dnf install firewalldsudo systemctl enable firewalld --now

a tűzfal szolgáltatás állapotát a következővel ellenőrizheti:

sudo firewall-cmd --state

ha a tűzfal engedélyezve van, a parancsnak ki kell nyomtatnia a running parancsot. Ellenkező esetben not running jelenik meg.

Firewalld Zones #

ha nem módosította, akkor az alapértelmezett zóna public, és az összes hálózati interfész ehhez a zónához van rendelve.

az alapértelmezett zóna az, amelyet minden olyan zónához használnak, amely nincs kifejezetten hozzárendelve egy másik zónához.

az alapértelmezett zónát gépeléssel láthatja:

sudo firewall-cmd --get-default-zone
public

az összes elérhető zóna listájának megtekintéséhez írja be a következőt::

sudo firewall-cmd --get-zones
block dmz drop external home internal public trusted work

az aktív zónák és a hozzájuk rendelt hálózati interfészek megtekintése:

sudo firewall-cmd --get-active-zones

az alábbi kimenet azt mutatja, hogy a eth0 és eth1 interfészek a public zónához vannak rendelve:

public interfaces: eth0 eth1

a zónakonfigurációs beállításokat a következővel nyomtathatja ki:

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:

a fenti kimenetből láthatjuk, hogy a nyilvános zóna aktív, és az alapértelmezett célt használja, ami REJECT. A kimenet azt is mutatja, hogy a zónát a eth0 és eth1 interfészek használják, és lehetővé teszi a DHCP kliens és az SSH forgalmat.

ha ellenőrizni szeretné az összes elérhető zóna konfigurációját, írja be:

sudo firewall-cmd --list-all-zones

a parancs hatalmas listát nyomtat az összes rendelkezésre álló zóna beállításaival.

zónacél módosítása #

a cél meghatározza a zóna alapértelmezett viselkedését a bejövő forgalom számára, amely nincs megadva. A következő lehetőségek egyikére állítható be: default, ACCEPT, REJECT, és DROP.

a zóna céljának beállításához adja meg a zónát a --zone opcióval, a célt pedig a --set-target opcióval.

ha például a public zóna célját DROP értékre szeretné változtatni, akkor a következőt kell futtatnia:

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

interfész hozzárendelése egy másik zónához #

különböző zónákhoz külön szabálykészleteket hozhat létre, és különböző interfészeket rendelhet hozzájuk. Ez különösen akkor hasznos, ha több interfész van a gépen.

ha egy interfészt egy másik zónához szeretne rendelni, adja meg a --zone opcióval rendelkező zónát és a --change-interface opcióval rendelkező interfészt.

például a következő parancs hozzárendeli a eth1 interfészt a work zónához:

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

ellenőrizze a változtatásokat gépeléssel:

sudo firewall-cmd --get-active-zones
work interfaces: eth1public interfaces: eth0

Az alapértelmezett zóna módosítása #

az alapértelmezett zóna módosításához használja a --set-default-zone opciót, majd az alapértelmezni kívánt zóna nevét.

ha például az alapértelmezett zónát home értékre szeretné változtatni, a következő parancsot kell futtatnia:

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

ellenőrizze a változásokat:

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

új zónák létrehozása #

a Firewalld lehetővé teszi saját zónák létrehozását is. Ez akkor hasznos, ha alkalmazásonkénti szabályokat szeretne létrehozni.

a következő példában létrehozunk egy új zónát memcached néven, megnyitjuk a 11211 portot, és csak a 192.168.100.30 IP-címről engedélyezzük a hozzáférést:

  1. zóna létrehozása:

    sudo firewall-cmd --new-zone=memcached --permanent
  2. adja hozzá a Szabályokat a zónához:

    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. töltse be újra a firewalld démont a változások aktiválásához:

    sudo firewall-cmd --reload

Firewalld Services #

a firewalld használatával engedélyezheti a forgalmat bizonyos portok és / vagy források számára a szolgáltatásoknak nevezett előre meghatározott szabályok alapján.

az összes alapértelmezett elérhető szolgáltatástípus listájának lekérése:

sudo firewall-cmd --get-services

további információt az egyes szolgáltatásokról a társított megnyitásával talál .xml fájl a /usr/lib/firewalld/services könyvtárban. Például a HTTP szolgáltatás a következőképpen definiálható:

/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>

bejövő HTTP-forgalom (80-as port) engedélyezése a nyilvános zónában lévő interfészek számára, csak az aktuális munkamenet (futásidejű konfiguráció) típushoz:

sudo firewall-cmd --zone=public --add-service=http
ha módosítja az alapértelmezett zónát, kihagyhatja a --zone opciót.

a szolgáltatás sikeres hozzáadásának ellenőrzéséhez használja a --list-services opciót:

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

ha a 80-as portot újraindítás után nyitva szeretné tartani, futtassa újra ugyanazt a parancsot a --permanent opcióval, vagy hajtsa végre:

sudo firewall-cmd --runtime-to-permanent

használja a --list-services lehetőséget a --permanent opcióval együtt a módosítások ellenőrzéséhez:

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

a szolgáltatás eltávolításának szintaxisa ugyanaz, mint az egyik hozzáadásakor. Csak használja --remove-service a --add-service zászló helyett:

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

a fenti parancs eltávolítja a http szolgáltatást a nyilvános zóna állandó konfigurációjából.

új FirewallD szolgáltatás létrehozása #

mint már említettük, az alapértelmezett szolgáltatások a /usr/lib/firewalld/services könyvtárban vannak tárolva. Az új szolgáltatás létrehozásának legegyszerűbb módja, ha egy meglévő szolgáltatásfájlt átmásol a /etc/firewalld/services könyvtárba, amely a felhasználó által létrehozott szolgáltatások helye, és módosítja a fájlbeállításokat.

például a Plex Media Server szolgáltatásdefiníciójának létrehozásához használhatja az SSH szolgáltatásfájlt:

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

nyissa meg az újonnan létrehozott plexmediaserver.xml fájlt, és módosítsa a szolgáltatás rövid nevét és leírását a <short> és <description> címkékben. A legfontosabb megváltoztatandó címke a port címke, amely meghatározza a megnyitni kívánt portszámot és protokollt.

a következő példában a 1900 UDP és 32400 TCP portokat nyitjuk meg.

/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>

mentse el a fájlt és töltse be újra a FirewallD szolgáltatást:

sudo firewall-cmd --reload

mostantól ugyanúgy használhatja a plexmediaserver szolgáltatást a zónáiban, mint bármely más szolgáltatást.

portok és forrás IPs #

a Firewalld lehetővé teszi a megbízható IP-címről vagy egy adott portról érkező összes forgalom gyors engedélyezését szolgáltatásdefiníció létrehozása nélkül.

forrás IP megnyitása #

egy adott IP-címről (vagy tartományról) érkező összes forgalom engedélyezéséhez adja meg a zónát a --zone opcióval, a forrás IP-t pedig a --add-source opcióval.

ha például a 192.168.1.10-ből érkező összes bejövő forgalmat a public zónában szeretné engedélyezni, futtassa:

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

az új szabály tartóssá tétele:

sudo firewall-cmd --runtime-to-permanent

ellenőrizze a módosításokat a következő paranccsal:

sudo firewall-cmd --zone=public --list-sources
192.168.1.10

a forrás IP eltávolításának szintaxisa ugyanaz, mint egy hozzáadásakor. Csak használja --remove-source a --add-source opció helyett:

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

forrásport megnyitása #

egy adott porton az összes bejövő forgalom engedélyezéséhez adja meg a zónát a --zone opcióval, a portot és a protokollt pedig a --add-port opcióval.

például a 8080 port megnyitásához a nyilvános zónában az aktuális munkamenethez:

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

a protokoll lehet tcp, udp, sctp, vagy dccp.

ellenőrizze a változásokat:

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

ha újraindítás után is nyitva szeretné tartani a portot, adja hozzá a szabályt az állandó beállításokhoz úgy, hogy ugyanazt a parancsot futtatja a --permanent jelzővel, vagy végrehajtja:

sudo firewall-cmd --runtime-to-permanent

a port eltávolításának szintaxisa ugyanaz, mint egy port hozzáadásakor. Csak használja --remove-port a --add-port opció helyett.

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

portok továbbítása #

a forgalom egyik portról a másikra történő továbbításához Először engedélyezze a kívánt zóna maszkolását a --add-masquerade opcióval. Például a external zóna maszkolásának engedélyezéséhez írja be:

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

forgalom továbbítása egyik portról a másikra az IP-címen #

a következő példában a forgalmat a 80 portról a 8080 portra továbbítjuk ugyanazon a szerveren:

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

forgalom továbbítása egy másik IP-címre #

a következő példában a forgalmat a 80 portról a 80 portra továbbítjuk egy IP-vel rendelkező szerveren 10.10.10.2:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.10.10.2

forgalom továbbítása egy másik kiszolgálóra egy másik porton #

a következő példában a forgalmat a 80 portról a 8080 portra továbbítjuk egy IP 10.10.10.2szerveren:

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

ahhoz, hogy a forward szabály tartós legyen, használja:

sudo firewall-cmd --runtime-to-permanent

következtetés #

megtanulta, hogyan konfigurálhatja és kezelheti a firewalld szolgáltatást CentOS 8 rendszerén.

győződjön meg arról, hogy engedélyezi az összes bejövő kapcsolatot, amely a rendszer megfelelő működéséhez szükséges, miközben korlátozza az összes felesleges kapcsolatot.



+