přejít na obsah přejít na navigaci

Linux E X P R E S, FirewallD: „Náhrada iptables“ pro Fedoru 18

FirewallD: „Náhrada iptables“ pro Fedoru 18

fedora_logo.jpg

FirewallD je nová služba, která má na starost nastavování firewallu ve Fedoře 18. Dnes probíhá testovací den Network Manageru a FirewallD, při této příležitosti si službu představíme.


reklama

Článek je vydán s licencí Creative Commons BY-SA 3.0, pochází z webu Fedora.cz a jeho autorem je Jiří Popelka. Je vydán u příležitosti testovacího dne Network Manageru a FirewallD, který probíhá dnes, tedy 21. listopadu 2012. Pokud vás tato problematika zajímá, nezapomeňte se zúčastnit a pomoct s testováním a zkvalitňováním této služby ve Fedoře.

Nejprve ale něco o tom, jak to funguje v současnosti

V Linuxu je firewall (paketový filter) implementován v jádře a tento framework se jmenuje Netfilter. V uživatelském prostoru je k dispozici nástroj iptables (případně ip6tables pro IPv6), který nastavuje tento paketový filtr v jádře. Dále má Fedora stejnojmennou službu, která tento nástroj využívá.

Současný model firewallu v uživatelském prostoru je víceméně statický. Počáteční konfigurace firewallu je vytvořena instalátorem anaconda a uživatel ji může později měnit nástrojem system-config-firewall. Pravidla jsou uložena v /etc/sysconfig/iptables. To, že jsou pravidla uložena v jednom souboru, je výhoda, protože tento soubor je možné generovat nebo měnit jednoduchými skripty. Problémem u tohoto modelu je, že pro aplikování každé změny je nutné firewall (službu iptables) restartovat. S tím souvisí další problém – protože služba iptables je jen skupinka skriptů, které se jednorázově pustí při re-startu této služby, tak jiné služby, které potřebují samy manipulovat s firewallem (jmenovitě libvirt) nemají žádnou možnost, jak zjistit, že k restartu firewallu došlo. Dále je nutné při restartu odebrat a znovu nahrát kernel moduly netfilter (např. pro ftp, sambu aj.), což může způsobit přerušení aktivních připojení.

Naproti tomu v novém dynamickém modelu FirewallD se většina změn obejde bez restartu firewallu. Protože jde o neustále běžící službu, přístupnou přes D-Bus, tak např. libvirt dokáže zaznamenat její restart a zareagovat tím, že znovu vytvoří potřebná pravidla pro běžící virtuální stroje. Přes D-Bus je navíc možné měnit a zjišťovat nastavení firewallu. GUI k FirewallD se jmenuje firewall-config a CLI firewall-cmd.

Nevýhodou FirewallD je, že všechny modifikace firewallu je nutné provádět přes FirewallD (GUI, CLI nebo D-Bus). Pokud by uživatel např. sám povolil nějakou službu přímo přes program iptables, tak FirewallD ji bude dál považovat za zakázanou.

FirewallD také neumí číst /etc/sysconfig/iptables, ale má vlastní konfigurační soubory XML v /usr/lib/. Poslední změnou, která by se nemusela všem líbit, je, že výpis všech nastavených pravidel například pomocí iptables -L je obsáhlejší než v případě služby iptables. Důvodem jsou nové řetězce (chains) kvůli síťovým zónám.

Pomocí staršího nástroje system-config-firewall je sice možné měnit většinu důležitých nastavení firewallu, ale problémem je, že například s notebookem se během dne můžete připojit k několika různým sítím a nastavení firewallu, které je vyhovující v jedné síti, už nemusí dávat příliš smysl v případě jiné sítě.

Například připojení k veřejné síti wi-fi bude logicky vyžadovat přísnější nastavení firewallu než v případě připojení k pevné domácí síti, kde můžete ostatním zařízením na síti víceméně důvěřovat.

Autorem obrázku je Máirín Duffy Autorem obrázku je Máirín Duffy

Právě koncept zón umožňuje mít různá nastavení firewallu pro různá připojení. Zóny definují stupeň důvěry síťovému rozhraní nebo připojení. Klasifikovat síťová připojení do zón je možné buď přímo v konfiguračních souborech jednotlivých síťových připojení, tj. v /etc/sysconfig/network-scripts/ifcfg-* nebo v GUI k NetworkManageru. Jednoduchým přepnutím zóny tak lze snadno změnit komplexní nastavení firewallu pro dané připojení.

FirewallD je možné používat již ve Fedoře 17, ale jako výchozí služba pro firewall by měl nahradit službu iptables teprve ve Fedoře 18. Nadále bude možné používat i službu iptables, ne ale zároveň s FirewallD. Půjde tedy o podobnou situaci jako u NetworkManageru a služby ‘network’ (balíček initscripts).

Konfigurace zón

