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

FireHOL - nejsnazší firewall

Každý, kdo se někdy dostal k nutnosti nastavit firewall v Linuxu pomocí iptables, mi jistě dá zapravdu, že jde o poměrně zdlouhavou proceduru a navíc je výsledný script značně rozsáhlý a nepřehledný. Přesně to samé si zřemě řekl i Costa Tsaousis, autor projektu FireHOL, a vytvořil sadu shell scriptů, které celou záležitost dělají tak snadnou, jak to jenom jde.

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

FireHOL lze získat na adrese firehol.source­forge.net. Po rozbalení stačí nakopírovat spustitelné scripty podle vlastního uvážení, já perferuji /usr/local/bin. Dále je třeba založit adresář /etc/firehol, a tím je intalace hotová.

Samotné nastavování firewallu je velmi jednoduché. Do souboru /etc/firehol/fi­rehol.conf se zapisuje velmi stručně a troufám si říci, že i velmi přehledně.

Vše se nejlépe objasní na příkladu. Pro začátek zvolím pomyslný jednoduchý web server, na kterém má být dostupný Apache a ssh, počítač má jednu síťovou kartu konfigurovanou jako eth0. Konfigurace jeho firewallu může vypadat takto:

home_ips="192.168.10.85"
interface eth0 internet src not "${home_ips} ${UNROUTABLE_IPS}"
  protection strong 10/sec 10
  server ident reject with tcp-reset
  server http  accept
  server ssh   accept
  server ping  accept
  client icmp  accept
  client http  accept
  client ping  accept
  client dns   accept
  client smtp  accept
  client ftp   accept
  client ntp   accept
  client ssh   accept

První řádek je pouhým nastavením proměnné, kterou využívám dále. Na druhém řádku sděluji FireHOLu, že počítač má síťové rozhranní eth0, které jsem pojmenoval internet. Na rozhranní se dívám vždy zvenku, a proto je doplněno, že nebudu akceptovat pakety, které mají mou vlastní adresu – pokud přicházejí zvenku, jsou nepochybně podvržené. Proměnná UNROUTABLE_IPS je definovaná interně a obsahuje seznam adres, které jsou vyhrazeny pro vnitřní sítě a neměly by se tedy vyskytnout na Internetu. Na druhou stranu, už jsem se s nimi setkal, a to u naprosto korektních přípojných bodů.

Na třetím řádku přitvrzuji a přidávám příkaz protection. To je interní příkaz FireHOLu, který má nekolik parametrů: fragments – zahazuje všechny samostatné fragmenty (viz dokumentaci), new-tcp-w/o-syn – zahazuje pakety, které otevírají spojení, ale nemají nastaven SYN bit, syn-floods a icmp-floods zapínají ochranu před DOS útokem, malformed-xmas, malformed-null a malformed-bad pak zahazují vadné pakety. Zde použitý parametr strong je aliasem, který zapíná všechno. Čísla uvedená nakonci představují limity pro výše uvedené parametry, jejich význam je popsán v dokumentaci iptables.

Řádky začínající příkazem server snad není třeba více komentovat. Povolují přístup k uvedeným službám zvenku. Hlavní jsou samozřejmě služby http a ssh, ale samozřejmě je vhodné povolit i ping a ident. Parametr příkazu služby ident by měl zajistit, že pokud přijdou požadavky s vypršenou platností, budou zahozeny.

Obrácený směr, tj. požadavky zevnitř serveru, povolují řádky začínající příkazem client. Tj. vyjmenuji ty služby, které bude server chtít navazovat zevnitř – http a ftp pro stahování aktualizací, ntp pro nastavování času, ping a icmp pro kontrolu síťového připojení, dns pro potřeby apache, smtp, aby mohl posílat případné alerty, a protokolem ssh se přenáší záloha na jiný stroj. Kdybych chtěl povolit veškerý provoz, mohl bych použít alias all místo vyjmenovávání jednotlivých protokolů.

Celý firewall nyní mohu aktivovat příkazem firehol.sh start. Dalšími parametry příkazu firehol.sh jsou obligátní stop, restart a několik dalších. Za velmi užitečný považuji try, který umožňuje nastavené hodnoty vyzkoušet, a pokud není nový stav do 30 vteřin potvrzen, vrátí se nastavení firewallu do původního stavu.

Pokud bych chtěl tento server použít jakou router (já vím, že by se to dělat nemělo, ale berme to jako příklad), přidám další síťové rozhraní, na které připojím vnitřní síť. Nové rozhranní bude mít označení eth1. Do vnitřní sítě teď budu chtít poskytovat navíc službu proxy serveru pro web.

interface eth1 home
   policy       reject
   server "squid http ssh" accept
   client all   accept

