Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Vysoce dostupný firewall na Linuxu

Každá slušná počítačová síť má vlastní firewall. Ten brání neoprávněnému vstupu do sítě, ale také obvykle určuje pravidla komunikace uživatelům uvnitř. Takový firewall je však kritickým místem celé sítě a pokud by došlo k jeho výpadku, přeruší se komunikace s ostatními sítěmi. Jak tomu zabránit?

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

Motivace

Představme si, že stojíme před problémem zabezpečit spojení jednoho či více počítačů připojených do nějaké vnější sítě. Pojmem zabezpečit rozumíme mít kontrolu nad spojeními, která jsou s těmito počítači navazována a naopak. Typické je řešení pomocí firewallu.

Firewall je bod v síti, který je zodpovědný za komunikaci s vnějším světem. Podle definovaných pravidel rozlišuje provoz na povolený a zakázaný. Může se jednat o specializované kusy hardware, často se ale jedná o běžná pc s operačním systémem (OS) Linux. Pokud situace v síti vypadá tak, jak bylo právě popsáno, pak jsme si do sítě zanesli bod, jehož chyba je kritická pro veškerou komunikaci s vnějším světem.

V této souvislosti se hovoří o „single point of failure“ – díky selhání jednoho zařízení dojde ke kolapsu komunikace s vnějším světem. Tématem tohoto článku je, jak zlepšit spolehlivost komunikace s vnějším světem pomocí fyzické redundance firewallu. Popsané řešení bylo a je provozováno na architektuře i386 s OS Linux – Debian Etch.

Kde je problém?

Nyní je potřeba představit ty části a vlastnosti OS Linux, které jsou pro nastavení vysoce dostupného firewallu důležité. Místy bude popis značně zjednodušený – pro účely tohoto článku postačí hrubá představa, půjde spíše o popis konceptu než konkrétních detailů.

V linuxu se o funkce firewallu – jmenovitě o nastavování logiky firewallu – stará aplikace známá jako iptables. Tato aplikace pracuje s prostředky jádra poskytovanými projektem netfilter, který je zodpovědný za část průchodu paketu jádrem. Zjednodušeně řečeno je paket během své cesty skrz jádro konfrontován typicky s několika „kontrolními“ body (detailní informace lze nalézt na NetFilter.org), ve kterých se rozhoduje o jeho dalším osudu. Jednou z aplikací, která těchto „kontrolních“ bodů využívá, jsou právě iptables.

Pokud si definujete pomocí iptables nějaké pravidlo, je součástí definice, ve kterém bodě se toto pravidlo provádí – v iptables se tyto body označují jako chain(s). Doposud z hlediska redundantního firewallu není žádný problém – stačí na záložním stroji nějakým způsobem zadat stejnou skupinu pravidel a vše je v pořádku.

První problém vychází z toho, že iptables jsou stavový firewall, tudíž nepracují s pakety odděleně, ale zkoumají je v širších souvislostech. Například si pamatují aktuální stav nějakého TCP sezení (session), jsou schopny rozhodnout, zda právě zpracovávaný paket do tohoto spojení patří, a na základě toho nějak reagovat.

Iptables tedy pracují s konkrétními spojeními. Aby nebylo nutné každý paket spojení nechat zpracovat sadou definovaných pravidel, ukládají si iptables své rozhodnutí pro dané spojení do své části nazývané conntrack. Pokud chceme, aby v případě přepnutí z primáru na záložní firewall zůstaly všechny spoje funkční, je nutné zálohovat tuto tabulku. Velmi jednoduše řečeno při vytváření spojení se k pravidlům iptables dostane pouze úvod tohoto spojení. Jakmile se podaří spojení úspěšně sestavit, je o něm udělán záznam v conntrack tabulce, další pakety spojení se k pravidlům již nedostanou a postupují touto známou cestou.

Pokud po vytvoření spojení dojde k přepnutí na záložní firewall, který o existenci tohoto spojení neví, komunikace prováděná přenášená tímto spojem spadne. Jednoduchý příklad k tomuto tématu: Řekněme, že všechny počítače jsou k vnějšímu světu připojeny prostřednictvím NAT (například připojení privátní sítě k internetu s jednou veřejnou ip adresou). Vytvořme jednoduché pravidlo pro tcp spojení – SNAT (S), který původní zdrojovou adresu přeloží na adresu F2, kde F2 je vnější adresa firewallu (F).

Vytvořme nyní z počítače A TCP spojení přes F na počítač C. Pokud se spojení podaří sestavit, můžou spolu A a C nerušeně komunikovat. Pokud během komunikace smažeme na F pravidlo S, bude komunikace dále fungovat. A to proto, že během začátku TCP spojení si F zapamatoval zpracování této TCP session v conntrack table a S není pro další zpracování provozu potřeba. Pokud bychom ale chtěli vytvořit nové spojení, jako například přístup na jiný web server přes F, už by se to nepodařilo.

To je podobné případu přepnutí na záložní firewall, kdy by nebyly synchronizované conntrack tabulky. V takový okamžik začne záložní firewall dostávat pakety z prostředku TCP session, očekává tedy, že má v conntrack tabulce uloženo zpracování pro odpovídající spojení. V tomto případě ale pakety žádnému jemu známému spojení neodpovídají a nebude je tedy umět zpracovat.

