A fost lansată versiunea dinamic gestionată a firewall-ului firewalld 1.0, realizată sub forma unui wrapper peste filtrele de pachete nftables și iptables. Firewalld rulează ca un proces de fundal, permițând modificarea dinamică a regulilor filtrului de pachete prin D-Bus, fără a fi nevoie de resetarea regulilor filtrului de pachete și fără a întrerupe conexiunile stabilite. Proiectul este deja folosit în multe distribuții Linux, inclusiv RHEL 7+, Fedora 18+ și SUSE/openSUSE 15+. Codul firewalld este scris în Python și este distribuit sub licența GPLv2.
Pentru a gestiona firewall-ul se folosește utilitarul firewall-cmd, care la crearea regulilor se bazează nu pe adreselor IP, interfețe de rețea și numere de porturi, iar din numele serviciilor (de exemplu, pentru a deschide accesul la SSH trebuie executat „firewall-cmd —add —service=ssh”, pentru a închide SSH — „firewall-cmd —remove —service=ssh”). Pentru modificarea configurației firewall-ului poate fi de asemenea folosit interfața grafică firewall-config (GTK) și appletul firewall-applet (Qt). Suportul pentru gestionarea firewall-ului prin API-ul D-BUS al firewalld este disponibil în proiecte precum NetworkManager, libvirt, podman, docker și fail2ban.
Modificarea semnificativă a numărului versiunii se datorează modificărilor aduse care afectează compatibilitatea înapoi și schimbă comportamentul gestionării zonelor. Toate parametrii de filtrare definiți în zonă se aplică acum doar pentru traficul destinat gazdei pe care rulează firewalld, iar pentru filtrarea traficului de tranzit este nevoie de configurarea politicilor. Cele mai notabile schimbări:
- Backend-ul care permitea funcționarea deasupra iptables a fost declarat învechit. Suportul pentru iptables va fi păstrat în viitorul apropiat, dar acest backend nu va fi dezvoltat.
- Modul intra-zone-forwarding a fost activat și inclus în mod implicit pentru toate noile zone, permițând transferul liber de pachete între interfețele de rețea sau sursele de trafic din interiorul aceleași zone (public, block, trusted, internal etc.). Pentru a reveni la comportamentul vechi și a interzice redirecționarea pachetelor în interiorul aceleași zone, se poate folosi comanda „firewall-cmd —permanent —zone public —remove-forward”.
- Regulile legate de traducerea adreselor (NAT) au fost mutate în familia de protocoale „inet” (anterior erau adăugate în familiile „ip” și „ip6”, ceea ce ducea la necesitatea duplicării regulilor pentru IPv4 și IPv6). Această modificare a permis eliminarea duplicatelor prin utilizarea ipset — în loc de trei copii ale înregistrărilor ipset, acum se folosește una.
- Acțiunea «default», specificată în parametrul «—set-target», este acum echivalentă cu «reject», adică toate pachetele care nu se încadrează în regulile din zonă vor fi blocate în mod implicit. O excepție a fost făcută doar pentru pachetele ICMP, care continuă să fie permise. Pentru a reveni la comportamentul anterior pentru zona publică „trusted”, pot fi utilizate regulile: 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
- Politicile cu prioritate pozitivă sunt acum executate imediat înainte de executarea regulii «—set-target catch-all», adică în momentul care precede adăugarea regulilor finale drop, reject sau accept, inclusiv pentru zonele în care se folosesc «—set-target drop|reject|accept».
- Blochează ICMP acum se aplică doar pachetelor incoming adresate gazdei curente (input) și nu afectează pachetele redirecționate între zone (forward).
- Serviciul tftp-client, destinat monitorizării conexiunilor pentru protocolul TFTP, dar care era într-o stare inutilizabilă, a fost eliminat.
- Interfața «direct», care permitea introducerea directă a regulilor de filtrare a pachetelor, a fost declarată învechită. Necesitatea acestei interfețe a dispărut după ce a fost adăugată posibilitatea filtrării pachetelor redirecționate și outbound.
- A fost adăugat parametrul CleanupModulesOnExit, care a fost modificat implicit la valoarea «no». Acest parametru poate fi utilizat pentru a gestiona descărcarea modulelor kernel după terminarea firewalld.
- Utilizarea ipset la definirea sistemului țintă (destination) a fost permisă.
- Au fost adăugate definiții pentru serviciile WireGuard, Kubernetes și netbios-ns.
- Regulile de auto-completare pentru zsh au fost realizate.
- Suportul pentru Python 2 a fost oprit.
- Lista de dependențe a fost redusă. Pentru funcționarea firewalld, pe lângă kernelul Linux, acum sunt necesare doar bibliotecile Python dbus, gobject și nftables, iar pachetele ebtables, ipset și iptables au fost clasificate ca fiind opționale. Bibliotecile Python decorator și slip au fost eliminate din dependențe.
Sursa: opennet.ro
