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 #
- Basic Firewalld Concepts #
- Firewalld Zones #
- Tűzfalszolgáltatások #
- Firewalld Runtime and Permanent Settings #
- a FirewallD #
- Firewalld Zones #
- zónacél módosítása #
- interfész hozzárendelése egy másik zónához #
- Az alapértelmezett zóna módosítása #
- új zónák létrehozása #
- Firewalld Services #
- új FirewallD szolgáltatás létrehozása #
- portok és forrás IPs #
- forrás IP megnyitása #
- forrásport megnyitása #
- portok továbbítása #
- forgalom továbbítása egyik portról a másikra az IP-címen #
- forgalom továbbítása egy másik IP-címre #
- forgalom továbbítása egy másik kiszolgálóra egy másik porton #
- következtetés #
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
üzenetIPv4
ésicmp6-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:
-
módosítsa a futásidejű konfigurációt, és tegye állandóvá:
sudo firewall-cmd <options>
sudo firewall-cmd --runtime-to-permanent
-
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 firewalld
sudo 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:
-
zóna létrehozása:
sudo firewall-cmd --new-zone=memcached --permanent
-
adja hozzá a Szabályokat a zónához:
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
-
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ó:
<?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
--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.
<?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.2
szerveren:
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.