Druhý problém je, jak zajistit dostupnost záložního stroje v případě výpadku primárního. Z principu ip sítě musí mít primární a záložní stroj jinou ip adresu. Jak tedy postupovat v případě výpadku primárního – jak se vlastně vnitřní síť dozví o nové ip adrese pro odchozí provoz? Předefinovat ve vnitřní síti u všech počítačů adresy pro odchozí provoz? Nebo naopak v okamžiku, kdy víme, že primární stroj je nedostupný, předefinovat ip adresy používané u sekundárního? Jak vůbec výpadek primáru detekovat?

Závěr

Tento článek měl posloužit pouze pro získání představy o tom, co je potřeba uvažovat při budování vysoce dostupného firewallu. Konkrétní řešení budou představena příště. Motivací pro zájemce budiž to, že řešení existuje, a to dokonce pomocí volně dostupného software.

Anketa

Máte na sítí firewall?

       

Školení Google+ pro firmy

DW - Školení PPC
  • Jak využít Google+ pro firemní komunikaci a marketing.
  • Čím se liší Google+ od Twitteru a Facebooku z pohledu firemního využití.
  • Jak využít Google+ v souladu s pravidly užívání.
  • Založení Google+ Page (Stránky) krok po kroku, včetně praktických tipů.

Detailní informace o školení Google+ »

Ohodnoťte jako ve škole:
Průměrná známka 2,78

Přehled názorů

Pekne
jc 1. 11. 2007 00:47
Nový
└ 
Re: Pekne
anonymní uživatel 1. 11. 2007 00:54
Nový
To je tedy clanek!
JardaP 1. 11. 2007 01:52
Nový
├ 
Re: To je tedy clanek!
Mard 1. 11. 2007 10:33
Nový
└ 
Re: To je tedy clanek!
skaut 1. 11. 2007 16:30
Nový
Celkom trapne
Tom 1. 11. 2007 01:54
Nový
├ 
Re: Celkom trapne
a1 1. 11. 2007 08:49
Nový
│
└ 
Re: Celkom trapne
Zdenek 1. 11. 2007 09:01
Nový
├ 
Re: Celkom trapne
Vít Heřman 1. 11. 2007 10:59
Nový
│
└ 
Re: Celkom trapne
eman 3. 11. 2007 13:19
Nový
├ 
Re: Celkom trapne
Tayto 1. 11. 2007 22:59
Nový
│
└ 
Re: Celkom trapne
A 2. 11. 2007 11:41
Nový
└ 
Re: Celkom trapne
keysee 2. 11. 2007 10:12
Nový
"Vysoce dostupný"
El-Condor 1. 11. 2007 06:11
Nový
├ 
Re: "Vysoce dostupný"
anonymní uživatel 1. 11. 2007 07:34
Nový
│
└ 
Re: "Vysoce dostupný"
ksfj 1. 11. 2007 09:17
Nový
│
 
└ 
Re: "Vysoce dostupný"
JardaP 1. 11. 2007 10:03
Nový
│
 
 
└ 
Re: "Vysoce dostupný"
bassaq 1. 11. 2007 10:08
Nový
├ 
Re: "Vysoce dostupný"
Filip Jirsák 1. 11. 2007 09:54
Nový
└ 
Re: "Vysoce dostupný"
hawran 1. 11. 2007 11:24
Nový
Co bude priste?
Zdenek 1. 11. 2007 06:51
Nový
odpovedi
Michal Filka 1. 11. 2007 07:36
Nový
├ 
Re: odpovedi
JardaP 1. 11. 2007 07:54
Nový
│
└ 
Re: odpovedi
Mard 1. 11. 2007 10:36
Nový
├ 
Re: odpovedi
corwin78 1. 11. 2007 08:11
Nový
├ 
Re: odpovedi
Zdenek 1. 11. 2007 08:15
Nový
├ 
Re: odpovedi
Jouda 1. 11. 2007 09:42
Nový
└ 
Re: odpovedi
bassaq 1. 11. 2007 09:57
Nový
 
└ 
Re: odpovedi
Michal Filka 1. 11. 2007 10:16
Nový
 
 
└ 
Re: odpovedi
bassaq 1. 11. 2007 11:12
Nový
 
 
 
└ 
Re: odpovedi
Michal Filka 1. 11. 2007 11:30
Nový
CARP?
medvjed 1. 11. 2007 07:50
Nový
└ 
Re: CARP?
Michal Filka 1. 11. 2007 08:04
Nový
 
└ 
Re: CARP?
Jouda 1. 11. 2007 09:47
Nový
 
 
├ 
Re: CARP?
Michal Filka 1. 11. 2007 10:23
Nový
 
 
└ 
Re: CARP?
NaiL 4. 11. 2007 17:01
Nový
 
 
 
└ 
Re: CARP?
NaiL 4. 11. 2007 17:03
Nový
anketa
anonymní uživatel 1. 11. 2007 10:01
Nový
└ 
Re: anketa
Petr Krčmář 1. 11. 2007 10:03
Nový
 
├ 
Re: anketa
anonymní uživatel 1. 11. 2007 11:58
Nový
 
│
└ 
Re: anketa
anonymní uživatel 1. 11. 2007 13:41
Nový
 
└ 
Re: anketa
Michal Kára 1. 11. 2007 13:41
Nový
 
 
└ 
Re: anketa
anonymní uživatel 1. 11. 2007 14:51
Nový
Jen tak dál
grunt 1. 11. 2007 19:52
Nový
└ 
Re: Jen tak dál
hafieror 1. 11. 2007 22:28
Nový
Trapne prispevky do diskuse (stydte se)
anonymní uživatel 4. 11. 2007 18:28
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem