RHCSA sorozat: A tűzfal alapjai és a hálózati forgalom szabályozása FirewallD és Iptables használatával – 11. rész
Egyszerűen fogalmazva, a tűzfal egy olyan biztonsági rendszer, amely előre meghatározott szabályok (például a csomagok célállomása/forrása vagy a forgalom típusa) alapján szabályozza a bejövő és kimenő forgalmat a hálózaton. .
Ebben a cikkben áttekintjük a tűzfal alapjait, a Red Hat Enterprise Linux 7 alapértelmezett dinamikus tűzfaldémonját, valamint az örökölt iptables szolgáltatást. tűzfalszolgáltatás Linuxhoz, amelyet a legtöbb rendszer- és hálózati rendszergazda jól ismer, és amely az RHEL 7ben is elérhető.
A FirewallD és az Iptables összehasonlítása
A motorháztető alatt mind a firewall, mind az iptables szolgáltatás ugyanazon a felületen keresztül kommunikál a kernel netfilter keretrendszerével, nem meglepő módon az iptables parancs . Az iptables szolgáltatással ellentétben azonban a tűzfal a rendszer normál működése során módosíthatja a beállításokat anélkül, hogy a meglévő kapcsolatok megszakadnának.
A Tűzfalat alapértelmezés szerint telepíteni kell az RHEL rendszerben, bár előfordulhat, hogy nem fut. A következő parancsokkal ellenőrizheti (a firewall-config a felhasználói felület konfigurációs eszköze):
yum info firewalld firewall-config
és,
systemctl status -l firewalld.service
Másrészt az iptables szolgáltatás alapértelmezés szerint nem szerepel benne, de ezen keresztül telepíthető.
yum update && yum install iptables-services
Mindkét démon elindítható és engedélyezhető a rendszerindításkor a szokásos systemd parancsokkal:
systemctl start firewalld.service | iptables-service.service
systemctl enable firewalld.service | iptables-service.service
Olvassa el még: Hasznos parancsok a rendszerszolgáltatások kezeléséhez
Ami a konfigurációs fájlokat illeti, az iptables szolgáltatás a /etc/sysconfig/iptables
fájlt használja (ami nem fog létezni, ha a csomag nincs telepítve a rendszerére). A fürtcsomópontként használt RHEL 7 dobozon ez a fájl a következőképpen néz ki:
Míg a tűzfal két könyvtárban tárolja konfigurációját: /usr/lib/firewall
és /etc/firewall
:
ls /usr/lib/firewalld /etc/firewalld
Ezeket a konfigurációs fájlokat a cikk későbbi részében tovább vizsgáljuk, miután itt-ott hozzáadunk néhány szabályt. Mostanra elegendő emlékeztetni arra, hogy mindkét eszközről mindig találhat további információkat.
man firewalld.conf
man firewall-cmd
man iptables
Ezen kívül ne felejtsen el egy pillantást vetni az Alapvető parancsok és rendszerdokumentáció áttekintésére – a jelenlegi sorozat 1. részére, ahol több forrást is leírtam, ahol információkat kaphat az RHEL 7 rendszerére telepített csomagokról. .
Iptables használata a hálózati forgalom szabályozására
Érdemes lehet olvasni az Iptables Firewall konfigurálása – a Linux Foundation Certified Engineer (LFCE) sorozat 8. részét, hogy felfrissítse az emlékezetet az iptables belső elemeiről. mielőtt továbblép. Így rögtön beleugorhatunk a példákba.
1. példa: Bejövő és kimenő webforgalom engedélyezése
A 80 és a 443 TCP-portok az Apache webszerver által használt alapértelmezett portok a normál (HTTP) és a biztonságos (HTTPS<) kezelésére.) webforgalom. Az alábbiak szerint engedélyezheti a bejövő és kimenő webes forgalmat az enp0s3 felület mindkét portján:
iptables -A INPUT -i enp0s3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp0s3 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i enp0s3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp0s3 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
2. példa: Blokkolja az összes (vagy néhány) bejövő kapcsolatot egy adott hálózatról
Előfordulhat, hogy blokkolnia kell egy adott hálózatról származó összes (vagy bizonyos) típusú forgalmat, például 192.168.1.0/24:
iptables -I INPUT -s 192.168.1.0/24 -j DROP
eldobja az összes 192.168.1.0/24 hálózatról érkező csomagot, míg
iptables -A INPUT -s 192.168.1.0/24 --dport 22 -j ACCEPT
csak a 22-es porton keresztül engedélyezi a bejövő forgalmat.
3. példa: A bejövő forgalmat egy másik célállomásra irányítsa át
Ha az RHEL 7 boxot nem csak szoftveres tűzfalként, hanem tényleges hardver alapúként is használja, így két különböző hálózat között helyezkedik el, akkor az IP-továbbításnak már engedélyezve kell lennie a rendszerben. . Ha nem, módosítsa az /etc/sysctl.conf
fájlt, és állítsa be a net.ipv4.ip_forward értékét 1-re, az alábbiak szerint:
net.ipv4.ip_forward = 1
majd mentse a módosítást, zárja be a szövegszerkesztőt, és végül futtassa a következő parancsot a módosítás alkalmazásához:
sysctl -p /etc/sysctl.conf
Például előfordulhat, hogy egy IP 192.168.0.10-es belső dobozba nyomtató van telepítve, és a CUPS szolgáltatás a 631-es porton figyel (mindkettő a nyomtatószerveren és a tűzfalon). A tűzfal másik oldalán lévő ügyfelektől érkező nyomtatási kérelmek továbbításához hozzá kell adnia a következő iptables szabályt:
iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 631 -j DNAT --to 192.168.0.10:631
Ne feledje, hogy az iptables sorban olvassa be a szabályait, ezért győződjön meg arról, hogy az alapértelmezett házirendek vagy a későbbi szabályok nem írják felül a fenti példákban leírtakat.
A FirewallD használatának első lépései
A tűzfallal bevezetett egyik változás a zónák. Ez a koncepció lehetővé teszi a hálózatok különböző zónákra való szétválasztását a felhasználó által az eszközökkel és a hálózaton belüli forgalommal szembeni bizalom szintjén.
Az aktív zónák felsorolásához:
firewall-cmd --get-active-zones
Az alábbi példában a nyilvános zóna aktív, és az enp0s3 interfész automatikusan hozzá van rendelve. Egy adott zónára vonatkozó összes információ megtekintéséhez:
firewall-cmd --zone=public --list-all
Mivel a zónákról az RHEL 7 biztonsági útmutatójában olvashat bővebben, itt csak néhány konkrét példát sorolunk fel.
4. példa: Szolgáltatások engedélyezése a tűzfalon keresztül
A támogatott szolgáltatások listájának megtekintéséhez használja a.
firewall-cmd --get-services
A http és https internetes forgalom tűzfalon keresztüli engedélyezése azonnali és a következő rendszerindításkor:
firewall-cmd --zone=MyZone --add-service=http
firewall-cmd --zone=MyZone --permanent --add-service=http
firewall-cmd --zone=MyZone --add-service=https
firewall-cmd --zone=MyZone --permanent --add-service=https
firewall-cmd --reload
Ha a–zone kimarad, akkor az alapértelmezett zóna kerül felhasználásra (ellenőrizheti a firewall-cmd –get-default-zone segítségével).
A szabály eltávolításához cserélje ki az add szót eltávolításra a fenti parancsokban.
5. példa: IP/port továbbítás
Először is meg kell találnia, hogy a maszkolás engedélyezve van-e a kívánt zónában:
firewall-cmd --zone=MyZone --query-masquerade
Az alábbi képen láthatjuk, hogy az masquerading engedélyezve van a külső zónában, de nem a nyilvánosban:
A nyilvános maszkolást engedélyezheti:
firewall-cmd --zone=public --add-masquerade
vagy használjon maszkolást külsőben. A következőképpen replikáljuk a 3. példát a tűzfallal:
firewall-cmd --zone=external --add-forward-port=port=631:proto=tcp:toport=631:toaddr=192.168.0.10
És ne felejtse el újratölteni a tűzfalat.
További példákat találhat az RHCSA sorozat 9. részében, ahol elmagyaráztuk, hogyan lehet engedélyezni vagy letiltani a webszerverek és az ftp-szerverek által általában használt portokat, és hogyan lehet megváltoztatni a megfelelő szabályt, ha az alapértelmezett port ezen szolgáltatásokhoz. megváltoznak. Ezenkívül érdemes a tűzfal wikiben további példákat találni.
Olvassa el még: Hasznos FirewallD-példák a tűzfal konfigurálásához az RHEL 7-ben
Következtetés
Ebben a cikkben elmagyaráztuk, mi az a tűzfal, milyen szolgáltatások érhetők el annak megvalósításához az RHEL 7-ben, és bemutattunk néhány példát, amelyek segíthetnek az első lépésekben. feladat. Ha bármilyen észrevétele, javaslata vagy kérdése van, nyugodtan tudassa velünk az alábbi űrlap segítségével. Előre is köszönöm!