Weboldal keresés

A tűzfal telepítése, konfigurálása és használata a CentOS és az Ubuntu rendszerben


A Firewall (tűzfaldémon) az iptables szolgáltatás alternatívája a rendszer tűzfalának dinamikus kezelésére a hálózati (vagy tűzfal) zónák támogatásával, és D-Bus interfészt biztosít a konfigurációk kezeléséhez. Könnyen használható és konfigurálható, és ma már az alapértelmezett tűzfalkezelő eszköz az RHEL/CentOS, a Fedora és számos más Linux disztribúción.

Ebben a cikkben megvitatjuk, hogyan konfigurálható a rendszer tűzfala a tűzfal segítségével, és hogyan valósítható meg az alapvető csomagszűrés a CentOS/RHEL 7 és az Ubuntu rendszerben.

A tűzfal alapjai

A Tűzfal három rétegből áll, amelyek a következők:

  • alapréteg: felelős a konfiguráció kezeléséért és a hátoldalakért (lásd alább).
  • D-Bus interfész: a tűzfalkonfiguráció megváltoztatásának és létrehozásának elsődleges eszköze.
  • háttérrendszerek: a netfilterrel való interakcióhoz (a tűzfalra használt natív kernelmodul). Ide tartoznak az iptables, ip6tables, ebtables, ipset, nft, linnftables; hálózati menedzser; és modulok.

A tűzfalszabályokat olyan hálózati/tűzfalzónák megvalósításával kezeli, amelyek meghatározzák a hálózati kapcsolatok vagy interfészek megbízhatósági szintjét. Egyéb támogatott tűzfalfunkciók közé tartoznak a szolgáltatások, a közvetlen konfiguráció (a nyers iptables szintaxis közvetlen átadására használatos), az IPSet-ek, valamint az ICMP-típusok.

A tűzfal kétféle konfigurációs környezetet támogat:

  • futásidejű konfiguráció, amely csak a gép újraindításáig vagy a tűzfal szolgáltatás újraindításáig érvényes
  • állandó konfiguráció, amely mentve van és folyamatosan működik.

A firewall-cmd parancssori eszköz a futási idő és az állandó konfiguráció kezelésére szolgál. Alternatív megoldásként használhatja a firewall-config grafikus felhasználói felület (GUI) konfigurációs eszközét a démonnal való interakcióhoz.

Ezenkívül a tűzfal jól definiált felületet kínál más helyi szolgáltatások vagy alkalmazások számára, amelyek közvetlenül kérhetik a tűzfalszabályok módosítását, ha azok root jogosultsággal futnak.

A tűzfal globális konfigurációs fájlja az /etc/firewalld/firewalld.conf címen található, a tűzfalfunkciók pedig XML formátumban vannak konfigurálva.

A tűzfal fontos funkcióinak megismerése

A tűzfal központi jellemzője a hálózati/tűzfalzónák. Minden más jellemző egy zónához van kötve. A tűzfalzóna a kapcsolat, az interfész vagy a forráscím-összerendelés megbízhatósági szintjét írja le.

Az alapértelmezett konfiguráció számos előre meghatározott zónát tartalmaz, amelyek a zónák alapértelmezett megbízhatósági szintje szerint vannak rendezve a nem megbízhatótól a megbízhatóig: drop, blokk, nyilvános, külső, dmz, munkahelyi, otthoni, belső és megbízható. A /usr/lib/firewalld/zones könyvtárban tárolt fájlokban vannak meghatározva.

Beállíthatja vagy hozzáadhatja egyéni zónáit a CLI-kliens használatával, vagy egyszerűen létrehozhat vagy másolhat egy zónafájlt az /etc/firewalld/zones mappába a meglévő fájlokból, és szerkesztheti azt.

Egy másik fontos fogalom a tűzfal alatt a szolgáltatások. A szolgáltatást portok és protokollok segítségével határozzák meg; ezek a meghatározások egy adott hálózati szolgáltatást, például webszervert vagy távelérési szolgáltatást jelentenek. A szolgáltatásokat a /usr/lib/firewalld/services/ vagy az /etc/firewall/services/ könyvtárban tárolt fájlok határozzák meg.

Ha ismeri az alapvető iptables/ip6tables/ebtables fogalmakat, használhatja a közvetlen felületet (vagy konfigurációt) a tűzfal közvetlen eléréséhez. Az iptables ismeretekkel nem rendelkezők azonban használhatják a gazdag nyelvet az IPv4 és IPv6 bonyolultabb tűzfalszabályainak létrehozásához.

A Firewalld Package telepítése Linux alatt

A CentOS 7 rendszeren a firewall csomag előre telepítve van, és a következő paranccsal ellenőrizheti.

rpm -qa firewalld

