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

Linux E X P R E S, Shorewall, 1. díl

Shorewall, 1. díl

Tomáš Klos nakonfiguruje firewall pomocí programu Shorewall.


reklama

Často odpovídám na dotazy svých známých, jak nastavit počítač s Linuxem tak, aby bylo možné připojit se jeho prostřednictvím k internetu. Odpověď je většinou stejná - použijte Shorewall. Shorewall je sada skriptů usnadňující nastavení linuxového firewallu, který je obsažen v jádře. Mimo jiné dokáže ovládat směrování, takže je ideálním nástrojem k nastavení a zabezpečení sdíleného připojení k internetu pro lokální síť.

Všechny ukázkové konfigurační soubory jsou bohatě okomentovány a doplněny praktickými příklady. Doporučuji tyto komentáře důkladně prostudovat, je v nich vždy uvedeno vše potřebné.

Praktický příklad

Předpokládejme, že máme zprovozněnu síť, kde všechny pracovní stanice mají IP adresy z rozsahu 192.168.1.0, IP adresa počítače, který chceme použít jako internetovou bránu, je 192.168.1.1. Dále potřebujeme nějaké další rozhraní, které bude připojeno k internetu, tedy modem, mobilní telefon, wi-fi kartu nebo druhou síťovou kartu. V našem příkladu to bude síťová karta eth1, která je nastavena pro připojení k internetu. Máme nainstalován Shorewall (v mém Mandrakelinuxu/Mandrivě stačí zadat příkaz urpmi shorewall) a nastavit spouštění programu po startu systému.

Ověříme si, zda nám funguje provoz v obou směrech:

# ping www.seznam.cz

Pokud dostaneme odezvu, je připojení k internetu funkční. (Napadlo mě, pokud by Ivo Lukačovič přikázal svým technikům nastavit servery tak, aby neodpovídaly na ICMP příkaz ping, řadě administrátorům by to ztrpčilo život. Ping na Seznam je totiž velmi oblíbený. Pro jistotu ještě zdůrazním, že je to v rozporu se specifikacemi, každý počítač by měl na ICMP zprávy odpovídat, bohužel se tak neděje. Pozn. red.) Vyzkoušíme ještě připojení do lokální sítě na některou z funkčních vnitřních adres:

# ping 192.168.1.2

Shorewall používá mimo jiné přednastavená pravidla, která naleznete v adresáři /usr/share/shorewall, takže je předkonfigurován okamžitě po instalaci. Jde však o příliš obecná pravidla, proto je není možné ve většině případů použít. Veškerá nastavení, která provedete v konfiguračních souborech v adresáři /etc/shorewall, jsou těmto přednastaveným pravidlům nadřazena.

Pokud je i zde odezva v pořádku, přichází na řadu nastavení Shorewallu. (V opačném případě je vadné směrování - příkaz route pomůže. Pozn. red.) Všechny potřebné soubory najdeme v adresáři /etc/shorewall. V první řadě nás budou zajímat tyto soubory:

/etc/shorewall/shorewall.conf
/etc/shorewall/interfaces
/etc/shorewall/masq
/etc/shorewall/policy
/etc/shorewall/routestopped
/etc/shorewall/rules
/etc/shorewall/zones

Nejprve zkontrolujeme soubor /etc/shorewall/shorewall.conf, kde nás zajímá hlavně parametr IP_FORWARDING, který nám zajistí předávání paketů:

IP_FORWARDING=On

V souboru /etc/shorewall/zones definujeme tři základní zóny, které bude Shorewall využívat - net pro internet, loc pro lokální síť a fw pro firewall, čímž je myšlen stroj, na kterém Shorewall běží:

loc       Local   Local
net Netw            Network
fw        Fwall   Firewall

Poznámka: veškeré hodnoty ve všech konfiguračních souborech oddělujeme pomocí tabulátoru.

V souboru /etc/shorewall/interfaces zadáme, jaká zařízení patří k jednotlivým zónám :

loc       eth0    detect
net        eth1    detect

Velmi zajímavou volbou v konfiguračním souboru interfaces je parametr routefilter u zařízení připojeného do Internetu. Díky němu bude firewall kontrolovat, zda příchozí pakety nemají pozměněnu zdrojovou IP adresu (tzv. IP spoofing). Tuto volbu rozhodně použijte v případě, kdy povolujete přístup z internetu pouze pro vybrané IP adresy.

Pokud bychom pro připojení k internetu používali vytáčené připojení, vypadal by řádek pro zónu net takto:

net        ppp+    detect          dhcp

Volba dhcp znamená, že zařízení dostává IP adresu přidělenu od DHCP serveru.

Dále nastavíme maškarádu (skrývání vnitřních IP adres za IP adresu routeru) v souboru /etc/shorewall/masq:

eth1       eth0

Jako první se zadává rozhraní připojené do internetu, jako druhé (maskované) rozhraní vnitřní sítě.

Další důležitý soubor je /etc/shorewall/policy, kde je definována základní bezpečnostní politika Shorewallu. Napíšeme do něj toto:

loc       net     ACCEPT
fw net     ACCEPT
loc        fw      ACCEPT
fw loc     ACCEPT
net        all     DROP    info
all  all     REJECT  info

