Bemutatásra került a firewalld 1.0 dinamikusan irányított tűzfal kiadása, amely a nftables és iptables csomagszűrők fölé épült. A firewalld háttérfolyamatként fut, lehetővé téve a csomagszűrő szabályok dinamikus módosítását D-Bus-on keresztül, anélkül hogy szükség lenne a szabályok újratöltésére, és megszakítás nélkül az aktív kapcsolatokra. A projekt már számos Linux disztribúcióban használatban van, beleértve a RHEL 7+, Fedora 18+ és SUSE/openSUSE 15+-t. A firewalld kódját Python nyelven írták, és GPLv2 licenc alatt terjesztik.
A tűzfal kezelésére a firewall-cmd segédeszköz használatos, amely a szabályok megalkotásakor nem a hálózati interfészekre és portszámokra, hanem a szolgáltatások neveire támaszkodik (például az SSH hozzáférésének megnyitásához a «firewall-cmd —add —service=ssh» parancsot kell végrehajtani, az SSH lezárásához pedig a «firewall-cmd —remove —service=ssh» parancsot). A tűzfal konfigurációjának módosítására a firewall-config grafikus felület (GTK) és a firewall-applet (Qt) is használható. A firewalld D-BUS API-n keresztüli tűzfalkezelés támogatása számos projektben megtalálható, például a NetworkManager, libvirt, podman, docker és fail2ban esetében. IP-címek, hálózati interfészek és portszámok helyett a szolgáltatások nevei alapján.
A verziószám jelentős megváltozása visszamenőleges kompatibilitást megszakító változtatásoknak tudható be, amelyek megváltoztatják a zónákkal való munkát. Minden zónában megadott szűrési paraméter most már csak arra a forgalomra vonatkozik, amely a firewalld-t futtató hosztra irányul, míg a tranzitforgalom szűréséhez politikai beállításokra van szükség. A legszembetűnőbb változások:
- Elavultnak nyilvánították az iptables felett működő háttérszolgáltatást. Az iptables támogatása a közeljövőben megmarad, de ez a háttérszolgáltatás nem fejlődik tovább.
- A belső zónák közötti csomagmozgatást lehetővé tevő intra-zone-forwarding mód alapértelmezés szerint be van kapcsolva és aktiválva van minden új zónában, lehetővé téve a csomagok szabad mozgását a hálózati interfészek vagy források között az egyes zónákon belül (public, block, trusted, internal stb.). A régi viselkedés visszaállításához és a csomagok belső zónán belüli irányításának tiltásához a «firewall-cmd —permanent —zone public —remove-forward» parancsot lehet használni.
- A címfordítási (NAT) szabályokat átkerült a "inet" protokollcsaládba (korábban az "ip" és "ip6" családokba lettek hozzáadva, ami duplikált szabályokhoz vezetett IPv4 és IPv6 esetén). A módosítás lehetővé tette a duplikációk eltüntetését az ipset használatakor - három példány helyett most egyetlen ipset bejegyzés használatos.
- A "default" művelet, amelyet a "--set-target" paraméterben adunk meg, mostantól egyenértékű a "reject"-tel, azaz minden csomag, amely nem esik bizonyos szabályok alá a zónában, alapértelmezés szerint blokkolva lesz. Kivételt képeznek az ICMP-csomagok, amelyek továbbra is átengedésre kerülnek. A "trusted" nyilvános zóna régi viselkedésének visszaállításához a következő szabályokat használhatjuk: firewall-cmd --permanent --new-policy allowForward firewall-cmd --permanent --policy allowForward --set-target ACCEPT firewall-cmd --permanent --policy allowForward --add-ingress-zone public firewall-cmd --permanent --policy allowForward --add-egress-zone trusted firewall-cmd --reload
- A pozitív prioritású politikák most közvetlenül a "--set-target catch-all" szabály végrehajtása előtt hajtódnak végre, azaz az utolsó drop, reject vagy accept szabályok hozzáadása előtt, beleértve azokat a zónákat is, ahol "--set-target drop|reject|accept" van használatban.
- Az ICMP blokkolása most már csak a jelenlegi hosztra irányuló bejövő csomagokra vonatkozik (input), és nem érinti a zónák között továbbított csomagokat (forward).
- Az tftp-client szolgáltatás eltávolításra került, amely a TFTP protokoll kapcsolatok nyomon követésére volt hivatott, de használhatatlanná vált.
- A "direct" felület elavultnak nyilvánítva, amely lehetővé tette a kész csomagszűrési szabályok közvetlen beillesztését. A felület iránti szükség eltűnt a továbbított és kimenő csomagok szűrésének lehetősége után.
- Új CleanupModulesOnExit paramétert vezettek be, amely alapértelmezés szerint "no" értékre van állítva. Ezzel a paraméterrel kezelhetjük a kernel modulok törlését a firewalld működésének befejezése után.
- Engedélyezve lett az ipset használata a célrendszer (destination) meghatározásakor.
- Hozzáadták a WireGuard, Kubernetes és netbios-ns szolgáltatások definiálását.
- Az zsh automatikus kiegészítési szabályai megvalósításra kerültek.
- A Python 2 támogatása megszűnt.
- A függőségek listája csökkentve lett. A firewalld működéséhez mostantól a Linux mag mellett kötelezően csak a dbus, gobject és nftables python könyvtárak szükségesek, míg az ebtables, ipset és iptables csomagok opcionálissá váltak. A függőségek közül eltávolításra kerültek a decorator és slip python könyvtárak.
Forrás: opennet.ru