Ubuntu 16.04 és 18.04 esetén az alapértelmezett csomagkezelő használatával telepítheti az ábrán látható módon.

sudo apt install firewalld

A tűzfalszolgáltatás kezelése Linux alatt

A Tűzfal egy szokásos systemd szolgáltatás, amely a systemctl paranccsal kezelhető.

 
sudo systemctl start firewalld	#start the service for the mean time
sudo systemctl enable firewalld	#enable the service to auto-start at boot time
sudo systemctl status firewalld	#view service status

A tűzfal szolgáltatás elindítása után a firewall-cmd eszközzel ellenőrizheti, hogy a démon fut-e vagy sem (ha nem aktív, akkor ez a parancs a „not futás ").

sudo firewall-cmd --state

Ha véletlenül véglegesen menti a változtatásokat, újratöltheti a tűzfalat. Ezzel újratölti a tűzfalszabályokat, és megőrzi az állapotinformációkat. A jelenlegi állandó konfiguráció új futásidejű konfiguráció lesz.

sudo firewall-cmd --reload

Hogyan dolgozzunk a tűzfal zónáival a Firewalldban

Az összes elérhető tűzfalzóna és szolgáltatás listájának megtekintéséhez futtassa ezeket a parancsokat.

sudo firewall-cmd --get-zones
sudo firewall-cmd --get-services

Az alapértelmezett zóna az a zóna, amely minden olyan tűzfalfunkcióhoz használatos, amely nincs kifejezetten egy másik zónához kötve. A hálózati kapcsolatokhoz és interfészekhez tartozó alapértelmezett zónát futtatással kaphatja meg.

sudo firewall-cmd --get-default-zone

Az alapértelmezett zóna (például külső) beállításához használja a következő parancsot. Vegye figyelembe, hogy a --permanent opció hozzáadása véglegesen beállítja a konfigurációt (vagy lehetővé teszi az információk lekérdezését az állandó konfigurációs környezetből).

sudo firewall-cmd --set-default-zone=external
OR
sudo firewall-cmd --set-default-zone=external --permanent
sudo firewall-cmd --reload 

Ezután nézzük meg, hogyan adhatunk interfészt egy zónához. Ez a példa bemutatja, hogyan adhatja hozzá vezeték nélküli hálózati adapterét (wlp1s0) az otthoni zónához, amelyet otthoni területeken használnak.

sudo firewall-cmd --zone=home --add-interface=wlp1s0

Interfész csak egyetlen zónához adható hozzá. Ha másik zónába szeretné áthelyezni, használja a --change-interface kapcsolót az ábrán látható módon, vagy távolítsa el az előző zónából a –remove-interface kapcsolóval, majd adja hozzá. az új zónába.

Feltéve, hogy nyilvános WI-FI hálózathoz szeretne csatlakozni, helyezze vissza a vezeték nélküli interfészt a nyilvános zónába, a következőképpen:

sudo firewall-cmd --zone=public --add-interface=wlp1s0
sudo firewall-cmd --zone=public --change-interface=wlp1s0

Egyszerre több zónát is használhat. Az összes aktív zóna listájának megtekintéséhez az engedélyezett szolgáltatásokkal (például interfészek, szolgáltatások, portok, protokollok) futtassa:

sudo firewall-cmd --get-active-zones

Az előző ponthoz képest, ha további információkat szeretne találni egy adott zónáról, azaz minden hozzáadott vagy engedélyezett zónáról, használja az alábbi parancsok egyikét:

sudo firewall-cmd --zone=home --list-all
OR
sudo firewall-cmd --info-zone public

Egy másik hasznos lehetőség a --get-target, amely megmutatja egy állandó zóna célját. A cél a következők egyike: alapértelmezett, ELFOGADÁS, DROP, REJECT. Ellenőrizheti a különböző zónák célját:

sudo firewall-cmd --permanent --zone=public --get-target  
sudo firewall-cmd --permanent --zone=block --get-target  
sudo firewall-cmd --permanent --zone=dmz --get-target  
sudo firewall-cmd --permanent --zone=external --get-target
sudo firewall-cmd --permanent --zone=drop --get-target

Portok megnyitása és blokkolása a tűzfalban

Port (vagy port/protokoll kombináció) megnyitásához a tűzfalban egyszerűen adja hozzá egy zónához a --add-port opcióval. Ha nem adja meg kifejezetten a zónát, akkor az az alapértelmezett zónában lesz engedélyezve.

A következő példa bemutatja, hogyan kell hozzáadni a 80-as és a 443-as portot, hogy lehetővé tegye a bejövő webes forgalmat a HTTP és HTTPS protokollon keresztül. > protokollok, ill.

sudo firewall-cmd --zone=public --permanent --add-port=80/tcp --add-port=443/tcp

Ezután töltse be újra a tűzfalat, és ellenőrizze még egyszer az engedélyezett szolgáltatásokat a nyilvános zónában, látnia kell az éppen hozzáadott portokat.

sudo firewall-cmd --reload
sudo firewall-cmd --info-zone public

Egy port blokkolása vagy bezárása a tűzfalban ugyanolyan egyszerű, egyszerűen távolítsa el a zónából a --remove-port opcióval. Például a 80 és 443 portok bezárásához a nyilvános zónában.

sudo firewall-cmd --zone=public --permanent --remove-port=80/tcp --remove-port=443/tcp

A port vagy a port/protokoll kombináció használata helyett használhatja azt a szolgáltatásnevet, amelyhez a port hozzá van rendelve a következő részben leírtak szerint.

Szolgáltatások megnyitása és blokkolása a tűzfalban

Egy szolgáltatás tűzfalban való megnyitásához engedélyezze azt a --ad-service opcióval. Ha a zóna ki van hagyva, az alapértelmezett zóna kerül felhasználásra.

A következő parancs véglegesen engedélyezi a http szolgáltatást a nyilvános zónában.

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

A --remove-service opcióval letiltható egy szolgáltatás.

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

Az IP-maszkolás engedélyezése és letiltása tűzfal használatával

Az IP-masquerading (más néven IPMASQ vagy MASQ) egy NAT (Network Address Translation).) mechanizmus a Linux-hálózatokban, amely lehetővé teszi, hogy a hálózatban lévő gazdagépek privát IP-címekkel kommunikáljanak az internettel a Linux-szerverhez (IPMASQ-átjáró) hozzárendelt nyilvános IP-címén.

