Tuším, že také ne. Je dobré se chránit, protože po Internetu se pohybují nejen podivná individua, která by mohla mít zájem získat nějaké informace z vašeho počítače nebo prostě jen ukojit svoji touhu, ale také různé červy a viry. Kdoví, jeden z nich může být naprogramován "na míru" nějaké z vašich veřejně přístupných síťových služeb.
Systém Linux obsahuje přímo v jádře firewall, který se dá ovládat pomocí příkazu iptables. Tento program má však mnoho parametrů a uživatel (správce) musí zajistit, aby byly po každém startu tyto příkazy (také se jim říká pravidla) volány, a to korektně (nejlépe ve správném pořadí).
Mnoho distribucí proto nabízí vlastní "udělátka", pomocí kterých je možno "naklikat", co je potřeba - zejména v situacích s jedním síťovým zařízením (pracovní stanice) totiž není vhodné studovat manuálové stránky a hledat na Internetu. Jestliže ale často měníte distribuce, nepoužíváte taková "klikátka" nebo je prostě vaše oblíbená distribuce nemá (Gentoo, Debian, Slackware), musíte si firewall nakonfigurovat ručně. Na pomoc si můžete vzít Shoreline Firewall, zkráceně Shorewall.
Shorewall není žádný server nebo démon, je to jen sada skriptů a konfiguračních souborů - jakmile aktivuje danou sadu pravidel, je hotovo. O všechno ostatní se stará jádro Linuxu. Shorewall 2.0 je určen pro jádra 2.4 a 2.6 a nedá se tedy použít pro starší verze, které neobsahují netfilter/iptables. To jen pro upřesnění, vrhněme se na stručný praktický návod.
Stáhněte si balíček pro svou distribuci a nainstalujte ho. Já používám systémy Gentoo a Mandrake, takže bych provedl příkazy emerge shorewall (resp. urpmi shorewall). Balíček je závislý na programu iproute, takže si jej instalační program stáhne také (zřejmě ale bude již nainstalovaný). Alternativou k binárním balíčkům je samozřejmě kompilace - v případě Shorewall se ale žádná nekoná. Tarball stačí totiž jen rozbalit a spustit skript install.sh (přečtěte si raději README, v některých případech musíte nastavit několik proměnných v prostředí). Změňte aktuální adresář na /etc/shorewall, uvařte si hrnek kafe a jdeme na to.
Netfilter rozlišuje mezi třemi zónami - Internetem (net), lokální sítí (loc) a demilitarizovanou zónou (dmz). Firewall funguje pochopitelně i na počítačích se třemi síťovými kartami. My se však budeme věnovat možnosti s jednou kartou - chceme ochránit svůj veřejný počítač/server jen před útoky z jedné sítě (Internetu). Ještě jednu zónu jsem vám zatajil - je jím samotný firewall jako takový a značí se fw.
Tyto tři zóny najdete nadefinovány v souboru zones (připomínám, že jsme v adresáři /etc/shorewall). Pokud tam není žádný soubor, nebo takový adresář neexistuje, najdete jej v umístění /usr/share/doc/shorewall/default-config - překopírujte si jej. Konfigurace začíná nastavením politiky v souboru policy, což je politika (plán) celého firewallu. Tento soubor má samozřejmě jednoduchý textový formát a je v něm implicitně nastaveno chování: a) z vnitřní sítě (loc) do Internetu (net) vše povoleno; b) opačným směrem vše ignorováno; c) všechno ostatní zamítnuto.
Do souboru policy je vhodné umístit (tzn. odkomentovat) také pravidlo fw net ACCEPT, které praví: "Z firewallu (fw) na Internet (net) je přístup povolen (ACCEPT)." Na serverech sloužících pouze k účelu filtrování a ochrany by se správně nemělo ani pracovat ani instalovat jiné služby, než je právě firewall (snad kromě proxy serveru). Pokud tak neučiníte, pak se jen stěží ze své pracovní stanice dostanete na Internet - a to nechcete.
Pro naše účely linuxové stanice můžeme ještě v souboru politiky změnit výskyt loc za net (soubor zones) a následně zrušit (například komentářem) zóny loc a dmz (soubor zones). Jinak nás totiž bude Shorewall při každém startu varovat, že máme sice nadefinovány tyto dvě zóny, ale v žádném pravidle se neuplatňují a jsou tedy zbytečné.
Máte nakonfigurovánu politiku, to by ale nestačilo. Chcete například povolit na svém stroji či www serveru příchozí poštu a ssh (porty 80, 25 a 22). Tohoto docílíte nadefinováním pravidel. Ta se zapisují do zvláštního souboru jménem rules - vůbec celý systém konfigurace je velmi přehledný a až trapně jednoduchý.
Ještě předtím však musíte přiřadit jednotlivým zónám síťová rozhraní. V našem případě konfigurujeme stanici s jednou síťovou kartou eth0, vložte tedy do souboru interfaces řádku net eth0 detect dhcp, která říká: "K zóně Internet přiřaď zařízení eth0, broadcast adresu si detekuj automaticky, jo a bacha, používám DHCP!"
Nyní již můžete vesele definovat pravidla do souboru rules. Na první řádek umístěte výjimku pro http server: ACCEPT net fw tcp 80. Význam je nasnadě: "Akceptuj pakety z Internetu směřující na firewall protokolem TCP s cílovým portem 80." Analogicky to proveďte pro poštu, ssh a vůbec všechny služby, které chcete povolit.
V nové verzi 2.0, která se objevila teprve nedávno, existují předdefinovaná pravidla, která vám ještě více usnadňují konfiguraci. V souboru /usr/share/shorewall/actions.std najdete mnoho hodnotných pravidel, která můžete ihned využít. Předdefinována jsou nejen ta jednoduchá (např. povolení služby www nebo pošty), ale i složitější (VNC) čítající rozsahy portů nebo více pravidel. Příklad konfigurace by mohl být:
AllowPing net fw AllowSSH net fw AllowSMTP net fw AllowWeb net fw
Čeká vás spuštění Shorewallu, ale ještě předtím editujte soubor shorewall.conf. Přepněte volbu IP_FORWARDING na Off, protože implicitně je Shorewall nastaven na dvouzónový firewall s IP forwardingem. Nyní stačí firewall spustit pomocí příkazu /etc/init.d/shorewall start (Gentoo), resp. service shorewall start. Pro automatické spouštění pak postačí příkaz rc-update add shorewall default (Gentoo), u distribuce Mandrake pak vytvoření symbolického linku pomocí ln -s /etc/init.d/shorewall /etc/rc5.d/S10shorewall. Jen dávejte pozor na to, aby byl Shorewall spuštěn po startu síťového rozhraní a aktivaci firewallu v jádře, ale před všemi síťovými démony.
Program Shorewall toho nabízí samozřejmě víc a stále se vyvíjí. Stejně snadno, jako jsme nastavili firewall, můžeme přidat podporu omezování provozu (traffic shaping), účtování přenesených dat (accounting), virtuální síťové zařízení (virtual interfaces) či černých listin (blacklists). Všechno se velmi snadno a pružně udržuje.
Je dobré porozumět programu Shorewall z několika důvodů. Jednak nemusíte vždycky vědět, kdy budete potřebovat nastavení firewallu u kamaráda na distribuci, kterou neznáte. A navíc - Shorewall je hojně používán i u některých "klikacích" nadstaveb oblíbených distribucí - například v nástroji DrakConf v distribuci Mandrakelinux. Je dobré vidět pod pokličku.