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.