A CentoOS 7-től kezdve egy új eszköz jelent meg a forgalom szűrési szabályainak konfigurálására. firewalld. Javasoljuk, hogy használja az iptable szabályok kezelésére. A CentOS 8-ban a szokásos iptable szűrőcsomag helyett az nftables-keretrendszert használják, és amikor a tűzfalszabályokat a tűzfal segítségével konfigurálja, akkor valójában az nftables-t konfigurálja. Ebben a cikkben megvizsgáljuk a tűzfalak telepítését, alapvető fogalmait és konfigurálását egy olyan kiszolgálóra, amelyen a CentOS 8 fut (a CentOS 7-ben minden ugyanaz).
Tartalom:
- Tűzfal alapvető fogalmak, zónák és szabályok
- Telepítse és engedélyezze a tűzfalat a CentOS-on
- Munka a tűzfal szabályokkal
- Tűzfal: IP blokkolás, kivétel
- Port továbbítás a tűzfalban
FirewallD - tűzfalat, amely megvédi a szervert a nem kívánt forgalomtól, a dinamikus szabálykezelés támogatásával (újraindítás nélkül) és az állandó tűzfalszabályok végrehajtásával. Interfészként működik az iptable és az nftables számára. A FirewallD szinte minden Linux disztribúción használható.
Tűzfal alapvető fogalmak, zónák és szabályok
A telepítés és a konfigurálás megkezdése előtt firewalld, megismerjük a zónák fogalmát, amelyek segítségével meghatározzuk a különféle vegyületekbe vetett bizalom mértékét. Különböző zónákhoz firewalld alkalmazhat különféle szűrési szabályokat, megadhatja az aktív tűzfalak beállításait előre definiált szolgáltatások, protokollok és portok, port-továbbítás és gazdag szabályok formájában.
Firewalld a bejövő forgalmat zónák szerint szűri, a zónára alkalmazott szabályoktól függően. ha IP-a kérés feladó címe megfelel minden zóna szabályainak, a csomagot ezen a zónán keresztül kell elküldeni. Ha a cím nem egyezik a szerveren konfigurált zónák egyikével, akkor a csomagot az alapértelmezett zóna dolgozza fel. Telepítéskor firewalld az alapértelmezett zónát hívják nyilvános.
A tűzfalakban vannak olyan zónák, ahol a különböző szolgáltatások engedélyei már előre vannak konfigurálva. Használhatja ezeket a beállításokat, vagy létrehozhat saját zónákat. A tűzfalak telepítésekor létrehozott alapértelmezett zónák listája (az / usr / lib / tűzfal / zónák / könyvtárban tárolva):
csepp | a bizalom minimális szintje. Minden bejövő kapcsolat blokkolódik válasz nélkül, csak kimenő kapcsolatok engedélyezettek; |
tömb | a zóna hasonló az előzőhöz, de amikor a bejövő kéréseket elutasítják, akkor az Impv4 számára egy icmp-host által tiltott üzenet vagy az Ipv6-hoz icmp6-adm-tiltott üzenet kerül elküldésre; |
nyilvános | A nem megbízható nyilvános hálózatokat képviseli. Külön-külön engedélyezheti a kiválasztott bejövő kapcsolatokat; |
külső | külső hálózatok, ha tűzfalat használ átjáróként. Úgy van beállítva, hogy elrejtse a NAT-ot, tehát a belső hálózat magán, de hozzáférhető marad; |
belső | a külső zóna antonimája. A házigazda megfelelő szintű bizalommal rendelkezik, számos kiegészítő szolgáltatás áll rendelkezésre; |
demilitarizált övezet | a DMZ-ben található számítógépekhez használják (izolált számítógépek, a hálózat többi részéhez való hozzáférés nélkül). Csak bizonyos bejövő kapcsolatok megengedettek; |
munka | zóna a munkagépek számára (a hálózaton lévő legtöbb számítógép megbízható); |
otthon | otthoni hálózati zóna. A legtöbb számítógépben megbízhat, de csak bizonyos bejövő kapcsolatok támogatottak; |
megbízható | Bízzon a hálózat összes gépén. Az összes rendelkezésre álló lehetőség közül a legnyitottabb, tudatos felhasználást igényel. |
az firewalld két szabálykészletet használnak - állandó és ideiglenes. Az ideiglenes szabályok addig működnek, amíg a szerver nem indul újra. Alapértelmezés szerint, amikor szabályokat ad hozzá firewalld, a szabályokat ideiglenesnek tekintik (futásidejű). Szabály folyamatos hozzáadásához használja a zászlót - állandó. Ezek a szabályok a kiszolgáló újraindítása után kerülnek alkalmazásra..
Telepítse és engedélyezze a tűzfalat a CentOS-on
A CentOS 7/8 rendszeren a tűzfal alapértelmezés szerint telepítve van az operációs rendszer telepítésekor. Ha törölte, és telepíteni kívánja a tűzfalat, használhatja a szokásos yum / dnf kezelőt:
# yum install firewalld -y
- a Centos 7-hez# dnf tűzfal telepítése -y
- a Centos 8 számára
Démonhoz firewalld automatikusan elindult a szerver indulásával, hozzá kell adnia az indításhoz:
# systemctl engedélyezze a tűzfalat
És fuss:
# systemctl indítsa el a tűzfalat
Ellenőrizze a szolgáltatás állapotát:
# systemctl status tűzfal
● firewalld.service - firewalld - dinamikus tűzfal démon Betöltve: betöltve (/usr/lib/systemd/system/firewalld.service; engedélyezve; eladó preset: engedélyezve) Aktív: aktív (fut) 2019-10-14 14:54 között : 40 +06; 22 évvel ezelőtt Dokumentumok: ember: firewalld (1) Fő PID: 13646 (tűzfal) CGroup: /system.slice/firewalld.service └─13646 / usr / bin / python2 -Es / usr / sbin / firewalld --nofork --nopid Okt. 14 14:54:40 server.vpn.ru systemd [1]: Tűzfal indítása - dinamikus tűzfal démon ... Okt. 14 14:54:40 server.vpn.ru systemd [1]: Indított tűzfal - dinamikus tűzfal démon.
Vagy a parancs segítségével:
# tűzfal-cmd - state
# tűzfal-cmd - state
futás
Munka a tűzfal szabályokkal
Alapértelmezett szabályok:
A tűzfalszabályok konfigurálása előtt ellenőriznie kell, hogy melyik zónát használja alapértelmezés szerint:
# tűzfal-cmd --get-default-zone
Mivel éppen telepítettük és nem konfiguráltuk a tűzfalat, alapértelmezett zónánk van nyilvános.
Ellenőrizze a magot. Ő is egy - nyilvános:
# tűzfal-cmd - cél-aktív-zónák
nyilvános interfészek: eth0
Mint láthatja, az eth0 hálózati interfészt a zóna vezérli. nyilvános.
Megjeleníthető a CentOS hálózati interfészek listája:# ip link show
vagy# nmcli eszköz állapota
Az alapszabályok megtekintéséhez írja be:
# tűzfal-cmd - minden
nyilvános (aktív) cél: alapértelmezett icmp-block-inverzió: nincs interfész: eth0 források: szolgáltatások: dhcpv6-client ssh portok: protokollok: masquerade: nincs előre-portok: forrás-portok: icmp-blokkok: gazdag szabályok:
Amint az a listából látható, a DHCP klienssel és az ssh-vel kapcsolatos szokásos műveletek hozzáadódtak ebbe a zónába..
Elérhető zónák
Az összes zóna listájának megtekintéséhez a következő parancsot kell futtatnia:
# tűzfal-cmd - célzónák
Megkaptam a következő listát:
blokk dmz drop külső otthoni belső nyilvános megbízható munka
Egy adott zóna szabályainak ellenőrzéséhez adja hozzá a - zóna zászlót.
# tűzfal-cmd --zone = home - minden
otthoni cél: alapértelmezett icmp-block-inverzió: nincs interfész: források: szolgáltatások: dhcpv6-kliens mdns samba-kliens ssh portok: protokollok: álarcos: nincs előre-port: forrás-portok: icmp-blokkok: gazdag szabályok:
Az összes zóna szabályai a következő paranccsal tekinthetők meg:
# tűzfal-cmd - összes zóna
A lista meglehetősen nagy lesz, mivel sok zóna lehet.
Az alapértelmezett zóna módosítása.
Alapértelmezés szerint az összes hálózati interfész a zónában található nyilvános, de átvihetők bármelyik zónába a következő paranccsal:
# tűzfal-cmd --zone = home -change-interface = eth0
A paraméter után -zóna = adja meg a kívánt zónát.
Az alapértelmezett zóna megváltoztatásához használja a következő parancsot:
# tűzfal-cmd --set-default-zone = home
Szabályok hozzáadása az alkalmazásokhoz
Egy alkalmazás portjának megnyitásához hozzáadhat egy szolgáltatást a kivételekhez. Az elérhető szolgáltatások listájának megjelenítése:
# tűzfal-cmd - célszolgáltatások
A kimenet számos szolgáltatást tartalmaz. A szolgáltatás részleteit a xml fájlt. Ezek a fájlok a könyvtárban találhatók / usr / lib / tűzfal / szolgáltatások.
Például:
# cd / usr / lib / tűzfal / szolgáltatások
# macska smtp.xml
Mail (SMTP) Ez a beállítás engedélyezi a bejövő SMTP levelek kézbesítését. Ha engedélyeznie kell a távoli állomásoknak, hogy közvetlenül kapcsolódjanak a számítógépéhez a levelek kézbesítéséhez, engedélyezze ezt a lehetőséget. Ezt nem kell engedélyeznie, ha a leveleket az internetszolgáltató kiszolgálójáról POP3 vagy IMAP segítségével gyűjti, vagy ha olyan eszközt használ, mint a fetchmail. Vegye figyelembe, hogy a nem megfelelően konfigurált SMTP-kiszolgáló lehetővé teszi a távoli gépek számára, hogy a kiszolgálót spam küldésére használják.
Az XML fájl egy szolgáltatásleírást, protokollt és portszámot tartalmaz, amelyeket a tűzfalakban nyitnak meg.
Szabályok hozzáadásakor használhatja a paramétert -add-szolgáltatás, Egy adott szolgáltatás elérésének megnyitása:
# tűzfal-cmd --zone = public --add-service = http
siker
# tűzfal-cmd --zone = public --add-service = https
siker
A szabályok hozzáadása után ellenőrizheti, hogy hozzáadtak-e szolgáltatásokat a megadott zónához:
# tűzfal-cmd --zone = nyilvános - list-szolgáltatások
dhcpv6-client http https ssh
Ha ezeket a szabályokat állandóvá kívánja tenni, akkor hozzá kell adnia egy paramétert -állandó.
Szolgáltatás eltávolítása egy zónából:
# tűzfal-cmd - tartósan --zone = public --remove-service = http
# tűzfal-cmd --zone = nyilvános - tartós - list-szolgáltatások
dhcpv6-client https ssh teszt
Ha hozzá szeretné adni szolgáltatását a kivételekhez, akkor létrehozhat egy fájlt xml magad, és töltsd ki. Bármely szolgáltatás adatait másolhatja, megváltoztathatja a nevét, leírását és portszámát.
Másolja a fájlt smtp.xml a felhasználói szolgáltatásokkal foglalkozó könyvtárba:
# cp /usr/lib/firewalld/services/smtp.xml / etc / tűzfal / szolgáltatások
Módosítsa a szolgáltatás leírását a fájlban.
Magát az xml fájlt is át kell nevezni a szolgáltatás nevével. Ezután újra kell indítania a tűzfalat, és ellenőriznie kell, hogy a szolgáltatásunk szerepel-e a listában:
# tűzfal-cmd - célszolgáltatások
Felhívtam a szolgálatot teszt és a listában megjelent:
syslog-tls telnet teszt tftp
Most hozzáadhatja a létrehozott szolgáltatást bármely zónához:
# tűzfal-cmd --zone = public --add-service = test --permanent
siker
# tűzfal-cmd --zone = nyilvános - tartós - list-szolgáltatások
dhcpv6-client http https ssh teszt
Ha nem találta meg a szükséges szolgáltatást a listában, akkor a tűzfalon a kívánt portot megnyithatja a következő paranccsal:
# tűzfal-cmd --zone = public -add-port = 77 / tcp
- nyitott 77-es port tcp# tűzfal-cmd --zone = public -add-port = 77 / udp
- nyitott 77-es port udp# tűzfal-cmd --zone = public -add-port = 77-88 / udp
- nyitott port tartomány: 77-88 udp# tűzfal-cmd --zone = public-list-ports
- ellenőrizze az engedélyezett portok listáját
Az ICMP válaszok blokkolása / engedélyezése:
# tűzfal-cmd --zone = public --add-icmp-block = visszhang-válasz
# tűzfal-cmd --zone = nyilvános --remove-icmp-block = visszhang-válasz
A hozzáadott port törlése:
# tűzfal-cmd --zone = public -remove-port = 77 / udp
- törölje az ideiglenes 77. szabályt udp
# tűzfal-cmd - tartós - zóna = public -remove-port = 77 / udp
- távolítsa el az állandó szabályt
Egyéni zónák hozzáadása
Készíthet saját zónát (nevezném mi):
# tűzfal-cmd - tartós - új zóna = mi
Új zóna létrehozása, valamint a szolgáltatás létrehozása után újra kell indítania firewalld:
# tűzfal-cmd - újratöltés
siker
# tűzfal-cmd - célzónák
blokkolja a dmz drop külső otthoni belső megbízható munkánkat
övezet mi áll rendelkezésre. Felvehet szolgáltatásokat ehhez vagy megnyithat bizonyos portokat.
Tűzfal: IP blokkolás, kivétel
Hozzáadhat megbízható IP-címeket a tűzfal kivételeihez, vagy blokkolhatja a nem kívánt címeket.
Adott IP-cím (például 8.8.8.8) hozzáadása a kiszolgálón kivételekkel firewalld, használja a parancsot:
# tűzfal-cmd --zone = public --add-rich-rule = 'szabálycsalád = "ipv4" forráscím = "8.8.8.8" elfogadás'
Ellenőrizze a területet, és ellenőrizze IP kiegészítve a gazdag szabályok alóli kivételekkel:
# tűzfal-cmd --zone = nyilvános - minden
nyilvános (aktív) cél: alapértelmezett icmp-block-inverzió: nincs interfész: eth0 források: szolgáltatások: dhcpv6-kliens http https ssh tesztportok: protokollok: álarcos: nincs előre-portok: forrás-portok: icmp-blokkok: gazdag szabályok: szabálycsalád = "ipv4" forráscím = "8.8.8.8" elfogadás
Blokkolni IP, ki kell cserélni elfogad tovább elutasít:
# tűzfal-cmd --zone = public --add-rich-rule = 'szabálycsalád = "ipv4" forráscím = "8.8.4.4" elutasítás'
# tűzfal-cmd --zone = nyilvános - minden
nyilvános (aktív) cél: alapértelmezett icmp-block-inverzió: nincs interfész: eth0 források: szolgáltatások: dhcpv6-kliens http https ssh tesztportok: protokollok: álarcos: nincs előre-portok: forrás-portok: icmp-blokkok: gazdag szabályok: szabály család = "ipv4" forrás címe = "8.8.8.8" elfogad a szabály család = "ipv4" forrás címe = "8.8.4.4" elutasítás
Csak egy adott szolgáltatást engedélyezhet egy adott IP-címre vonatkozó kérésekhez:
# tűzfal-cmd - tartós - add-rich-rule 'szabálycsalád = "ipv4" forráscím = "10.10.1.0/24" service name = "https" elfogadás'
Ha sürgősen le kell tiltania az összes kérést a kiszolgálóra, használja a pánik parancsot:
# tűzfal-cmd - spanyol
A pánik módot a következő paranccsal is letilthatja:
# tűzfal-cmd --panic-off
Vagy indítsa újra a szervert.
Letilthatja a tűzfalak konfigurációját úgy, hogy a root szolgáltatásokkal rendelkező helyi szolgáltatások ne változtassák meg a létrehozott tűzfalszabályokat:
# tűzfal-cmd - lekapcsolás
Lezárási mód letiltása:
# tűzfal-cmd - lekapcsolás
Port továbbítás a tűzfalban
Hozhat létre port-továbbítási szabályt a tűzfalakban. A 443-as és 9090-es port továbbítása:
# tűzfal-cmd --zone = public --add-forward-port = port = 443: proto = tcp: toport = 9090 - állandó
Port továbbítási szabály eltávolítása:
# tűzfal-cmd - zóna = nyilvános - eltávolítás-előre-port = port = 443: proto = tcp: toport = 9090