FirewallD je nástroj, který Fedora používá pro poskytování dynamického firewallu. To znamená, že změny v nastavení firewallu se projevují okamžitě, aniž by bylo nutné firewall restartovat. Kromě toho podporuje FirewallD D-BUS a koncept zón.
Poznámka: Článek původně vyšel jako Howto: Firewalld basics v blogu Rolanda Wolterse liquidat. Text vychází s licencí CC BY-SA 3.0.
FirewallD nahradil starý mechanismus firewallu ve Fedoře 18. Jedním z důvodů pro zavedení nového firewallového systému bylo to, že staré řešení vyžadovalo restartování firewallu, což znamenalo přerušení všech stavových spojení při jakékoliv změně. FirewallD navíc podporuje dynamické zóny, které se hodí při používání mobilních zařízení, např. notebooků: můžete mít různé zóny a tím pádem různé sady pravidel např. pro síť v práci a doma.
Pro usnadnění integrace firewallu do jiných aplikací byla do FirewallD přidána podpora D-BUS. Nastavení lze provést pomocí grafického rozhraní nebo v příkazové řádce, což je to, čemu se věnuje tento článek.
Chcete-li používat FirewallD, měli byste se podívat, kterou zónu zrovna používáte:
firewall-cmd --get-active-zone home: wlan0
Příkaz zobrazí síťová zařízení a dané zóny.
Dostupné zóny zobrazíte pomocí:
# firewall-cmd --get-zones drop work internal external trusted home dmz public block
Takže pokud chcete změnit zónu sítě, např. proto, že jste zrovna vytvořili VPN tunel do své domácí sítě, provedete to takto:
# firewall-cmd --zone=external --change-interface=wlan0
Bohužel se nezobrazí žádný návratový kód, ale můžete se znovu dotázat na aktuální zóny, chcete-li potvrdit, že vše proběhlo správně.
Protože však mluvíme o dynamických změnách firewallu, tak nás zajímá otevírání a zavírání portů. Dá se na to dívat také tak, že půjde o povolování či zakazování přístupu ke službám. Rozdíl je, že služba může představovat seznam několika portů.
Vyplývá z toho, že můžete dotazovat povolené služby (porty se neukazují), povolené porty (služby se neukazují) nebo všechno (ukazuje se vše):
# firewall-cmd --zone=home --list-services mdns ipp-client dhcpv6-client ssh samba-client
U externí zóny to vypadá jinak:
# firewall-cmd --zone=public --list-services ssh
Dotaz na porty vypadá stejně, ale obsahuje příslušný port a protokol:
# firewall-cmd --zone=external --list-ports 3333/tcp
Jak bylo zmíněno výše, nejjednodušší je vždy dotazovat vše:
# firewall-cmd --zone=external --list-all external interfaces: wlan0 services: ssh ports: 3333/tcp forward-ports: icmp-blocks:
Jak patrně víte, pokud chcete ověřit, jestli je port skutečně přístupný zvenčí, spusťte start nc -l 3333
a zkuste se na daný port připojit přes telnet.
To však nic není bez možnosti otevírat a zavírat porty:
# firewall-cmd --zone=external --add-port=2222/tcp # firewall-cmd --zone=external --list-ports 3333/tcp 2222/tcp
Zavření portu je podobně snadné:
# firewall-cmd --zone=external --remove-port=2222/tcp # firewall-cmd --zone=external --list-ports 3333/tcp
Jak je vidět, dynamické a zónové funkce FirewallD fungují velmi pěkně. V serverovém prostředí však pro FirewallD upotřebení nevidím. Tam obyčejně nemáte potřebu měnit úrovně důvěryhodnosti připojení, takže podle mého nejsou potřeba zóny. Ani dynamické změny nemusí být tak důležité, takže jsem zvědavý, jestli to na serverech bude z dlouhodobého hlediska hrát nějakou roli.
Z uživatelského pohledu jsou dynamické změny pomocí příkazové řádky velmi užitečné. Neškodilo by přidat více stavových zpráv, ale jinak to prostě funguje. Zóny jsou částečně integrovány do NetworkManageru, takže v budoucnu bude moci různé úrovně důvěryhodnosti uživatel vybrat, aniž by musel vědět, co přesně to znamená ve vztahu k vlastním portům.
Nejsem si jistý, jak jsou na tom ostatní distribuce: převezmou to? Předpokládám, že to záleží na tom, jak těsná bude integrace s nástroji jako NetworkManager nebo s desktopovým prostředím obecně…
Více informací o FirewallD najdete v dokumentaci Fedory.
16. 4. 2013 at 16:26
Hezky 🙂 Diky.
19. 4. 2013 at 17:51
„V serverovém prostředí však pro FirewallD upotřebení nevidím.“
Nedávno jsem se dozvěděl, že FirewallD bylo navrženo primárně pro servery a že jeho uchycení na desktopu nebylo plánované.