Tím jsme definovali následující politiku: ze zóny loc (lokální síť) do zóny net (internet) je povolena veškerá komunikace. Ze zóny fw (firewall) do zóny net je povolena veškerá komunikace. Ze zóny loc je povolena komunikace se zónou fw (aby bylo možné využívat služby, které na firewallu poběží). Rovněž jsme povolili komunikaci ze zóny fw do zóny loc. Nakonec zahodíme všechny nevyžádané pakety ze zóny net a zamítneme nevyžádané pakety ze všech zón. Parametr info znamená, že se informace o této akci zapíše do syslogu.

Platí obecné pravidlo, že to, co není výslovně zakázáno, je povoleno. Proto je důležité v nastavení politiky Shorewallu nejprve blokovat veškerý provoz z internetu, a teprve poté povolit výjimky.

Tím jsme nastavili hrubou politiku firewallu, jemnější pravidla nastavíme v souboru /etc/shorewall/rules. Dejme tomu, že chceme povolit přístup na firewall přes SSH, na náš webový server a na SMTP server, který běží ve vnitřní síti na adrese 192.168.1.3 a který chceme zpřístupnit z internetu. Dále máme na firewallu spuštěn FTP server, na který chceme povolit přístup z internetu pouze ze dvou konkrétních IP adres. Také máme ve vnitřní síti stanici s IP adresou 192.168.1.4, na které běží VNC a na kterou se potřebujeme dostat přes internet, ale z bezpečnostních důvodů jen z jediné IP adresy:

# přístup přes SSH povolit
ACCEPT   net     fw      tcp     22
# přístup na
http i https povolit
ACCEPT     net     fw      tcp     80,443
# požadavky
na SMTP přesměrovat do LAN
DNAT      net     loc:192.168.1.3 tcp     25
# povolit přístup na FTP pouze ze zadaných
IP
ACCEPT net:82.209.2.161,82.209.2.162   fw      tcp     21
# přístup
na stanici přes VNC
DNAT   net:82.209.2.162        loc:192.168.1.4 tcp     5900
# všechno ostatní zahodit
DROP    net     fw      tcp
1:60179
DROP    net     fw      udp     1:60179

Závěrečná dvě pravidla DROP způsobí, že bude zahozeno vše, co není povoleno nebo jinak zpracováno v předchozích pravidlech. Proto tedy tyto dva řádky musí být zapsány jako poslední.

Při přesměrování provozu z internetu do vnitřní sítě (DNAT) nezapomeňte příslušný port povolit na firewallu konkrétní lokální stanice!

Pro definování pravidel máme k dispozici několik akcí:

  • ACCEPT - povolit;
  • DROP - zahodit;
  • REJECT - odmítnout;
  • DNAT - předat dále;
  • REDIRECT - přesměrovat na lokální port.

Základní syntaxe pravidla je:

AKCE - odkud - kam - protokol

například akce:

ACCEPT     net     fw      80

znamená:

POVOL přístup - z internetu - na firewall - na port 80 (protokol http).

Tvorba pravidel je jednoduchá a přehledná, navíc jsou konfigurační soubory výborně okomentovány a doplněny praktickými příklady.

Nakonec upravíme soubor /etc/shorewall/routestopped, který určuje, které síťové rozhraní má být přístupné, pokud se Shorewall z nějakého důvodu nepodaří spustit (např. vinou chyby syntaxe v konfiguraci). Zde zadáme pouze:

eth0

pro přístup z vnitřní sítě, protože ponechat bez běžícího firewallu přístup z internetu by byl nepřípustný bezpečnostní risk.

Nyní máme nastaveno vše potřebné a stačí tedy Shorewall spustit. Před tím si však pro jistotu otestujeme, zda je konfigurace v pořádku:

# /etc/init.d/shorewall check

Pokud je někde nějaká chyba, bude vypsána, takže není třeba ji pracně hledat. Pokud je vše v pořádku, kontrola bude ukončena hlášením:

Configuration Validated

V takovém případě můžeme bez obav Shorewall spustit:

# /etc/init.d/shorewall start

V tuto chvíli by mělo sdílené připojení k internetu fungovat.

Pokud nechcete povolit uživatelům plný přístup do internetu, například pokud máte pomalou linku nebo platíte za přenesená data, nastavte v souboru /etc/shorewall/policy zahazování (DROP) všech paketů ze zóny loc do zóny net. Poté v souboru /etc/shorewall/rules povolte (ACCEPT) pouze ty porty, které chcete uživatelům zpřístupnit, například port 80 pro surfování po www stránkách.

Nahoru

Odkazy

(Jako ve škole)
Průměr: 1,14 | Hodnotilo: 7
 

Top články z OpenOffice.cz

Příspěvky

Shorewall, 1. díl
emilek 3. 12. 2007, 19:15:37
Odpovědět  Odkaz 
Jakym zpusobem ochranim napr. Sambu, ktera bezi na tom samem PC jako Shorewall? Zda se mi, ze je chraneno to, co je za Shorewallem, tzn. PC v lokalni siti..diky za rady

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



 
 

Tomáš Klos


  • Hodnocení autora: *

| blog