LINUXZONE






 >> Hlavní stránka

(1737/02.09.2010)


 >> Administrace

(161/05.08.2010)


 >> Literatura

(310/31.08.2010)


 >> Bezpečnost

(344/27.08.2010)


 >> Programování

(307/19.04.2010)


 >> Distribuce

(97/09.06.2010)


 >> Síťování

(86/03.06.2010)


 >> Lokalizace

(10/15.09.2004)


 >> Aplikace

(176/12.08.2010)


 >> Multimedia

(32/31.03.2006)


 >> Hardware

(45/02.03.2007)


 >> Začínáme

(228/24.06.2010)


 >> Aktuálně

(561/30.08.2010)


 >> RELAX

(209/02.09.2010)


 >> Jinde vyšlo

přehled ostatních serverů




 Přihlášení




Login:
Heslo:
 uložit v prohlížeči


Nejste-li ješte zaregistrováni, můžete tak učinit zde.





 Vyhledávání




Hledaný výraz:
v klíčových slovech
v titulku
v anotaci
v textu








 Reklama









 Servis




*   Vaše náměty a připomínky
Máte k Linuxzone.cz nějaké připomínky nebo náměty? Našli jste na stránkách chybu? Dejte nám o tom vědět pomocí formuláře nebo v diskuzi.
Komentářů: 30
*   Podpořte Linuxzone.cz
Chcete podpořit náš server umístěním odkazu nebo zveřejněním backendu? Zde najdete vše potřebné.
*   Pište pro Linuxzone.cz
Máte zájem podílet se na obsahu Linuxzone.cz ať už jako redaktoři nebo i jinak? Dejte nám o sobě vědět!





 Aktuálně z bezpečnosti




-- 
6.12.2005, 19:01
Na serveru informit.com vyšla ukázková kapitola týkající se práce s řetězci z knihy Secure Coding in C and C++. (lz)

-- 
3.12.2005, 12:34
Bugtraq: Format String Vulnerabilities in Perl Programs. (lz)

-- 
3.12.2005, 12:32
Linux Advisory Watch December 2nd 2005. (lz)

-- 
23.10.2005, 13:28
Rozhovor na téma klasické zálohování versus CDP. (lz)

-- 
23.10.2005, 13:24
Linux Advisory Watch October 21st 2005. (lz)

další >>





 Aktuálně o software




-- 
6.12.2005, 19:07
Potřebujete-li pod linuxem rozchodit bezdrát založený na čipsetech Broadcom 43xx, konečně existuje linuxový ovladač. (lz)

-- 
6.12.2005, 19:04
Byla uvolněna verze Xen 3.0.0 virtualizační technologie XEN. (lz)

-- 
6.12.2005, 18:59
Byla uvolněna verze X11R6.9/X11R7 RC 3 grafickérho rozhraní X Window System. (lz)

-- 
3.12.2005, 12:45
Co je nového okolo projektu Amanda (open source zálohovací software)? Více na osnews.com. (lz)

-- 
3.12.2005, 12:40
Jak to akuálně v linuxu vypadá s podporou SATA.. (lz)

další >>





 Aktuálně z IT




-- 
3.12.2005, 12:51
Novellu se daří prodej linuxových produktů, oproti loňskému roku se Novell dočkal výrazného nárůstu. (lz)

-- 
3.12.2005, 12:48
Třetí verzi licence GPL by měla být publikována během jara 2007. (lz)

-- 
23.10.2005, 13:20
V Peru nyní mají zákon, který umožňuje nasazení open source software ve vládní správě. (lz)

-- 
23.10.2005, 13:14
Proč se Microsoft bojí Google? (lz)

-- 
27.9.2005, 22:01
Peru má zákon podporující free software. (lz)

další >>





 Nejčtenější články




-- 
Novinky ze světa svobodného software (20/2010)

-- 
Virtualizace - Praktický průvodce

-- 
JavaScript a Ajax

-- 
Novinky ze světa svobodného software (21/2010)

-- 
Security Digest (20/2010)

-- 
Proč by software neměl mít majitele (1/2)

-- 
Proč by software neměl mít majitele (2/2)

-- 
Novinky ze světa svobodného software (22/2010)

-- 
Bezpečnost bezdrátové komunikace

-- 
Security Digest (21/2010)






 Nejlepší články




-- 
Security Digest (21/2010)

-- 
Novinky ze světa svobodného software (22/2010)

-- 
Virtualizace - Praktický průvodce

-- 
Security Digest (20/2010)