Trochu jsem si zjednodušil nastavení přístupu k vnitřní síti, kde jsem použil alias all, je to stejné jako v předchozím příkladu, all zastupuje všechna spojení. Na třetím řádku je vidět další možné zjednodušení – spojení více protokolů do jednoho pravidla. Nový je příkaz policy, výchozí politika uplatňovaná na rozhranní je „deny“, ale v případě vnitřní sítě se klient dozví, že byl odmítnut, a nemusí čekat na timeout, takže nastavím „reject“. Až dosud byl nastavován přístup na server a ze serveru; teď se můžeme pustit do nastavení přístupu skrze firewall z jedné síťě do druhé.

router home2internet inface eth1 outface eth0
   masquerade
   route all accept
router internet2home inface eth0 outface eth1
   route ident reject with tcp-reset

Příkazem router se nastavují pravidla pro povolení směrování. Základními parametry jsou rozhranní, ze kterého na které se bude předávat. Ve směru zevnitř ven je povolen veškerý provoz a navíc je zapnuta maškaráda. Zvenku dovnitř je povolen pouze ident, stejně jako již bylo uvedeno u samotného vnějšího rozhranní.

Tím považuji ukázkový firewall za nastavený. Jak je vidět, je nastavení firewallu velmi jednoduché a hlavně přehledené.

Až dosud jsem popisoval poměrně triviální požadavky na firewall. FireHOL je schopen se vyrovnat i se složitějšími požadavky. U většiny příkazů, zejména server, klient a route, lze použít navíc parametry src a dst, sport a dport, log, limit. A další poněkud exotičtější, jako jsou mark, uid, pid, sid; pro jejich nastavení je už vhodné si přečíst dokumentaci a rozumět alespoň trochu síťovému provozu. Je možno i přímo volat příkaz iptables se všemi jeho parametry.

Podpora services, tj. toho, co je možné požívat jako parametr příkazu server a client, je velmi široká, od velmi rozšířených protokolů http, smtp, pop3, squid apod. až po poměrně exotické používané sítěmi vpn, grafickými terminály a dalšími méně rozšířenými službami. Celkem je podporováno asi 80 services a autor se nebrání doplnění dalších. V samotném konfiguračním souboru je možnost si jednoduše dodefinovat vlastní.

TIB2012

       

Co když možnosti FireHOLu opravdu nestačí? Dosud jsem zamlčoval poměrně důležitý fakt, totiž to, že způsob, jak FireHOL zpracovává konfigurační script (je samozřejmě popsán v dokumentaci), umožňuje požívat v konfiguračním scriptu i normální příkazy použitelné v shellu bash, a tím vlastně padají veškerá omezení. A zkušenější síťař si může doplnit, cokoliv uzná za vhodné.

Autor na svých stránkách uvádí slogan „FireHOL, a firewall for humans…“, a podle mého názoru jej velmi dobře splňuje. Konfigurace jednoduchých věcí je jednoduchá, aniž by bylo znemožněno provádění věcí složitých, a to je ten nejlepší přístup.

Školení: SQL pro začátečníky

Kdo nezná jazyk SQL jako kdyby nebyl. Tak lze stručně charakterizovat dnešní význam SQL v IT. Pokud se chcete naučit tento jazyk, tak navštivte naše školení SQL. Školení je určené začátečníkům, a proto se začíná od skutečných základů.

Kromě samotného SQL se účastíci školení seznámí i se základy PostgreSQL, což je databáze, která se díky své shodě se standardem ANSI SQL a komfortem, který poskutuje svým uživatelům, zvlášť hodí pro výuku SQL.

Podrobnější informace a přihláška

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

Přehled názorů

odporucam
anonymní uživatel 3. 2. 2005 00:31
Nový
Generator iptables
Vladimír Stwora 3. 2. 2005 00:34
Nový
└ 
Re: Generator iptables
Martin Lebeda 3. 2. 2005 07:19
Nový
Shorewall
Peter Mann 3. 2. 2005 06:14
Nový
├ 
Re: Shorewall
Martin Lebeda 3. 2. 2005 07:24
Nový
│
└ 
Re: Shorewall
anonymní uživatel 3. 2. 2005 09:45
Nový
└ 
Re: Shorewall
anonymní uživatel 3. 2. 2005 08:51
Nový
 
└ 
Re: Shorewall
Václav Lorenc 3. 2. 2005 10:29
Nový
Dá se to kombinovat s IPtables ?
Tomáš Šimek 3. 2. 2005 07:53
Nový
└ 
Re: Dá se to kombinovat s IPtables ?
Martin Lebeda 3. 2. 2005 10:11
Nový
zvladne to vse?
anonymní uživatel 3. 2. 2005 09:54
Nový
└ 
Re: zvladne to vse?
Martin Lebeda 3. 2. 2005 10:24
Nový
server ident reject with tcp-reset
anonymní uživatel 3. 2. 2005 10:04
Nový
└ 
Re: server ident reject with tcp-reset
anonymní uživatel 3. 2. 2005 10:34
Nový
 
