Bol predstavený release dynamicky spravovaného firewallu firewalld 1.0, ktorý je implementovaný ako obal nad paketovými filtrami nftables a iptables. Firewalld beží ako proces na pozadí, ktorý umožňuje dynamicky meniť pravidlá paketového filtra cez D-Bus, bez potreby reštartovania pravidiel paketového filtra a bez prerušenia existujúcich spojení. Projekt sa už používa v mnohých distribúciách Linuxu, vrátane RHEL 7+, Fedora 18+ a SUSE/openSUSE 15+. Kód firewalld je napísaný v jazyku Python a je distribuovaný pod licenciou GPLv2.
Na správu firewallu sa používa utilita firewall-cmd, ktorá pri vytváraní pravidiel vychádza nie z IP adresy, sieťových rozhraní a čísel portov, ale z názvov služieb (napríklad na otvorenie prístupu k SSH je potrebné vykonať „firewall-cmd —add —service=ssh“, na zatvorenie SSH — „firewall-cmd —remove —service=ssh“). Na zmenu konfigurácie firewallu sa môže takisto použiť grafické rozhranie firewall-config (GTK) a applet firewall-applet (Qt). Podpora správy firewallu cez D-BUS API firewalld existuje v takých projektoch ako NetworkManager, libvirt, podman, docker a fail2ban.
Významná zmena čísla verzie súvisí s úpravami, ktoré narušujú spätnú kompatibilitu a menia správanie práce so zónami. Všetky parametre filtrácie definované v zóne sa teraz aplikujú iba na prenos, ktorý je určený hostiteľovi, na ktorom beží firewalld, a na filtráciu tranzitného prenosu je potrebné nastaviť politiky. Najvýraznejšie zmeny:
- Bol vyhlásený za zastaraný backend, ktorý umožňoval pracovať nad iptables. Podpora iptables zostane v dohľadnej budúcnosti, ale tento backend sa nebude ďalej vyvíjať.
- Režim intra-zone-forwarding je zapnutý a aktívny predvolene pre všetky nové zóny, čo umožňuje voľný pohyb paketov medzi sieťovými rozhraniami alebo zdrojmi prenosu v rámci jednej zóny (public, block, trusted, internal a podobne). Na vrátenie starého správania a zákaz presmerovania paketov v rámci jednej zóny môžete použiť príkaz „firewall-cmd —permanent —zone public —remove-forward“.
- Pravidlá súvisiace s preposielaním adries (NAT) boli presunuté do rodiny protokolov „inet“ (predtým sa pridávali do rodín „ip“ a „ip6“, čo viedlo k potrebe duplikovať pravidlá pre IPv4 a IPv6). Zmena umožnila zbaviť sa duplikátov pri používaní ipset — namiesto troch kópií záznamov ipset sa teraz používa jedna.
- Akcia „default“, uvedená v parametri „—set-target“, je teraz ekvivalentná „reject“, t.j. všetky pakety, ktoré nezapadajú pod konkrétne pravidlo v zóne, budú blokované. Výnimku tvoria len pakety ICMP, ktoré sú naďalej povolené. Na vrátenie starého správania pre verejnú zónu „trusted“ je možné použiť pravidlá: 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
- Politiky s pozitívnym prioritou sa teraz vykonávajú priamo pred vykonaním pravidla „—set-target catch-all“, t.j. v okamihu pred pridaním konečných pravidiel drop, reject alebo accept, vrátane zón, v ktorých sa používajú „—set-target drop|reject|accept“.
- Blokovanie ICMP sa teraz aplikuje iba na paketoch smerovaných k aktuálnemu hostiteľovi (input) a netýka sa paketov presmerovaných medzi zónami (forward).
- Služba tftp-client, určená na sledovanie spojení pre protokol TFTP, bola odstránená, pretože bola v nepoužiteľnom stave.
- Rozhranie „direct“ bolo oznámené ako zastarané, umožňujúce priamo implementovať hotové pravidlá pre filtrovanie paketov. Potreba tohto rozhrania zmizla po pridaní možnosti filtrovania presmerovaných a odchádzajúcich paketov.
- Bol pridaný parameter CleanupModulesOnExit, ktorý je predvolene nastavený na hodnotu „no“. Pomocou tohto parametra je možné spravovať uvoľňovanie modulov jadra po ukončení práce firewalld.
- Povolené používanie ipset pri určovaní cieľového systému (destination).
- Boli pridané definície služieb WireGuard, Kubernetes a netbios-ns.
- Boli implementované pravidlá auto-doplnenia pre zsh.
- Podpora Python 2 bola ukončená.
- Zoznam závislostí bol skrátený. Pre fungovanie firewalld sú teraz potrebné len knižnice Python dbus, gobject a nftables, zatiaľ čo balíky ebtables, ipset a iptables sú považované za voliteľné. Z zoznamu závislostí boli odstránené knižnice Python decorator a slip.
Zdroj: opennet.ru