-- 
Bezpečnost bezdrátové komunikace

-- 
Novinky ze světa svobodného software (21/2010)

-- 
Prodej svobodného software? (2/2)

-- 
JavaScript a Ajax

-- 
Novinky ze světa svobodného software (20/2010)

-- 
Proč by software neměl mít majitele (2/2)






 Anketa




Používáte nějaké rozšíření bezpečnostního modelu linuxového jádra?

Openwall (18%)

LIDS (12%)

Pax/Grsecurity (3%)

SELinux (6%)

RSBAC (1%)

jiné (1%)

používám standardní jádro (59%)







Linuxzone.cz - server o Linuxu pro programátory, administrátory a fanoušky.
Provozuje společnost Impossible.
ISSN: 1213-8738





CryptoAPI: Jak na IPSEC (I)

V dnešním článku se podíváme na problematiku implementací IPsec v Linuxu a ukážeme si, jak jednoduše pomocí IPsec vytvořit šifrovanou VPN.

IPsec

Šifrování dat se v posledních několika letech stává důležitějším a důležitějším. Ty tam jsou rané doby, kdy se na šifrování a bezpečnost příliš nehledělo. Krom aplikací podporující šifrování souborů (PGP) existují i protokoly, které umožňují šifrovat daný datový kanál (jako jsou např. SSL a TLS; aby nedocházelo k mýlce, algoritmy používané těmito protokoly či programy jsou většinou podobné nebo stejné).

Ale ani to nemusí někdy stačit. Občas vyvstane potřeba šifrovat veškerý síťový provoz mezi dvěma stroji. Nebo rovnou mezi dvěma sítěmi. A to je právě to, k čemu slouží IPsec. Šifrování probíhá na úrovni protokolu IP, tudíž pro aplikace a další síťové prvky je zcela transparentní, což je obrovskou výhodou IPsec.

Historie IPsec

Počátky IPsec se datují do roku 1992, kdy byl zahájen vývoj této sady protokolů. První implementace se IPsec dočkal v roce 1995 v BSDI. Z téhož roku pochází též první RFC pojednávající o IPsec (za zmínku stojí např. RFC 1825 - Security Architecture for the Internet Protocol). Postupně se implementace IPsec rozšířily do všech dnes běžně používaných operačních systémů. Současná verze IPsec je popsáná především RFC 2401 - Security Architecture for the Internet Protocol. Přehled všech RFC týkajících se této problematiky naleznete na stránkách IP Security Protocol Working Group

Implementace v Linuxu

V Linuxu nalezneme hned několik implementací IPsec. První z nich je implementace IPsec používající CryptoAPI, jež je součástí záplaty patch-int (instalaci této záplaty jsme si popsali v minulém článku). Další velmi dobrou implementací je FreeS/WAN.

Žádná z těchto implementací ovšem není standardní součástí jádra. Od jádra 2.5.47 je ovšem součástí Linuxu implementace standardu IPsec inspirována (a částečně postavená na) KAME, což je projekt implementující IPv6 a IPsec pro různé *BSD jádra (např. FreeBSD a OpenBSD).

Za zmínku též stojí, že tato nativní implementace používá CryptoAPI.

Implementace z patch-int

Tato implementace standardu IPsec patří k těm nejsnáze použitelným. Krom aplikace záplaty patch-int (popř. je tu ještě možnost aplikace samostatné záplaty obsahující jen tuto implementaci IPsec + CryptoAPI) potřebujeme ještě utilitu ipsecadm. Tu můžeme získat zde. Rozbalíme balík:

	tar -xzf ipsec_tunnel-0.9.tar.gz
	cd ipsec_tunnel-0.9

A spustíme skript configure, který se zeptá na umístění zdrojových souborů jádra a kam má utilitu nainstalovat. Poté spustíme kompilaci a výsledek nainstalujeme, tedy tradičně:

	./configure
	make
	make install

Nyní můžeme přistoupit ke konfiguraci IPsec, nejprve si ale povíme něco o teoretické stránce konfigurace.

Trocha teoreie IPsec

Prvním krokem je vytvoření tzv. bezpečnostních asociací - neboli SA, což je zkratka vycházející z anglického "Security Associations". Tímto pojmem označujeme jednosměrné spojení mezi dvěma stroji, jež je identifikováno IP adresami obou strojů, SPI a použitým protokolem.

SPI ("Security Parametr Index") je ID identifikující danou asociaci mezi dvěma stroji. Je zde proto, aby bylo možné vytvořit více asociací mezi dvěma stroji. Tento na první pohled nelogický požadavek má své opodstatnění v praxi a často ho využijeme.