└ 
Re: server ident reject with tcp-reset
anonymní uživatel 3. 2. 2005 13:13
Nový
Firewall generator pro IPV6
anonymní uživatel 3. 2. 2005 12:07
Nový
├ 
Re: Firewall generator pro IPV6
anonymní uživatel 3. 2. 2005 17:02
Nový
│
└ 
Re: Firewall generator pro IPV6
anonymní uživatel 3. 2. 2005 19:50
Nový
│
 
└ 
Re: Firewall generator pro IPV6
anonymní uživatel 4. 2. 2005 12:20
Nový
├ 
Re: Firewall generator pro IPV6
anonymní uživatel 3. 2. 2005 19:11
Nový
│
└ 
Re: Firewall generator pro IPV6
Boris Porosin 3. 2. 2005 20:32
Nový
│
 
└ 
Re: Firewall generator pro IPV6
anonymní uživatel 3. 2. 2005 21:07
Nový
│
 
 
└ 
Re: Firewall generator pro IPV6
anonymní uživatel 4. 2. 2005 10:17
Nový
│
 
 
 
└ 
Re: Firewall generator pro IPV6
anonymní uživatel 4. 2. 2005 11:07
Nový
│
 
 
 
 
└ 
Re: Firewall generator pro IPV6
anonymní uživatel 4. 2. 2005 12:02
Nový
│
 
 
 
 
 
└ 
Re: Firewall generator pro IPV6
anonymní uživatel 4. 2. 2005 12:38
Nový
│
 
 
 
 
 
 
└ 
Re: Firewall generator pro IPV6
anonymní uživatel 4. 2. 2005 13:25
Nový
│
 
 
 
 
 
 
 
└ 
Re: Firewall generator pro IPV6
anonymní uživatel 4. 2. 2005 15:09
Nový
│
 
 
 
 
 
 
 
 
└ 
Re: Firewall generator pro IPV6
anonymní uživatel 4. 2. 2005 15:46
Nový
│
 
 
 
 
 
 
 
 
 
└ 
Re: Firewall generator pro IPV6
anonymní uživatel 4. 2. 2005 15:49
Nový
│
 
 
 
 
 
 
 
 
 
 
└ 
Re: Firewall generator pro IPV6
anonymní uživatel 4. 2. 2005 17:05
Nový
└ 
Re: Firewall generator pro IPV6
Boris Porosin 3. 2. 2005 20:33
Nový
Srovnání s jinými nástroji (ferm)
Věroš Kaplan 3. 2. 2005 14:24
Nový
└ 
Re: Srovnání s jinými nástroji (ferm)
anonymní uživatel 3. 2. 2005 18:09
Nový
testoval nekdo rychlost?
anonymní uživatel 4. 2. 2005 02:19
Nový
└ 
Re: testoval nekdo rychlost?
Jan Marek 9. 2. 2005 11:44
Nový
PF
anonymní uživatel 4. 2. 2005 04:16
Nový
└ 
Re: PF
anonymní uživatel 4. 2. 2005 10:29
Nový
 
└ 
Re: PF
anonymní uživatel 4. 2. 2005 13:04
Nový
 
 
└ 
Re: PF
anonymní uživatel 4. 2. 2005 13:29
Nový
i pro lamu? fwbuilder.
anonymní uživatel 4. 2. 2005 17:18
Nový
prielom pico botka sk
pavel plevel 4. 2. 2005 23:56
Nový
firestarter
anonymní uživatel 5. 2. 2005 22:18
Nový
proc ne server+router?
anonymní uživatel 6. 2. 2005 09:00
Nový
└ 
Re: proc ne server+router?
Honza 6. 2. 2005 09:59
Nový
 
└ 
Re: proc ne server+router?
HKMaly 16. 2. 2005 16:46
Nový
 
 
└ 
Re: proc ne server+router?
Martin Lebeda 17. 2. 2005 07:29
Nový
Jak spustit se startem systemu?
Jan Baroš 19. 2. 2005 12:51
Nový
└ 
Re: Jak spustit se startem systemu? - vyreseno
Jan Baroš 19. 2. 2005 15:04
Nový
nelze spusti
petr 25. 2. 2005 15:46
Nový
└ 
Re: nelze spusti - vyřešeno
petr 14. 3. 2005 08:49
Nový
Proměnná UNROUTABLE_IPS
Pavel Krafcik 12. 9. 2006 14:49
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