Obsah
Abstrakt
Ke kontrole a směrování datového provozu ve své síti můžete použít také další mechanismy např. maškarádu, firewally nebo Kerbera. Secure Shell (SSH) umožňuje šifrované připojení na vzdálený počítač. Šifrování a další nástroje chrání vaše choulostivá data před nepovolanými uživateli. Mimo čistě technických informací v této kapitole najdete také základní informace o bezpečnostních aspektech linuxových sítí.
Linux v síťovém prostředí umožňuje takovou manipulaci s pakety, která udržuje oddělené vnější a vnitřní síťové oblasti. Linuxový systém netfilter poskytuje prostředky pro vybudování efektivního firewallu udržujícího jednotlivé sítě odděleny. S pomocí iptables — obecné tabulkové struktury pro definici pravidel — umožňuje přesnou kontrolu, kterým paketům je dovoleno přejít přes síťové rozhraní. Takový paketový filtr lze snadno nastavit pomocí SuSEfirewall2 a odpovídajícího modulu YaST.
Komponenty netfilter a iptables jsou zodpovědné za filtrování a manipulaci s palety a za překlad síťových adres (NAT). Filtrovací kritéria a všechny s nimi spojené akce jsou uloženy v řetězech (chains), se kterými jsou porovnávány všechny příchozí pakety. Řetězy jsou uloženy v tabulkách. Manipulaci s těmito tabulkami a sadami pravidel umožňuje příkaz iptables.
Linuxové jádro si udržuje tři tabulky, každou z nich pro jednu skupinu funkcí paketového filtru:
Tato tabulka obsahuje většinu filtrovacích pravidel, neboť implementuje
filtrování paketů v užším slova smyslu. Určuje
například, který paket může projít skrz (ACCEPT)
a který je zahozen (DROP).
Tato tabulka určuje změny ve zdrojových a cílových adresách paketů. S její pomocí lze rovněž implementovat maškarádu, což je zvláštní případ NAT používaný pro propojení privátní sítě s Internetem.
Pravidla v této tabulce umožňují měnit hodnoty uložené v IP hlavičkách (např. typ služby).
Výše zmíněné tabulky obsahují několik předdefinovaných řetězů (chains) pro porovnávání s pakety:
PREROUTINGTento řetěz je aplikován na příchozí pakety.
VSTUP (input)Tento řetěz je aplikován na pakety určené pro vnitřní systémové procesy.
FORWARDTento řetěz je aplikován na pakety, které jsou na systému pouze směrovány.
VÝSTUP (output)Tento řetěz je aplikován na pakety, které pocházejí z vlastního systému.
POSTROUTINGTento řetěz je aplikován na všechny odchozí pakety.
Obrázek 4.1 – „iptables: Možné cesty paketu“ znázorňuje cesty, po kterých se v systému může síťový paket pohybovat. Z důvodu jednoduchosti jsou tabulky zobrazeny jako části řetězů, ale ve skutečnosti jsou řetězy umístěny právě v tabulkách.
V nejjednodušším případě dorazí paket určený přímo pro systém na
síťové rozhraní eth0. Paket je nejprve postoupen
řetězu PREROUTING tabulky mangle,
a pak řetězu PREROUTING tabulky nat.
Následující krok určí, že cílem paketu je proces na vlastním systému.
Po průchodu přes řetězy INPUT tabulek
mangle a filtr dosáhne paket
konečně svého cíle, pokud ovšem odpovídá pravidlům v tabulce
filtr.
Maškaráda je linuxově specifická forma NAT (překladu síťových adres). Lze ji použít k propojení malé lokální sítě LAN (ve které počítače používají IP adresy z privátního rozsahu, viz 18.1.2 – „Síťové masky a směrování“) s Internetem. Aby se mohl počítač z LAN připojit k Internetu, musí být jeho privátní adresa přeložena na veřejnou, používanou v Internetu. O to se stará router (směrovač), který slouží jako brána mezi LAN a Internetem. Princip je jednoduchý — router má více než jedno síťové rozhraní, obvykle síťovou kartu a zvláštní rozhraní pro připojení k Internetu. Zatímco druhé spojuje router s vnějším světem, první, nebo i více takových, spojuje router s počítači v síti LAN. Počítače v síti LAN tak mohou posílat pakety, které nejsou určeny pro lokální síť, na router.
![]() | Použití správné síťové masky |
|---|---|
Při nastavení sítě se ujistěte, že oznamovací adresa a maska sítě je nastavena pro všechny počítače stejně. Pokud to tak není, síť nefunguje správně, protože pakety nemohou být správně směrovány. | |
Kdykoliv počítač v lokální síti LAN pošle paket určený pro internetovou
adresu, je poslán na implicitní router. Router však musí být správně
nakonfigurován, aby mohl pakety předávat dál. Z bezpečnostních důvodů
to SUSE Linux neumožňuje v implicitní instalaci. Chcete-li předávání
povolit, nastavte proměnnou IP_FORWARD v souboru
/etc/sysconfig/sysctl na
IP_FORWARD=yes.
Cílový počítač vidí váš router, ale neví nic o počítači ve vaší interní síti, ze kterého paket pochází. Proto se tato technika nazývá maškaráda. Díky překladu adres je router prvním cílem všech paketů zaslaných jako odpověď. Router musí tyto pakety rozpoznat a přeložit jejich cílovou adresu tak, aby mohly být předány správnému počítači v lokální síti.
Vzhledem k tomu, že směrování příchozích paketů závisí na maškarádové tabulce, neexistuje způsob, jak otevřít přímé spojení s počítačem v lokální síti zvenku. Pro takové spojení není v tabulce žádný zápis. Navíc každé již navázané spojení má v tabulce přiřazený stavový zápis, takže zápis nemůže být použit jiným spojením.
Důsledkem jsou možné problémy s některými komunikačními protokoly, např. ICQ, cucme, IRC (DCC, CTCP) a FTP (PORT režim). Mnoho FTP klientů používá režim PASV. Tento pasivní režim působí při používání maškarády a filtrování paketů podstatně méně problémů.
Firewall je běžně používaný termín pro mechanizmus zajišťující propojení sítí a kontrolující přenos dat mezi nimi. Přesně řečeno, mechanizmus popsaný v této části se jmenuje paketový filtr. Paketový filtr řídí datový tok podle určitých kritérií, jako je komunikační protokol, porty a IP adresy. To umožňuje zablokovat pakety, které by, vzhledem ke svým adresám, neměly být do vaší sítě doručeny. Pokud chcete povolit veřejný přístup k vašemu webserveru, musíte explicitně otevřít příslušný port. Paketový filtr nicméně nezkoumá obsah paketů s legitimními adresami, jako například paketů pro webserver. I když by příchozí pakety byly například zaslány za účelem nabourání CGI programu na webserveru, paketový filtr je nechá normálněprojít.
Efektivnější ale složitější mechanizmus je kombinace několika typů
systémů, jako například paketový filtr spolupracující s aplikační bránou
nebo proxy. V takovém případě paketový filtr odmítá všechny pakety určené
pro zakázané porty. Přijaty jsou pouze pakety určené pro aplikační
bránu. Tato brána nebo proxy předstírá, že je klientem. V jistém smyslu
lze takovou proxy považovat za maškarádu na úrovni protokolu používaného
aplikací. Takovou proxy je například Squid, HTTP proxy server. Aby
prohlížeč mohl využít proxy, musí být patřičně nakonfigurován. Všechny
HTTP požadavky jsou obsluhovány proxy s využitím cache (vyrovnávací paměti)
a stránky, které se v cache nenalézají, jsou staženy proxy z Internetu.
Dalším příkladem je SUSE proxy-suite (proxy-suite), která poskytuje proxy pro
protokol FTP.
Následující část se zabývá paketovým filtrem dodávaným se systémem
SUSE Linux. Další informace o filtrování paketů a firewallu naleznete
v dokumentu Firewall HOWTO obsaženém v balíčku
howto. Pokud je tento balíček
nainstalovaný, můžete si dokument přečíst pomocí příkazu
less /usr/share/doc/howto/en/Firewall-HOWTO.gz.
Skript SuSEfirewall2 čte proměnné z
/etc/sysconfig/SuSEfirewall2 a generuje sadu
iptables pravidel. SuSEfirewall2 definuje tři bezpečnostní zóny:
Protože neexistuje žádný způsob, jak kontrolovat dění ve vnější síti, musí být počítače proti ní chráněny. Ve většině případů je vnější sítí Internet, ale může to být i jiná nezabezpečená síť, například WLAN.
Privátní síť, nejčastěji LAN. Pokud počítače v této síti používají IP adresy z privátního rozsahu (viz 18.1.2 – „Síťové masky a směrování“), je pro přístup k vnější síti zapotřebí použít překlad síťových adres (NAT).
Ačkoliv jsou počítače v této zóně dosažitelné z vnitřní i vnější sítě, samy nemají do vnitřní sítě přístup. Tím se před vnitřní síti vytvoří obranný val navíc.
Jakýkoliv síťový provoz, který není explicitně povolen filtračním pravidlem, je pomocí iptables zakázán. Proto musí být každé síťové rozhraní umístěno do jedné ze tří zón. Pro každou zónu je třeba určit, které služby a protokoly jsou povoleny. Pravidla jsou používána jen na pakety pocházející ze vzdálených počítačů. Lokálně generované pakety nejsou firewallem zachycovány.
Konfiguraci lze provést pomocí nástroje YaST (viz 4.1.4.1 – „Konfigurace pomocí YaST“). Lze ji provést i ručně v dobře
okomentovaném souboru /etc/sysconfig/SuSEfirewall2.
Navíc je řada příkladů nastavení dostupná v
/usr/share/doc/packages/SuSEfirewall2/EXAMPLES.
![]() | Automatické nastavení firewallu |
|---|---|
YaST automaticky spouští firewall na všech nakonfigurovaných rozhraních. Pokud je na systému nakonfigurován a aktivován server a v dialozích pro nastavení serveru použijete volbu nebo , YaST automaticky upraví konfiguraci firewallu. Dialogy některých serverových modulů mají tlačítko pomocí kterého lze aktivovat další služby a porty. Modul YaST pro firewall se používá pouze k aktivaci, deaktivaci či rekonfiguraci firewallu. | |
Dialogy pro nastavení firewallu v grafickém prostředí jsou dostupné v nástroji YaST zvolením položek +. Konfigurace je rozdělena do sedmi částí, ke kterým lze přistupovat přímo stromové struktury vlevo.
V tomto dialogu můžete nastavit spouštění firewallu. Ve výchozím nastavení se SuSEfirewall2 spouští automaticky. Můžete ho ale spustit nebo zastavit v tomto dialogu ručně. Chcete-li použít svá nová nastavení, stiskněte .
Seznam v tomto dialogu obsahuje všechna známá rozhraní. Chcete-li rozhraní odebrat ze zóny, klikněte na něj, stiskněte tlačítko a vyberte . Chcete-li rozhraní přiřadit zóně, stiskněte a vyberte některou z dostupných zón. Můžete také vytvořit zvláštní rozhraní s vlastním nastavením pomocí .
Toto nastavení potřebujete pouze, pokud chcete aby systém nabízel služby dostupné ze zóny, proti které je chráněn. Ve výchozím nastavení je systém chráněn pouze proti vnějším zónám. Explicitně povolte služby, které mají být počítačům ve vnější síti dostupné. Nejprve v nabídce zvolte zónu, pak přidejte služby, které pro ni mají být povoleny.
Maškaráda skrývá vnitřní síť před vnějšími sítěmi, jako je Internet, ale umožňuje počítačům z vnitřní sítě transparentně přistupovat k vnější síti. Požadavky z vnější do vnitřní sítě jsou zablokovány a požadavky z vnitřní sítě z vnějšku vypadají, jako by je vydával maškarádující server. Pokud mají být ve vnější síti dostupné služby stroje ve vnitřní síti, přidejte pro službu zvláštní přesměrovávací pravidlo.
V tomto dialogu nastavte UDP porty, na kterých je povolen příjem
broadcast paketů. K žádané zóně přidejte požadované porty nebo
služby oddělené mezerami. Viz také
/etc/services.
Lze zde také zapnout zaznamenávání nepřijatých broadcast paketů. To může působit problémy, neboť počítače s Windows generují velké množství broadcast paketů, kterým si o sobě dávají vědět. Jsou-li v síti takové počítače, mohou záznamy narůstat do velkých rozměrů.
V tomto dialogu nastavte, zda má být z vnější sítě dostupná služba IPsec. Po stisknutí tlačítka můžete nastavit, jak se má IPsec paketům důvěřovat.
Existují dvě pravidla pro logování: zaznamenávání přijatých a nepřijatých paketů. Pro každou z obou skupin můžete zvolit mezi , a .
Po ukončení konfigurace pokračujte stisknutím tlačítka . Otevře se shrnutí nastavení konfigurace firewallu. V něm zkontrolujte všechna nastavení, služby, porty a protokoly, které byly povoleny. Chcete-li konfiguraci změnit, použijte tlačítko . Tlačítkem konfiguraci uložíte.
Následující odstavce popisují krok za krokem správný postup konfigurace. U každé konfigurační položky je uvedeno, zda je relevantní pro firewall nebo maškarádu. Nastavení týkající se DMZ (demilitarizované zóny) tu nejsou zmíněna. Jsou použitelná pouze ve složitějších sítích (obvykle podnikových), jejichž nastavení vyžaduje hlubokou znalost problematiky.
Nejprve pomocí editoru úrovní běhu YaST povolte SuSEfirewall2
ve vámi používané úrovni (pravděpodobně 3 nebo 5). Tím se nastaví
symbolické odkazy pro SuSEfirewall2_* skripty v adresářích
/etc/init.d/rc?.d/.
FW_DEV_EXT (firewall, maškaráda)
Zařízení připojené do Internetu.
Pro modem vložte ppp0.
Pro ISDN připojení použijte ippp0.
Pro DSL připojení použijte dsl0.
auto použijte pro rozhraní
odpovídající výchozímu směrování.
FW_DEV_INT (firewall, maškaráda)
Zařízení připojené k vnitřní, privátní síti (např.
eth0). Pokud firewall chrání jen počítač,
na kterém běží, a nikoliv vnitřní síť, ponechte prázdné.
FW_ROUTE (firewall, maškaráda)
Pokud chcete používat maškarádu, nastavte yes.
Vnitřní počítače nebudou z vnější sítě viditelné, protože jejich
privátní adresy (např. 192.168.x.x) nejsou
v Internetu vůbec směrovány.
U firewallu bez maškarády nastavte yes
pouze v případě, že chcete povolit přístup do vnitřní sítě.
Pak ale musí mít počítače ve vnitřní síti platné IP adresy.
V běžném případě byste neměli přístup zvenku povolovat!
FW_MASQUERADE (maškaráda)
Pokud potřebujete maškarádu, uveďte zde yes.
Tím vnitřní počítače získají v podstatě přímý přístup k Internetu.
Uvědomte si, že přistupovat k Internetu je bezpečnější skrze proxy.
Maškaráda není pro službu poskytovanou proxy serverem potřeba.
FW_MASQ_NETS (maškaráda)
Zde uveďte počítače či sítě, které budou maškarádovány. Jednotlivé položky oddělujte mezerou, např.
FW_MASQ_NETS="192.168.0.0/24 192.168.10.1"
FW_PROTECT_FROM_INT (firewall)
Nastavením yes zabezpečíte váš firewall před
vnitřní sítí. Pak je třeba služby z interní sítě explicitně
povolovat. Viz FW_SERVICES_INT_TCP a
FW_SERVICES_INT_UDP.
FW_SERVICES_EXT_TCP (firewall)
Zadejte TCP porty, které mají být přístupné. V případě domácí pracovní stanice, která nemá nabízet žádné služby, ponechte prázdné.
FW_SERVICES_EXT_UDP (firewall)
Ponechte prázdné, pokud ovšem neprovozujete UDP službu, která by měla být z venku přístupná. Mezi takové služby patří DNS, IPSec, TFTP, DHCP a další. V takovém případě vložte potřebné UDP porty.
FW_SERVICES_INT_TCP (firewall)
Tato proměnná určuje služby dostupné pro vnitřní síť. Zápis je stejný
jako v případě FW_SERVICES_EXT_TCP, jen je
nastavení použito pro vnitřní síť. Proměnnou je
potřeba nastavit, pouze pokud je FW_PROTECT_FROM_INT
nastavená na yes.
FW_SERVICES_INT_UDP (firewall)
Viz FW_SERVICES_INT_TCP.
Jakmile firewall nastavíte, otestujte ho. Sady pravidel vytvoříte jako
uživatel root příkazem
SuSEfirewall2 start. Pak se pokuste připojit telnetem
z externího počítače, abyste ověřili, zda bude připojení skutečně
odmítnuto. Následně si prohlédněte soubor
/var/log/messages, ve kterém byste měli nalézt
něco podobného:
Mar 15 13:21:38 linux kernel: SFW2-INext-DROP-DEFLT IN=eth0 OUT= MAC=00:80:c8:94:c3:e7:00:a0:c9:4d:27:56:08:00 SRC=192.168.10.0 DST=192.168.10.1 LEN=60 TOS=0x10 PREC=0x00 TTL=64 ID=15330 DF PROTO=TCP SPT=48091 DPT=23 WINDOW=5840 RES=0x00 SYN URGP=0 OPT (020405B40402080A061AFEBC0000000001030300)
Mezi další balíčky, kterými můžete otestovat nastavení firewallu, patří
nmap a nessus. Po jejich nainstalování k nim naleznete dokumentaci
v adresářích /usr/share/doc/packages/nmap a
/usr/share/doc/packages/nessus-core.
Aktuální informace a další dokumentaci o balíčku
SuSEfirewall2 naleznete v
/usr/share/doc/packages/SuSEfirewall2.
Domovská stránka projektů netfilter a iptables na adrese
http://www.netfilter.org
poskytuje velké množství dokumentace v různých jazycích.