Ez egy egy a többhez leképezés. A láthatatlan gazdagépekről érkező forgalom úgy jelenik meg az interneten lévő többi számítógép számára, mintha az Ön Linux-kiszolgálójáról érkezne.

Engedélyezheti az IP-maszkolást egy kívánt zónában, például a nyilvános zónában. Mielőtt azonban ezt megtenné, először ellenőrizze, hogy az álcázás aktív-e vagy sem (a „nem” azt jelenti, hogy le van tiltva, az „igen” pedig az ellenkezőjét jelenti).

sudo firewall-cmd --zone=public --query-masquerade
sudo firewall-cmd --zone=public --add-masquerade

A maszkolás tipikus felhasználási esete a porttovábbítás végrehajtása. Feltéve, hogy egy távoli gépről szeretne SSH-t küldeni a belső hálózatában lévő, 10.20.1.3 IP-című gazdagépre, amelyen az sshd démon az 5000 porton figyel.

A Linux-szerver 22-es portjához tartó összes kapcsolatot továbbíthatja a célállomás kívánt portjára a következő kiadással:

sudo firewall-cmd --zone=public --add-forward-port=port=22=proto=tcp:toport=5000:toaddr=10.20.1.3

A zónában az álcázás letiltásához használja a --remove-masquerade kapcsolót.

sudo firewall-cmd --zone=public --remove-masquerade

Az IMCP üzenet engedélyezése és letiltása a tűzfalban

Az ICMP (Internet Control Message Protocol) üzenetek vagy információkérések, vagy információkérésre adott válaszok, vagy hibahelyzetben.

Engedélyezheti vagy letilthatja az ICMP-üzeneteket a tűzfalban, de előtte először felsorolja az összes támogatott icmp-típust.

sudo firewall-cmd --get-icmptypes

A kívánt blokktípus hozzáadása vagy eltávolítása.

sudo firewall-cmd --zone=home --add-icmp-block=echo-reply
OR
sudo firewall-cmd --zone=home --remove-icmp-block=echo-reply

A zónához hozzáadott összes icmp típust megtekintheti a --list-icmp-blocks kapcsolóval.

sudo firewall-cmd --zone=home --list-icmp-blocks

Hogyan használjunk közvetlen felületet a nyers iptables parancsok átadásához

A firewall-cmd közvetlen opciókat (--direct) is biztosít a tűzfal közvetlen eléréséhez. Ez azoknak hasznos, akik alapvető ismeretekkel rendelkeznek az iptables-ról.

Fontos: Csak végső megoldásként használja a közvetlen beállításokat, ha nem lehetséges a fent ismertetett szokásos tűzfal-cmd opciók használata.

Íme egy példa a nyers iptables szabály átadására a --add-rules kapcsoló használatával. Ezeket a szabályokat egyszerűen eltávolíthatja, ha a --add-rule kifejezést a --remove-rule-ra cseréli:

sudo firewall-cmd --direct --add-rule ipv4 filter IN_public_allow 0 -m tcp -p tcp --dport 80 -j ACCEPT