Oním použitým protokolem může být buď AH ("Authentication Header") nebo ESP ("Encapsulating Security Payload"). AH hlavička slouží ke kontrole integrity a auntentičnosti paketu, ESP hlavička je o poznání delší, protože ESP kromě autentizace implementuje taktéž šifrování dat. V praxi spíše využijeme ESP právě z důvodu možnosti šifrování obsahu paketů. Tím docílíme toho, že v případě odposlechu provozu zůstanou data pro útočníka nečitelná. Oba protokoly (AH a ESP) mohou pracovat ve dvou režimech: transportním a tunelovém. V transportním režimu probíhá komunikace pouze mezi dvěma stroji. V tunelovacím režimu se jako data přenáší celé IP pakety, které router obdrží. Jakmile je router na druhé straně tunelu přijme a dešifruje, tak dešifrované pakety pošle do sítě dále. Tohoto mechanismu se využívá pro vytvoření šifrovaných VPN sítí ("Virtual Private Network"). Šifrovácí algoritmus může být libovolná symetrická šifra specifikovaná v SA.

ipsecadm

Tolik tedy k lehkému teoretickému úvodu do IPsec a nyní si ukážeme, jak pracovat s ipsecadm, což je utilita sloužící ke konfiguraci IPsec v této implementaci.

Před samotným definováním jedntolivých SA pomocí ipsecadm ještě musíme vygenerovat příslušné klíče. Je třeba vygenerovat celkem dva klíče. První z nich bude sloužit k autentizaci, druhý k samotnému šifrování.

Autentizace se provádí především pomocí algoritmu HMAC a zvolené hashovací funkce. Klíč zde neslouží k šifrování, ale je použit spolu s daty při počítání (v němž se uplatňuje i použitá hashovací funkce; podrobnosti naleznete v RFC 2104) autentizačního kódu daného paketu. Tím se zaručí, že komunikace skutečně probíhá mezi dvěma určenými stroji. Krom HMAC se eventuálně ještě může použít některý algoritmus postavený na použití symetrických šifer (např. DES-MAC), ale tuto možnost ipsecadm nenabízí.

Ale zpět k ipsecadm, klíč pro auntentizaci můžeme vygenerovat obecně takto:

	ipsecadm key create algoritmus

kde, jako algoritmus specifikujeme vybranou hashovací funkci (zvolit doporučuji SHA1, je bezpečnější než MD5). Parametrem --file=soubor můžeme specifikovat soubor, do kterého ipsecadm uloží vygenerovaný klíč. Pro jistotu si uvedeme příklad takového generování:

	ipsecadm key create sha1 --file=/etc/ipsec/auth.key

Vygenerování klíče pro šifrování je podobné. Zvolíme algoritmus pro šifrování (např. AES/Rijndael) a vygenerujeme klíč pomocí

	ipsecadm key create generic --file=soubor 

a ještě pomocí parametru --bits=délka specifikujeme požadovanou délku klíče. Pro jistotu si uvedeme příklad pro vygenerování 256 bitového klíče pro AES(pro jiné algorimy by se postup samožejmě nelišil, maximálně by se lišila délka klíče):

	ipsecadm key create generic --file /etc/ipsec/enc.key --bits=256

Nyní tedy máme vygenerovány klíče a můžeme přistoupit k vytvoření jednotlivých asociací (SA). Pro provedení tohoto kroku musíme znát jméno symetrické šifry v CryptoAPI, jejich seznam nalezneme v adresáři /proc/crypto/cipher. U jmen algoritmů nalezneme různé přípony, jako např. cbc,ecb či cfb. Jedná se o algoritmy, pomocí kterých se z jednotlivých zašifrovaných bloků dat sestavují výsledná šifrovaná data. V ECB (Electronic Code Book) módu jsou jednotlivé bloky skládány za sebe, což má samozřejmě jistou nevýhodu - dva stejné bloky zdrojových dat budou produkovat i identické šifrované bloky. Proto se používají techniky jako např. CBC či CFM, které tento problém více či méně eliminují.