Nejdříve si ukážeme, jak nastavit, do které zóny bude síťové připojení patřit. Pokud neurčíme jinak, patří každé připojení do výchozí zóny. Která zóna je touto výchozí, je nastaveno v /etc/firewalld/firewalld.conf. V současnosti je výchozí zóna nastavena na zónu s názvem public. Změnit výchozí zónu je tedy možné přímo editací tohoto souboru nebo např. příkazem firewall-cmd --set-default-zone=home nebo v firewall-config kliknutím na tlačítko Změnit výchozí zónu. Seznam existujících zón získáte třeba příkazem firewall-cmd --get-zones. Pokud vám stačí (třeba v případě domácího stolního počítače s jednou síťovou kartou), že budou všechna připojení v zóně home, tak je vaše práce u konce.

Řekněme ale, že máte notebook, se kterým se doma nebo v práci připojujete k pevné sítí, ale čas od času používáte bezdrátové připojení k různým veřejným sítím wi-fi.

Potom chcete vaše připojení wi-fi nechat ve výchozí zóně (public) a pouze vaše pevné připojení mít v zóně home. Zóna home totiž poskytuje větší stupeň důvěry v připojení a více povolených služeb. Jsou dvě možnosti, jak změnit zónu pro konkrétní připojení. Můžete editovat konfigurační soubor konkrétního připojení, tj. odpovídající soubor /etc/sysconfig/network-scripts/ifcfg-* a přidat (případně změnit) řádek se ZONE=home. Jednodušší možností je změnit to v GUI k NetworkManageru.

Takto vypadá nastavení zóny pro konkrétní připojení pomocí nástroje Network Connections v systémových nastaveních KDE. Podobné „přepínátko“ by se mělo brzy objevit i v appletu NM, který je v GNOME a jiných prostředích Takto vypadá nastavení zóny pro konkrétní připojení pomocí nástroje Network Connections v systémových nastaveních KDE. Podobné „přepínátko“ by se mělo brzy objevit i v appletu NM, který je v GNOME a jiných prostředích

Dále chcete, dejme tomu, ve své domácí zóně povolit ještě další služby, které jsou zatím zakázány. Zase máte několik možností. Můžete upravit přímo konfigurační soubor zóny /usr/lib/firewalld/zones/home.xml. Provedete to tak, že vytvoříte jeho kopii v /etc/firewalld/zones a teprve ten budete měnit, abyste se nemuseli bát, že vás update připraví o vaše změny. Chcete-li například povolit službu http, stačí přidat řádek <service name="http"/>. Další možnosti viz firewalld.zone(5).

Po editaci ale musíte firewalld restartovat (stačí reload), aby se změny načetly. Seznam existujících zón získáte, jak už jsem zmínil, buď příkazem firewall-cmd –get-zones, nebo v /usr/lib/firewalld/services/, kde jsou jejich konfigurační soubory, které můžete samozřejmě taktéž upravovat. Viz firewalld.service(5).

Další možností, jak povolit službu v konkrétní zóně, je firewall-cmd --permanent --zone=home --add-service=http, případně varianta bez --permanent, tedy firewall-cmd --zone=home --add-service=http. Rozdíl mezi nimi je ten, že --permanent mění konfiguraci trvalou, tj. ty dříve zmiňované soubory XML, které se načtou s restartem firewalld. Bez --permanent měníte současnou aktivní (runtime) konfiguraci, která ale s restartem zmizí, resp. bude přepsána konfigurací persistentní.

Runtime změny vás zajímají, asi pouze pokud si chcete pohrát s nastavením bez obav, že něco zkazíte, protože restartem se vše vrátí do původní podoby. Možná si řeknete, že je to zajímavá hračka, ale proč s tím někdo ztrácel čas? Důvodem je třeba služba libvirt, která za běhu modifikuje firewall, například nastaví NAT pro startující virtuální stroj a pak ho zase zruší, když se virtuální stroj vypne. Bylo by kontraproduktivní, kdyby takovéto změny byly trvalé a po (re)startu firewallu se nastavil NAT pro virtuální stroj, který v té chvíli možná vůbec neběží.

Samozřejmě úplně nejjednodušší je všechno naklikat v nástroji firewall-config, což je GUI k firewalld. firewall-config se zatím podobá nástroji system-config-firewall s několika drobnými rozdíly:

Nástroj firewall-config je čerstvá novinka a je velmi pravděpodobné, že vzhled se ještě bude měnit Nástroj firewall-config je čerstvá novinka a je velmi pravděpodobné, že vzhled se ještě bude měnit

Na levé straně je seznam zón. Kliknutím na název zóny se načte její konfigurace, kterou můžete měnit. Další novinkou je přepínání pohledů (na obrázku zatím nepřeloženo jako Current view). Tímto se přepíná mezi konfigurací aktuální a persistentní. Pokud měníte konfiguraci aktuální, tak se změny okamžitě provádějí bez nutnosti cokoliv restartovat (na rozdíl od system-config-firewall), ale tyto změny po restartu zmizí. Po editaci persistentní konfigurace je ještě nutné stisknout Reload Firewalld, aby se persistentní změny načetly a stala se z nich nová aktuální konfigurace. V Pohledu Persistentní konfigurace, máte možnost přidávat a editovat zóny, služby nebo typy ICMP.

