Kapitola 4. Bezpečnost v Linuxu

Obsah

4.1. Firewall a maškaráda
4.2. SSH: bezpečná práce v síti
4.3. Šifrování diskových oddílů a souborů
4.4. Bezpečnost a soukromí

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í.


4.1. Firewall a maškaráda

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.

4.1.1. Filtrování paketů pomocí iptables

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:

filter

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).

nat

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.

mangle

Pravidla v této tabulce umožňují měnit hodnoty uložené v IP hlavičkách (např. typ služby).

Obrázek 4.1. iptables: Možné cesty paketu

iptables: Možné cesty paketu

Výše zmíněné tabulky obsahují několik předdefinovaných řetězů (chains) pro porovnávání s pakety:

PREROUTING

Tento ř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.

FORWARD

Tento ř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.

POSTROUTING

Tento ř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.

4.1.2. Základy maškarády

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.

[Important]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ů.

4.1.3. Základy firewallu

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.

4.1.4. SuSEfirewall2

Skript SuSEfirewall2 čte proměnné z /etc/sysconfig/SuSEfirewall2 a generuje sadu iptables pravidel. SuSEfirewall2 definuje tři bezpečnostní zóny:

Vnější síť

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.

Vnitřní síť

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).

Demilitarizovaná zóna (DMZ)

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.

4.1.4.1. Konfigurace pomocí YaST

[Important]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 Na zvolených portech a rozhraních otevřít firewall nebo Na zvolených portech otevřít firewall, YaST automaticky upraví konfiguraci firewallu. Dialogy některých serverových modulů mají tlačítko Doladění firewallu 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 Bezpečnost a uživatelé+Firewall. Konfigurace je rozdělena do sedmi částí, ke kterým lze přistupovat přímo stromové struktury vlevo.

Začátek

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 Uložit nastavení a restartovat firewall.

Obrázek 4.2. YaST: Konfigurace firewallu

YaST: Konfigurace firewallu
Rozhraní

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 Změnit a vyberte Není přiřazena žádná zóna. Chcete-li rozhraní přiřadit zóně, stiskněte Změnit a vyberte některou z dostupných zón. Můžete také vytvořit zvláštní rozhraní s vlastním nastavením pomocí Vlastní.

Povolené služby

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 Povolené služby pro vybranou zónu zvolte zónu, pak přidejte služby, které pro ni mají být povoleny.

Maškaráda

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.

Broadcast

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ů.

Podpora IPsec

V tomto dialogu nastavte, zda má být z vnější sítě dostupná služba IPsec. Po stisknutí tlačítka Podrobnosti můžete nastavit, jak se má IPsec paketům důvěřovat.

Úroveň logování

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 Zaznamenávat vše, Zaznamenávat pouze kritické a Nezaznamenávat nic.

Po ukončení konfigurace pokračujte stisknutím tlačítka Další. 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 Zpět. Tlačítkem Přijmout konfiguraci uložíte.

4.1.4.2. Ruční konfigurace

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.

4.1.5. Další informace

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.