Az iptables-ról további információért tekintse meg ezt az útmutatót: Hogyan állítsunk be egy Iptables tűzfalat a szolgáltatások távoli eléréséhez Linux alatt.

Ha nem ismeri az iptables szintaxisát, választhatja a tűzfal „gazdag nyelvét”, hogy bonyolultabb tűzfalszabályokat hozzon létre, könnyen érthető módon, ahogyan a következőkben elmagyarázzuk.

A gazdag nyelv használata a tűzfalban

A gazdag nyelv (más néven bővített szabályok) az IPv4 és IPv6 bonyolultabb tűzfalszabályainak hozzáadására szolgál. az iptables szintaxis ismerete nélkül.

Kibővíti az általunk lefedett zónafunkciókat (szolgáltatás, port, icmp-block, maszkolás és továbbító port). Támogatja a forrás- és célcímeket, a naplózást, a műveleteket és a naplók és műveletek korlátait.

Az --add-rich-rule a bővített szabályok hozzáadására szolgál. Ez a példa bemutatja, hogyan lehet új IPv4 és IPv6 kapcsolatokat engedélyezni a http szolgáltatáshoz és a percenkénti 1 naplózáshoz az audit segítségével:

sudo firewall-cmd --add-rich-rule='rule service name="http" audit limit value="1/m" accept'

A hozzáadott szabály eltávolításához cserélje ki az --add-rich-rule beállítást a --remove-rich-rule lehetőségre.

sudo firewall-cmd --remove-rich-rule='rule service name="http" audit limit value="1/m" accept'

Ez a funkció lehetővé teszi egy adott IP-címről érkező forgalom blokkolását vagy engedélyezését is. A következő példa bemutatja, hogyan utasíthatja el a 10.20.1.20 IP-címről érkező kapcsolatokat.

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.254" reject'

A pánik mód engedélyezése és letiltása a tűzfalban

A Pánik mód egy speciális tűzfal üzemmód, amelyben minden bejövő és kimenő csomag eldobásra kerül, az aktív kapcsolatok pedig az aktiválás után lejárnak.
Ezt a módot vészhelyzetekben engedélyezheti, amikor a hálózati környezetet fenyegető veszély megszűnik.

A pánik mód lekérdezéséhez használja a --query-panic opciót.

sudo firewall-cmd --query-panic

A pánik mód engedélyezéséhez használja a --panic-on opciót. A képen látható ping paranccsal tesztelheti, hogy működik-e. Mivel a csomag el lett dobva, a www.google.com név nem oldható meg, ezért a hibaüzenet jelenik meg.

sudo firewall-cmd --panic-on
ping -c 2 www.google.com

A pánik mód letiltásához használja a --panic-off opciót.

sudo firewall-cmd --panic-off

Hogyan zárható le a tűzfal

Ne feledje, a tűzfallal kapcsolatos alapok alatt említettük, hogy a helyi alkalmazások vagy szolgáltatások képesek megváltoztatni a tűzfal konfigurációját, ha root jogosultságokkal futnak. Szabályozhatja, hogy mely alkalmazások kérhessenek tűzfal módosításokat, ha megadja a zárolási engedélyezési listában.

Ez a funkció alapértelmezés szerint ki van kapcsolva, a --lockdown-on vagy a --lockdown kapcsolóval engedélyezheti vagy letilthatja.

sudo firewall-cmd --lockdown-on
OR
sudo firewall-cmd --lockdown-off

Vegye figyelembe, hogy a fő konfigurációs fájl szerkesztésével ajánlott engedélyezni vagy letiltani ezt a funkciót, mert előfordulhat, hogy a firewall-cmd nem szerepel a zárolási engedélyezési listán, ha engedélyezi a zárolást.

sudo vim /etc/firewalld/firewalld.conf

Keresse meg a Lockdown paramétert, és módosítsa az értékét no-ról (kikapcsolva) igen-ra (bekapcsolva).

Lockdown=yes

A beállítás véglegesítéséhez töltse újra a tűzfalat.

sudo firewall-cmd --reload
Összegzés

A Tűzfal az iptables-t háttérprogramként használó iptables szolgáltatás könnyen használható helyettesítője. Ebben a cikkben bemutattuk, hogyan kell telepíteni a tűzfalcsomagot, elmagyaráztuk a tűzfal fontos funkcióit, és megvitattuk, hogyan konfigurálhatók futásidejű és állandó konfigurációs környezetben.

Ha bármilyen kérdése vagy észrevétele van, forduljon hozzánk bizalommal az alábbi megjegyzés űrlapon keresztül. További információért tekintse meg a tűzfal kézikönyv oldalát (man firewalld) vagy a tűzfal dokumentációját a projekt webhelyén.