Teď už byste měli vědět vše podstatné, abyste byli schopní měnit firewall ve Fedoře 18. Případné problémy hlaste jako vždy do bugzilly. Také se můžete dnes (21. listopadu) zúčastnit testovacího dne a pomoct s testováním a zkvalitňováním této služby ve Fedoře.

Nahoru

(Jako ve škole)
 

Top články z OpenOffice.cz

Příspěvky

FirewallD: „Náhrada iptables“ pro Fedoru 18
linuxik 21. 11. 2012, 09:41:01
Odpovědět  Odkaz 
No jo, jen tak dále. Nejdřív nahradit perfektně funkční Gnome2 za ergonomicky dokonale neštastné Gnome3, potom vyměnit jednoduchý a přehledný sysvinit za systemd, ve kterém ani není rc.local a ted ještě nahradit firewall za něco s dynamickou konfigurací. A co mi vůbec hlava nebere, je snaha protlačit networkmanager jako standardního správce síťového připojení v serverových distribucích. K úplné dokonalosti již zbývá jen přenést všechnu ošklivou textovou konfiguraci z /etc do registrů a vývojáři Fedory budou konečně spokojení.
Jiří Eischmann Re: FirewallD: „Náhrada iptables“ pro Fedoru 18
Jiří Eischmann 21. 11. 2012, 10:42:46
Odpovědět  Odkaz 
"vyměnit jednoduchý a přehledný sysvinit za systemd"

sysvinit je IMHO všechno jenom ne jednoduchý a přehledný :-)
FirewallD: „Náhrada iptables“ pro Fedoru 18
alfonz 21. 11. 2012, 10:17:36
Odpovědět  Odkaz 
Přidávám se k názoru předřečníka... také přestávám tyto změny chápat...NM je na notebooku skvělý, ale na serveru, jsem ještě nikdy takto dynamickou konfiguraci nepotřeboval... Dále co se týká firewall jsem plně spokojený s
ufw a kombinací fail2ban na serveru. A myslím, že i velké stroje a vzdálené možnosti správy jsou pro tohle lepší. Dále umožňují tyto nové nástroje aspoň stále i staré způsoby zápisu, nebo je to opět změna, kde se opět všechno nastavení musí okamžitě přepsat??...
Michal Hrušecký Re: FirewallD: „Náhrada iptables“ pro Fedoru 18
Michal Hrušecký 21. 11. 2012, 10:34:51
Odpovědět  Odkaz 
V clanku pisou, ze nastaveni se musi zahodit a prepsat do XML
Jiří Eischmann Re: FirewallD: „Náhrada iptables“ pro Fedoru 18
Jiří Eischmann 21. 11. 2012, 10:41:27
Odpovědět  Odkaz 
Nikdo nikomu nebrání dál používat iptables a nástroje na něm postavené. Ve Fedoře budou i nadále k dispozici, jen firewalld bude výchozí volbou, což je podle mně na desktopu pozitivní změna.
Michal Hrušecký D-Bus
Michal Hrušecký 21. 11. 2012, 10:42:28
Odpovědět  Odkaz 
Ok, chapu potrebu pro demona pro firewall. Ten se mi muze hodit i na serveru. Co ale nechapu je proc D-Bus. D-Bus je ok na komunikace mezi programy, kdyz vyvojar nechce delat protokol a hrat si sockety a jen neco upatlat pro desktop. Ale zrovna u toho firewallu (protoze si prave dovedu predstavit to pouziti na serveru), bych celkem ocenil moznost nastavovat vzdalene. A pokud se nepletu, tak na system bus nema uzivatel pristup a session bus po ssh default nebezi. Jo uzivatel nema co sahat na firewall, to uznavam, ale nebyl jeden z Lenartovych argumentu pro zruseni sbin capabilities? A tedy D-Bus na serveru se mi vubec nelibi, no... I kdyz treba to bude optional dependence, ale pak skoncim u ssh a pak uz je jednoduzsi zustat u tech scriptu co mam ted :-D
FirewallD: „Náhrada iptables“ pro Fedoru 18
DDTE 21. 11. 2012, 11:45:01
Odpovědět  Odkaz 
Dufam, ze firewalld zostane ako default len vo Fedore a usetri nas ostatnych. Ale obavam sa, ze to skonci ako so systemd, rozsiri sa to ako mor uplne vsade.
FirewallD: „Náhrada iptables“ pro Fedoru 18
Jiří Popelka 21. 11. 2012, 15:08:35
Odpovědět  Odkaz 
Testovací den není dnes (21. listopadu), ale byl přesunut na 12. prosince.
FirewallD: „Náhrada iptables“ pro Fedoru 18 - nesmysl
ASSINISS 21. 03. 2013, 21:45:20
Odpovědět  Odkaz 
IpTables byla mnohem lepsi a prehlednejsi tohle je blbost......

Přidat názor

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Jiří Popelka


| blog