Pro naše účely použijeme algoritmus aes-cfc (jinak řečeno, AES/Rijndael v CBC módu) a sha1 pro autentizaci. Přídáme asociaci (SA) pomocí příkazu ipsecadm sa add. Pomocí volby --cipher specifikujeme použitou symetrickou šifru, volba --cipher-keyfile specifikuje umístění souboru s klíčem pro šifrování, --digest specifikuje hashovací funkci, --digest-keyfile určuje umístění klíče pro autentizaci,pomocí --spi nastavíme SPI dané SA (pro přípomenutí, SPI je ID identifikující jednotlivé asociace mezi dvěma stroji). Dále můžeme pomocí volby --duplex zároveň vytvořit i SA pro obrácený směr (čímž si ušetříme práci - znovu přípomínám, že SA jsou jednosměrné) a nakonec pomocí volby --src nastavíme veřejnou IP tohoto stroje a stejně tak pomocí --dst vzdálenou IP druhého stroje.

Uvedeme si příklad vytvoření takové SA:

	ipsecadm sa add --spi 0x2000 --cipher=aes-cbc \
	--cipher-keyfile=/etc/ipsec/enc.key --digest=sha1 \
	--digest-keyfile=/etc/ipsec/auth.key --duplex --src=4.3.2.1 \
	--dst=1.2.3.4

Kdybychom si pomocí příkazu ipsec sa show nechali vypsat jednotlivé asociace, tak bychom viděli, že jsme skutečně přidali dvě asociace:

[root@orodruina ipsec]# ipsecadm sa show
Destination     Source       SPI        Cipher/bits     Digest-HMAC/bits
========================================================================
1.2.3.4         4.3.2.1      0x00002000 aes-cbc/256     sha1-96/160
4.3.2.1         1.2.3.4      0x00002000 aes-cbc/256     sha1-96/160

A nyní finálně přidáme tunely pomocí příkazu ipsecadm tunnel add zařízení (zařízení se nazývají ipsecX, kde X je číslo zařízení). Pomocí volby --local nastavíme lokální IP adresu a pomocí --remote IP adresu vzdáleného stroje. Eventálně ještě můžeme použít volbu --spi a specikovat i SPI (což je nutné, pokud máme více tunelů mezi jednou dvojicí strojů). Příklad:

	ipsecadm tunnel add ipsec1 --local=4.3.2.1 --remote=1.2.3.4

Dalším krokem je aktivování zařízení ipsec1. To provedeme příkazem ipconfig ipsec1 lokální_IP up, poté můžeme nastavit routování do druhé LAN přes toto zařízení - provést to můžeme příkazem route add -net sít netmask maska_sítě dev ipsec1. Např. pro stroj s lokální IP 10.1.1.2 a pro síť na druhém konci IPsec tunelu 172.16.0.0/16 by posloupnost příkazů vypadala např. takto:

	ifconfig ipsec1 10.1.1.2 up
	route add -net 172.16.0.0 netmask 255.255.0.0 dev ipsec1

Obdobně provedeme konfiguraci i na druhém stroji (samozřejmě kromě klíčů a algoritmů, tyto parametry musí zůstat stejné). Pak můžeme vyzkoušet např. ping z jedné lokální sítě na druhou (za předpokladu správně nastaveného routování). Pomocníkem nám může být např. tcpdump, v ideálním případě uvidíme přes venkovní síťové zařízení proudit ESP pakety (pomůže nám např. pustit tcpdump s parametrem esp, pak nic jiného než ESP pakety tcpdump nebude zobrazovat). Eventuálně ještě může při ladění pomoci zkontrolvat, jaké pakety chodí přes síťové zařízení ipsecX, což tcpdump zobrazí pomocí volby -i zařízení.

Závěrem

Tolik tedy k této nejjednodušší implementaci IPsec na Linuxu. Příště se podíváme na další implementace, jejich konfiguraci, popř. jejich výhody a nevýhody.

Další části seriálu:

Autor: Pavel Palát, 01. 08. 2003, 00:00
Sekce Síťování, Komentářů: 3
Průměrné hodnocení: 3,04

o Poslat e-mailem
o Tisk článku
o Uložit do profilu


 Přispějte nám




Líbil se Vám tento článek? Můžete ho ocenit zavoláním na tel. číslo 906 460 134.
Cena hovoru za 1 minutu je 46 Kč.





 Hodnocení článku




Článek hodnotím jako:  [1] výborný   [2] dobrý   [3] průměr   [4] špatný   [5] hrůza  





 Komentáře




--

MeX, 19. 08. 2003 18:07
ipconfig vs. ifconfig












--

harry_x, 02. 08. 2003 23:41
re












--

GG, 02. 08. 2003 12:22
nejasnosti















PŘIDAT KOMENTÁŘ ZOBRAZ VŠE >>










2002 © Impossible, s.r.o.   >> Kontaktujte redakci >> Právní upozornění >> Reklama