Sieci VPN Zdalna praca i bezpieczenstwo danych

background image

Wydawnictwo Helion

ul. Koœciuszki 1c

44-100 Gliwice

tel. 032 230 98 63

e-mail: helion@helion.pl

Sieci VPN. Zdalna praca

i bezpieczeñstwo danych

Autor: Marek Serafin

ISBN: 978-83-246-1521-6

Format: B5, stron: 160

Poznaj i wykorzystaj w praktyce metody korzystania z sieci VPN

Na czym opiera siê standard SSL?

Jak zestawiaæ tunele VPN w systemach Windows i Linux?

Jak po³¹czyæ oddzia³y firm za pomoc¹ tunelu IPSec?

Serwery plików i baz danych spotykamy niemal w ka¿dej firmie. Architektura

klient-serwer umo¿liwia dostêp do aplikacji nie tylko wewn¹trz firmy, ale tak¿e

z dowolnego innego miejsca. Rozwój sieci pozwoli³ wielu organizacjom na sprawn¹

komunikacjê i otworzy³ perspektywy dla tych pracowników, którzy z ró¿nych wzglêdów

wykonuj¹ swoje obowi¹zki poza biurem. Niestety – zdalny dostêp do firmowej

infrastruktury IT niesie ze sob¹ tak¿e zagro¿enia zwi¹zane z mo¿liwoœci¹ utraty,

uszkodzenia lub wydostania siê na zewn¹trz cennych danych. Rozwi¹zaniem tego

problemu s¹ ³¹cza szyfrowane, nazywane VPN.
Ksi¹¿ka

Sieci VPN. Zdalna praca i bezpieczeñstwo danych

to praktyczny przewodnik

dla administratorów sieci firmowych, którzy zajmuj¹ siê wdra¿aniem rozwi¹zañ

umo¿liwiaj¹cych pracê na odleg³oœæ. Opisuje wszystkie aspekty konfigurowania tuneli

VPN z wykorzystaniem protoko³ów SSL (OpenVPN) i IPSec (OpenSWAN) w systemach

Linux i Windows. Czytaj¹c j¹, poznasz standard SSL, zasady generowania certyfikatów

oraz metody implementacji sieci VPN. Analizuj¹c zawarte w ksi¹¿ce przyk³ady,

nauczysz siê otwieraæ zdalny dostêp do sieci korporacyjnej, ³¹czyæ oddzia³y firmy

za pomoc¹ IPSec i uruchamiaæ tunele VPN w urz¹dzeniach mobilnych.

Zagro¿enia wynikaj¹ce z konstrukcji protoko³u TCP/IP

Przesy³anie danych z wykorzystaniem SSL

Zapewnianie pracownikom zdalnego dostêpu do zasobów firmy

Generowanie kluczy

Tworzenie tuneli SSH

Instalacja i konfiguracja programu OpenVPN

Tunele VPN w urz¹dzeniach mobilnych

Implementacja IPSEC/L2TP w systemie Linux

Konfiguracja VPN w systemie Windows

Zabezpiecz dostêp do swojej sieci.

Skorzystaj z wiedzy doœwiadczonego administratora

background image

Spis tre

Ĉci

Przedmowa ...................................................................................... 7

Rozdzia

ä 1. Wstöp .............................................................................................. 9

Rozdzia

ä 2. SäaboĈè protokoäów sieciowych i zwiñzane z tym problemy .............. 11

Rozdzia

ä 3. SSL jako standard bezpiecznego przesyäania danych ........................ 13

3.1. Historia i znaczenie protoko

áu SSL ......................................................................... 13

3.1.1. Przebieg nawi

ązania poáączenia SSL .......................................................... 14

3.1.2. Znaczenie zaufanego certyfikatu ................................................................ 15

3.2. Generowanie certyfikatów przy u

Īyciu programu OpenSSL .................................. 16

3.2.1. Tworzenie w

áasnego CA ............................................................................. 16

3.2.2. Tworzenie klucza prywatnego dla serwera ................................................. 18
3.2.3. Generowanie wniosku o wystawienie certyfikatu ....................................... 18
3.2.4. Wystawianie certyfikatu dla serwera .......................................................... 19
3.2.5.

ĝciąganie hasáa z klucza prywatnego serwera ............................................ 20

3.2.6. Uniewa

Īnianie certyfikatów ....................................................................... 20

3.2.7. Generowanie listy CRL (uniewa

Īnionych certyfikatów) ............................ 21

3.2.8. Ró

Īne formaty certyfikatów ....................................................................... 21

3.3. Kompilacja biblioteki openssl ze

Ĩródeá .................................................................. 22

Rozdzia

ä 4. Tunelowanie portów ....................................................................... 25

4.1. Program Stunnel ...................................................................................................... 26

4.1.1. stunnel.conf ................................................................................................ 29
4.1.2. Przyk

áad 1 ................................................................................................... 31

4.1.3. Przyk

áad 2 ................................................................................................... 33

4.2. Tunele SSH ............................................................................................................. 35

4.2.1. Przyk

áad 1 ................................................................................................... 35

4.2.2. Przyk

áad 2 — SSH jako Socks Proxy ......................................................... 37

4.2.3. Przyk

áad 3 — tunele z przekazywaniem zdalnym ...................................... 37

4.2.4. Przyk

áad 4 — tunel UDP po SSH ............................................................... 41

Rozdzia

ä 5. OpenVPN — praktyczna implementacja tuneli VPN .......................... 45

5.1. Instalacja ................................................................................................................. 45

5.1.1. Instalacja w systemie Linux Debian ........................................................... 46
5.1.2. Instalacja przez kompilacj

Ċ Ĩródeá programu (Linux) ................................ 46

5.1.3. Instalacja pod systemami MS Windows ..................................................... 50

5.2. Konfiguracja OpenVPN .......................................................................................... 52

background image

4

Sieci VPN. Zdalna praca i bezpiecze

þstwo danych

5.3. Praktyczny przyk

áad — zdalny dostĊp do zasobów firmy dla pracowników .......... 53

5.3.1. Generowanie certyfikatów SSL .................................................................. 54
5.3.2. Konfiguracja po stronie serwera ................................................................. 55
5.3.3. Uruchomienie us

áugi serwera OpenVPN .................................................... 57

5.3.4. Konfiguracja klienta ................................................................................... 58

5.4. Bardziej z

áoĪona konfiguracja z wieloma uĪytkownikami ...................................... 59

5.4.1. Przypisywanie sta

áych adresów IP uĪytkownikom ..................................... 62

5.4.2. Pliki ustawie

Ĕ uĪytkowników w katalogu ccd ............................................ 62

5.4.3. Tworzenie pliku dostep.txt ......................................................................... 63
5.4.4. Testowanie .................................................................................................. 64
5.4.5. Logowanie zdarze

Ĕ do pliku ....................................................................... 65

5.5. Uniewa

Īnianie certyfikatów .................................................................................... 67

5.6.

àączenie oddziaáów firmy ....................................................................................... 68

5.6.1. Przyk

áad rozwiązania z routerem ................................................................ 69

5.6.2. Tunel VPN z mostkowaniem ...................................................................... 73
5.6.3. Tunel VPN z mostkowaniem w Windows XP ............................................ 78

5.7. OpenVPN w Windows Server z uwierzytelnianiem przez Active Directory .......... 80

5.7.1. Konfiguracja serwera .................................................................................. 81
5.7.2. Konfiguracja klienta ................................................................................... 83

5.8. OpenVPN w systemach Windows Mobile (PDA) ................................................... 84

5.8.1. Instalacja ..................................................................................................... 85

Rozdzia

ä 6. IPSec ............................................................................................. 89

6.1. IPSec a translacja adresów (maskarada) .................................................................. 92
6.2. IPSec — przygotowanie

Ğrodowiska w systemie Linux .......................................... 93

6.2.1. Instalacja programu OpenSWAN .................................................................. 94

6.3. Praktyczny przyk

áad — brama IPSec/VPN dla uĪytkowników mobilnych ............. 95

6.3.1. Konfiguracja bramy IPSec (Linux) ............................................................. 96

6.4. Konfiguracja klienta Windows .............................................................................. 101
6.5. Debugowanie po

áączenia ...................................................................................... 104

6.6. Konfiguracja z uwierzytelnieniem przez certyfikaty ............................................. 106

6.6.1. Konfiguracja OpenSWAN z wykorzystaniem certyfikatów ..................... 106

6.7. Import certyfikatów w systemie Windows ............................................................ 108

6.7.1. Konfiguracja po

áączenia ........................................................................... 112

6.8. Dost

Ċp z urządzeĔ PDA — Windows Mobile 2003, 2005, 2006 ............................. 116

6.8.1. Konfiguracja Windows Mobile z kluczem wspó

ádzielonym (PSK) ......... 116

6.8.2. Konfiguracja Windows Mobile z certyfikatami ........................................ 117

6.9.

àączenie oddziaáów firmy tunelem IPSec ............................................................. 119

Rozdzia

ä 7. Windows Server 2003 jako brama VPN/IPSec ............................... 125

7.1. Konfiguracja us

áugi Routing i dostĊp zdalny ........................................................ 126

7.2. Konfiguracja klienta .............................................................................................. 132
7.3. Dost

Ċp do VPN na podstawie czáonkostwa w grupie ............................................ 133

Rozdzia

ä 8. ãñczenie oddziaäów

firmy z wykorzystaniem systemów Windows Server 2003 .............. 139

8.1. Konfiguracja lokalizacji 1 — Gliwice ................................................................... 140
8.2. Konfiguracja lokalizacji 2 — Bytom .................................................................... 145
8.3. Konfiguracja zabezpiecze

Ĕ IPSec ......................................................................... 145

8.4. Debugowanie po

áączenia ...................................................................................... 147

Rozdzia

ä 9. Podsumowanie ............................................................................. 149

Skorowidz .................................................................................... 153

background image

Rozdzia

ä 3.

SSL jako standard
bezpiecznego
przesy

äania danych

3.1. Historia i znaczenie protoko

äu SSL

W odpowiedzi na problemy zwi

ązane z brakiem zabezpieczeĔ w popularnych protoko-

áach internetowych firma Netscape Communications Corporation w latach 90. ubie-
g

áego wieku opracowaáa protokóá SSL. Obecnie najpopularniejsza jest wersja trzecia

protoko

áu — SSL 3, poniewaĪ wczeĞniejsze implementacje zawieraáy kilka báĊdów.

W 1996 roku za spraw

ą IETF (ang. Internet Engineering Task Force) powstaáa grupa

robocza TLS (ang. Transport Layer Security), która ma za zadanie rozwija

ü oraz pu-

blikowa

ü standard SSL.

W za

áoĪeniach SSL powstaá jako zabezpieczenie do protokoáu http dla potrzeb usáug

e-commerce. Jednak dzi

Ċki jego uniwersalnoĞci moĪna wykorzystaü go do zabezpie-

czenia wi

ĊkszoĞci usáug TCP, a nawet do tworzenia sieci VPN, co zostanie przedsta-

wione w niniejszej ksi

ąĪce.

Protokó

á SSL zapewnia nastĊpujące podstawowe funkcje bezpieczeĔstwa:



uwierzytelnianie stron — czyli potwierdzenie ich autentyczno

Ğci na podstawie

certyfikatów,



poufno

Ğü i integralnoĞü przesyáu — tzn. ochronĊ przed podsáuchaniem

i modyfikacj

ą.

Proces uwierzytelniania przebiega przy u

Īyciu asymetrycznych algorytmów kryp-

tograficznych. W zwi

ązku z powyĪszym kaĪda ze stron musi posiadaü swój wáasny

klucz prywatny (tajny) oraz klucz publiczny (certyfikat).

background image

14

Sieci VPN. Zdalna praca i bezpiecze

þstwo danych

Po pozytywnym uwierzytelnieniu stron nast

Ċpuje wymiana danych przy uĪyciu któregoĞ

z ustalonych, symetrycznych algorytmów kryptograficznych (s

ą znacznie szybsze).

Aby mo

Īliwe byáo potwierdzenie autentycznoĞci strony biorącej udziaá w komunika-

cji, np. serwera, musi ona wylegitymowa

ü siĊ certyfikatem podpisanym przez zaufane

centrum certyfikacji (ang. CA — Certificate Authority).

CA to zaufana instytucja, która zajmuje si

Ċ wystawianiem certyfikatów. Do jej obo-

wi

ązków naleĪy sprawdzenie prawnych podstaw wnioskowania podmiotu o certyfikat.

Chodzi tu g

áównie o prawo do nazwy firmy, nazwy domeny itd.

Na certyfikat sk

áadają siĊ pola zawierające nazwĊ wáaĞciciela, nazwĊ podmiotu, okres

wa

ĪnoĞci, a takĪe certyfikat gáównego i ewentualnie poĞrednich centrów certyfikacji

— ca

áoĞü stanowi tzw. ĞcieĪkĊ certyfikacji.

3.1.1. Przebieg nawi

ñzania poäñczenia SSL

Zanim protoko

áy warstwy aplikacji bĊdą mogáy wymieniaü dane w bezpieczny sposób,

musi nast

ąpiü nawiązanie sesji SSL (ang. SSL handshake). Na SSL handshake skáada

si

Ċ kilka faz negocjacji, które przedstawiono kolejno w punktach.

1.

Klient

áączy siĊ z serwerem i wysyáa pakiet początkowy Hello, a wraz z nim

numer obs

áugiwanej wersji SSL, obsáugiwane algorytmy szyfrujące, algorytmy

kompresji oraz losowy numer zwi

ązany z rozpoczĊtą sesją (ID).

2.

Serwer w odpowiedzi wysy

áa klientowi numer obsáugiwanej wersji SSL,

obs

áugiwane algorytmy szyfrujące, a takĪe swój certyfikat (klucz publiczny).

3.

Na tym etapie klient sprawdza certyfikat serwera — czy jest wa

Īny oraz czy

wystawi

á go zaufany urząd (CA). Protokóá SSL przewiduje takĪe moĪliwoĞü

wys

áania przez serwer Īądania o uwierzytelnienie klienta. Uwierzytelnianie

to jest opcjonalne i stosuje si

Ċ je w okreĞlonych warunkach.

4.

W przypadku pozytywnego uwierzytelnienia serwera klient generuje
48-bajtow

ą liczbĊ zwaną „pre-master secret” i szyfruje ją, uĪywając przy

tym klucza publicznego serwera (zawartego w certyfikacie serwera). Liczba
„pre-master” sk

áada siĊ z 2 bajtów identyfikujących klienta oraz 46 bajtów

losowych.

5.

Serwer po otrzymaniu liczby „pre-master” odszyfrowuje j

ą, uĪywając do tego

swojego klucza prywatnego, i porównuje pierwsze 2 bajty identyfikuj

ące klienta

z danymi, które otrzyma

á w inicjacyjnym pakiecie Hello.

6.

Je

Ğli jest wymagane uwierzytelnienie klienta, jest to robione w tej chwili.

Wówczas klient musi przes

áaü swój certyfikat.

7.

Na podstawie ju

Ī wymienionych danych (m.in. pre-master key, losowe dane

wygenerowane w punkcie 1.) serwer i klient generuj

ą tzw. master key (znany

tylko im).

background image

Rozdzia

ä 3.

i SSL jako standard bezpiecznego przesyäania danych

15

8.

Zarówno klient, jak i serwer na podstawie master-key generuj

ą symetryczne

klucze sesyjne, które umo

Īliwiają im szyfrowanie i sprawdzanie integralnoĞci

przesy

áanych danych

1

.

9.

Ko

Ĕcząc handshake, klient przesyáa do serwera wiadomoĞü zaszyfrowaną

ustalonym kluczem sesyjnym. Wiadomo

Ğü ta, nazywana koĔcowym

uzgodnieniem (ang. finished handshake), jest jako pierwsza szyfrowana
tajnym kluczem.

10.

Serwer odpowiada tak

Īe wiadomoĞcią zaszyfrowaną za pomocą wspólnego

klucza. Od tej pory sesja SSL jest nawi

ązana.

3.1.2. Znaczenie zaufanego certyfikatu

Co w praktyce oznacza,

Īe dany certyfikat jest zaufany?

Oznacza to tylko (a

Ī) tyle, Īe zostaá wystawiony przez wiarygodne (zaufane) Centrum

Certyfikacji CA. Wszystkie popularne przegl

ądarki internetowe, programy pocztowe

i inne aplikacje korzystaj

ące z protokoáu SSL mają „zaszytą” w sobie na staáe listĊ

zaufanych wystawców CA (ich certyfikaty). Dzi

Ċki temu podczas nawiązywania poáą-

czenia SSL aplikacja nie zg

áasza báĊdu, rozpoznając, Īe certyfikat zostaá wystawiony

przez który

Ğ z zaufanych CA.

Certyfikaty wystawione przez zaufane CA maj

ą znaczenie gáównie dla publicznych

serwerów WWW, gdzie rozproszeni po ca

áym Ğwiecie klienci muszą mieü pewnoĞü,

Īe serwer, z którym siĊ áączą, jest na pewno tym, za jaki siĊ podaje (np. sklep inter-
netowy).

W przypadku tworzenia po

áączeĔ VPN nic nie stoi na przeszkodzie, abyĞ stworzyá swoje

CA i sam wystawia

á certyfikaty na wáasne potrzeby. MoĪesz przecieĪ ufaü certyfika-

tom, które sam wygenerowa

áeĞ, i instalowaü je na laptopach pracowników.

W przeciwie

Ĕstwie do serwera WWW i przeglądarek internetowych w zastosowa-

niach VPN-owych cz

Ċsto waĪne jest uwierzytelnienie klienta przez serwer (bramĊ VPN).

Nie chcemy przecie

Ī, aby do sieci korporacyjnej mógá podáączyü siĊ ktokolwiek

na

Ğwiecie posiadający klienta VPN, a jedynie osoby posiadające odpowiednie certy-

fikaty.

Kolejny punkt tego rozdzia

áu zawiera opis programu OpenSSL wraz z przykáadami

tworzenia kluczy, wniosków i certyfikatów.

1

Na podstawie master-key generowanych jest sze

Ğü kluczy — trzy w kierunku serwer-klient i trzy

w drug

ą stronĊ. Klucze te sáuĪą do szyfrowania i sprawdzania integralnoĞci danych. Zainteresowanych

Czytelników odsy

áam do dokumentacji dostĊpnej na stronie korporacji Netscape: http://wp.netscape.com/

eng/ssl3/draft302.txt.

background image

16

Sieci VPN. Zdalna praca i bezpiecze

þstwo danych

3.2. Generowanie certyfikatów

przy u

Ĕyciu programu OpenSSL

Wi

ĊkszoĞü programów opisanych w tej ksiąĪce do uwierzytelniania stron wykorzystuje

protokó

á SSL. Informacje zawarte w tym rozdziale, a w szczególnoĞci przykáady ge-

nerowania kluczy i certyfikatów X.509, wykorzystywane b

Ċdą czĊsto w dalszej czĊĞci

ksi

ąĪki. Aby uniknąü wielokrotnego opisywania tych samych czynnoĞci w nastĊpnych

rozdzia

áach, bĊdĊ odsyáaá Czytelnika do instrukcji zawartych w niniejszym punkcie.

Do stworzenia w

áasnego CA, generowania kluczy, wniosków i certyfikatów bĊdziemy

u

Īywali najpopularniejszej w Ğwiecie „open source” biblioteki openssl. Biblioteka ta

zawiera implementacj

Ċ protokoáów SSL i TLS oraz wiĊkszoĞü uĪywanych algorytmów

kryptograficznych. Korzysta z niej szereg znanych aplikacji wykorzystuj

ących algo-

rytmy szyfruj

ące, jak np. OpenSSH, OpenVPN, ApacheSSL itp.

Biblioteka openssl dostarczana jest standardowo wraz z popularnymi dystrybucjami
Linuksa. Najprawdopodobniej bibliotek

Ċ tĊ masz zainstalowaną w systemie. Aby siĊ

o tym przekona

ü, wpisz po prostu polecenie

openssl

. Powinien zg

áosiü siĊ znak za-

ch

Ċty programu:

OpenSSL>

. W przeciwnym razie musisz j

ą zainstalowaü w sposób ty-

powy dla swojej dystrybucji. Ostatecznie mo

Īesz pobraü Ĩródáa najnowszej wersji ze

strony http://openssl.org i w

áasnorĊcznie skompilowaü program.

Wersja instalacyjna pod systemy Windows dost

Ċpna jest na stronie http://www.slproweb.

com/products.html.

Zanim przejdziemy do generowania certyfikatów dla serwerów i klientów, musimy stwo-
rzy

ü wáasny Urząd Certyfikacji (CA). Na początku dwie uwagi ogólne.

Wa

Īne jest, abyĞ swoje CA utworzyá na jakimĞ bezpiecznym komputerze odáączonym

od internetu albo przynajmniej za firewallem, tak aby nie by

á on bezpoĞrednio „wi-

doczny” w internecie.

Wa

Īne jest takĪe regularne robienie kopii bezpieczeĔstwa wystawionych certyfikatów

oraz ca

áego katalogu „ssl”, tak aby w razie potrzeby moĪna byáo uniewaĪniü któryĞ

z certyfikatów.

Zak

áadam, Īe masz zainstalowany pakiet OpenSSL. JeĪeli nie, to musisz go zainsta-

lowa

ü, uĪywając menedĪera pakietów swojej dystrybucji, lub skompilowaü program

samodzielnie.

3.2.1. Tworzenie w

äasnego CA

W pierwszej kolejno

Ğci odnajdujemy plik openssl.cnf. Prawdopodobne lokalizacje tego

pliku to:



/etc/ssl/openssl.cnf — dla programu instalowanego z paczek (np. Debian),



/usr/local/etc/openssl.cnf — w przypadku wersji kompilowanej r

Ċcznie,

background image

Rozdzia

ä 3.

i SSL jako standard bezpiecznego przesyäania danych

17



C:\OpenSSL\bin — dla systemów Win32.

W pliku tym odnajdujemy sekcj

Ċ

[ CA_default ]

. Zmie

Ĕ wpisy u siebie tak, aby wy-

gl

ądaáy jak te z listingu 3.2.1.1.

Listing 3.2.1.1. Wycinek pliku openssl.cnf

[ CA_default ]
dir = /etc/ssl # g

áówny katalog, w którym zapisywane są pliki

certs = /etc/ssl/certs # katalog, w którym zapisywane s

ą certyfikaty

crl_dir = $dir/crl # katalog z list

ą certyfikatów uniewaĪnionych (CRL)

private_key = $dir/private/cakey.pem # klucz prywatny CA
database = $dir/index.txt # baza, w której przechowywane s

ą informacje

´ o wystawionych certyfikatach wraz ze statusem
certificate = $dir/cacert.pem # Certyfikat CA — do podpisu wniosków
serial = $dir/serial # plik pomocniczy z bie

Īącym numerem — inkrementowany

# po ka

Īdym wystawieniu certyfikatu

crl = $dir/crl.pem # bie

Īąca lista certyfikatów uniewaĪnionych

Upewniamy si

Ċ, czy istnieje katalog podany w zmiennej

dir

, czyli /etc/ssl, oraz wszystkie

jego podkatalogi. Je

Īeli nie, musimy je zaáoĪyü. Dla katalogu ssl/private ustaw upraw-

nienia tak, aby tylko u

Īytkownik root mógá do niego wejĞü.

Stwórz pliki /etc/ssl/index.txt oraz /etc/ssl/serial, u

Īywając komend podanych poniĪej.

root@ca:~# touch /etc/ssl/index.txt #(ma by

ü pusty)

root@ca:~# echo 00 > /etc/ssl/serial #(ma zawiera

ü wpis 00)

Przyst

Ċpujemy do generowania klucza prywatnego centrum certyfikacji CA. Jest to

czynno

Ğü jednorazowa, tzn. po wygenerowaniu klucza prywatnego CA, a nastĊpnie

odpowiadaj

ącego mu certyfikatu bĊdziesz uĪywaá ich do podpisywania innych certy-

fikatów. Pami

Ċtaj, aby zarchiwizowaü pliki z katalogu /etc/ssl w bezpiecznym miejscu.

B

Ċdąc w katalogu /etc/ssl, wydajemy nastĊpujące polecenie:

root@ca:/etc/ssl# openssl genrsa -des3 -out private/cakey.pem 1024
Generating RSA private key, 1024 bit long modulus
........++++++
...++++++
e is 65537 (0x10001)
Enter pass phrase for private/cakey.pem: <podaj hasđo klucza prywatnego CA>

Po potwierdzeniu has

áa do klucza prywatnego CA klucz zostanie zapisany w pliku

private/cakey.pem. Nie zapomnij has

áa do tego klucza, bĊdzie Ci nieraz potrzebne.

Kolejn

ą czynnoĞcią jest wygenerowanie certyfikatu CA. W tym celu wpisujemy na-

st

Ċpujące polecenie:

root@ca:/etc/ssl# openssl req -new -x509 -days 365 -key private/cakey.pem -out
´

cacert.pem

Zostaniemy poproszeni o podanie kilku pól zawartych w certyfikacie.

Country Name (2 letter code) [AU]:PL
State or Province Name (full name) [Some-State]:Slask

background image

18

Sieci VPN. Zdalna praca i bezpiecze

þstwo danych

Locality Name (eg, city) []:Gliwice
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Moja Firma Sp. z o.o.
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []: ca.firma.pl
Email Address []:

Znaczenie powy

Īszych pól jest raczej jasne, zwracam jedynie uwagĊ na pole

Common

Name

, które powinno zawiera

ü nazwĊ podmiotu — np. nazwĊ uĪytkownika lub jed-

nostki. W tym przypadku, gdy generujesz certyfikat dla CA, wpisz tutaj nazw

Ċ swojej

organizacji s

áownie (np. Firma SA) albo podaj np. nazwĊ domeny.

Po podaniu has

áa do klucza prywatnego certyfikat zostanie zapisany w pliku cacert.pem.

W powy

Īszym przykáadzie czas waĪnoĞci certyfikatu wynosiü bĊdzie 1 rok. MoĪna

go oczywi

Ğcie wydáuĪyü.

Na tym zako

ĔczyliĞmy tworzenie wáasnego urzĊdu CA. Mając pliki cakey.pem i cacert.

pem, czyli klucz prywatny i publiczny CA, mo

Īemy juĪ wystawiaü certyfikaty innym

podmiotom.

3.2.2. Tworzenie klucza prywatnego dla serwera

Celem stworzenia klucza prywatnego dla serwera wpisujemy nast

Ċpujące polecenie:

root@ca:/etc/ssl# openssl genrsa -des3 -out private/serverkey.pem 1024

Program OpenSSL zapyta o has

áo — bĊdzie to hasáo klucza prywatnego serwera. Klucz

prywatny zapisany zostanie w pliku private/serverkey.pem.

Nast

Ċpną czynnoĞcią jest wygenerowanie wniosku o wystawienie certyfikatu.

3.2.3. Generowanie wniosku

o wystawienie certyfikatu

root@ca:/etc/ssl# openssl req -new -key private/serverkey.pem -out serverreq.pem

B

Ċdziesz musiaá podaü hasáo klucza prywatnego serwera (to, które podawaáeĞ przed

chwil

ą). JeĪeli hasáo bĊdzie poprawne, zostaniesz zapytany o dane do wniosku, zgod-

nie z listingiem poni

Īej.

Country Name (2 letter code) [AU]:PL
State or Province Name (full name) [Some-State]:Slask
Locality Name (eg, city) []:Gliwice
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Moja Firma Sp. z o.o.
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []: server.firma.pl
Email Address []:

Zwracam tutaj uwag

Ċ na pole

Common Name

. W przypadku certyfikatów dla serwerów

pole to powinno zawiera

ü peáną nazwĊ domenową, pod jaką serwer dziaáa w internecie

background image

Rozdzia

ä 3.

i SSL jako standard bezpiecznego przesyäania danych

19

(tzw. FQDN). Jest to wa

Īne, poniewaĪ jeĞli pole

Common Name

nie pokrywa si

Ċ z nawą

domenow

ą, niektóre programy zgáaszają niezgodnoĞü certyfikatu z adresem serwera

(zw

áaszcza przeglądarki i klienty poczty).

Wniosek zostanie zapisany w pliku serverreq.pem. Kolejnym krokiem b

Ċdzie podpi-

sanie go przez nasze CA, czyli wystawienie mu certyfikatu.

3.2.4. Wystawianie certyfikatu dla serwera

Celem wystawienia certyfikatu dla podmiotu (serwera) musisz podpisa

ü jego wniosek.

Aby to uczyni

ü, wpisz poniĪsze polecenie.

root@ca:/etc/ssl# openssl ca -notext -in serverreq.pem -out servercert.pem

Zostaniesz zapytany o has

áo do klucza prywatnego CA cakey.pem (nie myl z hasáem

do klucza prywatnego serwera!).

Nast

Ċpnie OpenSSL pokaĪe szczegóáy certyfikatu i zapyta, czy chcesz go podpisaü.

Operacja podpisu wygl

ąda tak, jak pokazano na listingu 3.2.4.1.

Listing 3.2.4.1. Komunikaty pojawiaj

ące siĊ podczas wystawiania certyfikatu

Signature ok
Certificate Details:
Serial Number: 5 (0x5)
Validity
Not Before: Sep 17 12:59:06 2007 GMT
Not After : Sep 16 12:59:06 2008 GMT
Subject:
countryName = PL
stateOrProvinceName = Slask
organizationName = Moja Firma Sp. z o.o.
organizationalUnitName =
commonName = server.firma.pl
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
0E:CE:3E:06:C4:46:53:78:B0:05:AB:18:9B:BA:90:79:9B:A1:A5:C8
X509v3 Authority Key Identifier:
keyid:FC:B8:73:29:C6:E4:50:B2:3E:CE:0A:78:8C:62:90:A5:62:3C:87:1B
DirName:/C=PL/ST=Slask/L=Gliwice/O=Moja Firma Sp. z o.o./
CN=ca.firma.pl/emailAddress=admin@firma.pl
serial:97:1B:4E:CE:0B:5F:CE:E2
Certificate is to be certified until Sep 16 12:59:06 2008 GMT (365 days)
Sign the certificate? [y/n]: y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

background image

20

Sieci VPN. Zdalna praca i bezpiecze

þstwo danych

Mo

Īesz teraz podejrzeü zawartoĞü plików index.txt oraz serial, które zostaáy zaktuali-

zowane po podpisaniu wniosku. Uwa

Īaj na plik index.txt, jest on potrzebny przy od-

wo

áywaniu certyfikatu (generowaniu CRL).

Mamy ju

Ī parĊ kluczy dla serwera. Przy zestawianiu sieci VPN bĊdą potrzebne teĪ

klucze i certyfikaty dla u

Īytkowników. Generujemy je w sposób analogiczny jak dla

serwera, zgodnie z punktami 3.2.2 – 3.2.4. Zwró

ü uwagĊ, aby w polu

Common Name

podawa

ü dane jednoznacznie identyfikujące uĪytkownika — np. jego login korpora-

cyjny. Niektóre programy po

Common Name

identyfikuj

ą uĪytkowników.

Jeszcze jeden szczegó

á dotyczący hasáa zabezpieczającego klucz prywatny. W mo-

mencie uruchamiania aplikacji korzystaj

ącej z tego klucza bĊdziemy zmuszeni wpi-

sywa

ü hasáo z klawiatury. W praktyce na serwerach aplikacja czĊsto dziaáa jako usáuga

uruchamiana w trakcie startu systemu i oczekiwanie na wpisanie has

áa jest niezado-

walaj

ącym rozwiązaniem. W takich sytuacjach moĪemy Ğciągnąü hasáo z klucza pry-

watnego. Nale

Īy jednak pamiĊtaü, aby dostĊp do klucza miaá jedynie administrator

serwera (root). Komenda przedstawiona w punkcie 3.2.5 umo

Īliwia ĞciągniĊcie hasáa

z klucza prywatnego.

3.2.5.

ćciñganie hasäa z klucza prywatnego serwera

# openssl rsa -in private/serverkey.pem -out private/serverkey.pem_bezhasla

Nie zalecam natomiast

Ğciągania haseá z kluczy prywatnych uĪytkowników zdalnych.

Jest to dodatkowe zabezpieczenie. W razie kradzie

Īy laptopa dostĊp do VPN nie bĊ-

dzie mo

Īliwy bez znajomoĞci hasáa.

3.2.6. Uniewa

Ĕnianie certyfikatów

Pr

Ċdzej czy póĨniej zajdzie potrzeba uniewaĪnienia któregoĞ z certyfikatów. Klasycznym

przyk

áadem jest odejĞcie pracownika lub kradzieĪ laptopa. Do uniewaĪnienia certyfi-

katu s

áuĪy parametr

revoke

programu OpenSSL. Przyk

áadowo aby przystąpiü do unie-

wa

Īnienia certyfikatu osobie Jan Kowalski (jkowalskicert.pem), wpisz polecenie:

root@srv:/etc/ssl# openssl ca -revoke jkowalskicert.pem

OpenSSL zapyta o has

áo klucza CA i po podaniu prawidáowego uniewaĪni certyfikat:

Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for /etc/ssl/private/cakey.pem:
DEBUG[load_index]: unique_subject = "yes"
Revoking Certificate 04.
Data Base Updated

Musimy jeszcze wygenerowa

ü listĊ CRL, w której zapisane są uniewaĪnione certyfi-

katy. Robimy to zgodnie z punktem 3.2.7.

background image

Rozdzia

ä 3.

i SSL jako standard bezpiecznego przesyäania danych

21

3.2.7. Generowanie listy CRL

(uniewa

Ĕnionych certyfikatów)

root@ca:/etc/ssl# openssl ca -gencrl -out crl.pem

Plik crl.pem nale

Īy przegraü póĨniej na wáaĞciwy serwer i wskazaü w aplikacji korzy-

staj

ącej z certyfikatów (szczegóáy w dalszej czĊĞci ksiąĪki).

3.2.8. Ró

Ĕne formaty certyfikatów

Nale

Īy wspomnieü jeszcze o róĪnych formatach plików, w których zapisywane są

klucze i certyfikaty. Niestety, nie ma tu jednego standardu i ró

Īni producenci prefe-

ruj

ą róĪne formaty. Niemniej za pomocą programu OpenSSL moĪesz je konwertowaü

z jednego formatu na inny. Klucze prywatne najcz

ĊĞciej zapisywane są w formie PEM

lub DER (binarny). Dla certyfikatów u

Īywane są formaty PEM, DER oraz PKCS12.

Aplikacje bazuj

ące na bibliotece openssl, czyli wszystkie uniksowe, uĪywają na ogóá

formatu PEM.

Formaty DER i PKCS12 rozpowszechnione s

ą w systemach Microsoftu. Format PKCS12

przechowuje w jednym pliku klucz prywatny zabezpieczony has

áem i odpowiadający

mu certyfikat. Poprzednikiem PKCS12 by

á przestarzaáy obecnie format PFX; jakkol-

wiek firma Microsoft u

Īywa rozszerzeĔ plików PFX dla formatu PKCS12.

Aby przekonwertowa

ü certyfikat z jednej postaci na drugą, musisz przekazaü progra-

mowi OpenSSL odpowiednie parametry. W tabeli 3.2.8.1 przedstawiono sk

áadniĊ pro-

gramu dla kilku popularnych przekszta

áceĔ.

Tabela 3.2.8.1. Sk

áadnia programu OpenSSL potrzebna do konwersji certyfikatów

Format wej

Ĉciowy

Format wyj

Ĉciowy

Sk

äadnia OpenSSL

PEM

DER

openssl x509 -in cert.pem -out cert.der

´

-outform DER

DER

PEM

openssl x509 -in cert.der inform DER

´

–out cert.pem -outform PEM

DER key

PEM key

openssl rsa in input.key inform DER out

´

output.key outform PEM

PEM

PKCS#12

openssl pkcs12 -export -out cert.p12 -inkey

´

userkey.pem -in usercert.pem

PKCS#12

PEM CERT

openssl pkcs12 -clcerts -nokeys –in cert.p12

´

-out usercert.pem

PKCS#12

PEM KEY

openssl pkcs12 -nocerts -in cert.p12

´

–out userkey.pem

Aby wy

Ğwietliü informacjĊ o certyfikacie, np. informacje podane podczas tworzenia

wniosku, nale

Īy uruchomiü program OpenSSL z nastĊpującymi parametrami:

ca:/etc/ssl# openssl x509 -in servercert.pem -subject –noout
subject= /C=PL/ST=Slask/O=Helion/CN=server1

background image

22

Sieci VPN. Zdalna praca i bezpiecze

þstwo danych

Je

Ğli dodasz parametr

-issuer

, OpenSSL zwróci tak

Īe informacjĊ o wystawcy (CA):

ca:/etc/ssl# openssl x509 -in servercert.pem -issuer -subject –noout
subject= /C=PL/ST=Slask/O=Helion/CN=server1
issuer= /C=PL/ST=Slask/L=Gliwice/O=Helion/CN=CA

Je

Īeli certyfikat jest w formie binarnej (DER), do powyĪszej skáadni naleĪy dodaü pa-

rametr

-inform DER

.

3.3. Kompilacja biblioteki openssl

ze

Ēródeä

Ko

Ĕcząc rozdziaá dotyczący biblioteki openssl, zamieszczam instrukcjĊ opisującą, jak

skompilowa

ü i zainstalowaü bibliotekĊ „rĊcznie”. Powodów, dla których miaábyĞ sa-

modzielnie kompilowa

ü program OpenSSL, moĪe byü kilka. Najbardziej prawdopo-

dobny z nich to ch

Ċü podania przy kompilacji jakiejĞ opcji, której nie przewidzieli

twórcy dystrybucji Twojego systemu. Innym powodem mo

Īe byü chĊü zaktualizowania

istniej

ącej wersji w dystrybucjach, które nie mają dobrze zorganizowanego systemu

aktualizacji (np. Slackware ;-)).

Je

Ğli decydujesz siĊ na wáasną kompilacjĊ, musisz sukcesywnie aktualizowaü bibliotekĊ

w razie pojawienia si

Ċ wykrytych báĊdów.

W dystrybucji Debian, której u

Īywam, paczka SSL dostarczana wraz z systemem nie

by

áa skompilowana z obsáugą biblioteki zlib, w związku z czym nie mogáem uĪyü tego

algorytmu kompresji w programie Stunnel.

Je

Ğli z jakichĞ powodów chcesz skompilowaü bibliotekĊ openssl, poniĪej w punktach

zamieszczam opis, jak to zrobi

ü.

1.

Pobierz ze strony http://www.openssl.org/source/

Ĩródáa najnowszej wersji

pakietu i zapisz w katalogu /usr/src/.

2.

Porównaj warto

Ğü MD5 pliku pobranego z sieci (polecenie

md5sum

)

z warto

Ğcią udostĊpnioną na stronie openssl.org.

3.

Rozpakuj zawarto

Ğü archiwum poleceniem

tar zxf openssl-<nr_wersji>.tar.gz

.

4.

Przejd

Ĩ do katalogu openssl-<nr_wersji>.

5.

Przed przyst

ąpieniem do kompilacji musisz ustaliü, w którym katalogu

program ma zosta

ü zainstalowany oraz z jakimi dodatkowymi opcjami,

podaj

ąc je jako parametry skryptu ./config. W poniĪszym przykáadzie

skompilujemy program z obs

áugą biblioteki zlib, a wynikowy program

zostanie zainstalowany w katalogu /usr/local/openssl. Wpisz polecenie:

srv:~# ./config --prefix=/usr/local zlib

6.

Je

Ğli skrypt ./config nie zgáosi báĊdu, moĪemy przejĞü do wáaĞciwej kompilacji

programu. W tym celu wpisz polecenie

make

.

background image

Rozdzia

ä 3.

i SSL jako standard bezpiecznego przesyäania danych

23

7.

Proces kompilacji mo

Īe potrwaü kilka minut, po jego zakoĔczeniu moĪesz

przej

Ğü do ostatniego kroku — instalacji skompilowanych plików we wáaĞciwych

katalogach.

8.

Aby zako

Ĕczyü instalacjĊ, wpisz polecenie

make install

.


Wyszukiwarka

Podobne podstrony:
Sieci VPN Zdalna praca i bezpieczenstwo danych Wydanie II rozszerzone
inne sieci vpn zdalna praca i bezpieczenstwo danych marek serafin ebook
Sieci VPN Zdalna praca i bezpieczenstwo danych Wydanie II rozszerzone
informatyka sieci vpn zdalna praca i bezpieczenstwo danych wydanie ii rozszerzone marek serafin eboo
Bezpieczeństwo danych, INFORMATYKA, Sieci, S O i S K I sem
Bezpieczeństwo danych, INFORMATYKA, Sieci, S O i S K I sem
Bezpieczeństwo danych w sieci
Bezpieczeństwo danych w sieci(1)
techniki budowy sieci vpn, poniszczuk
26(2009) art27 Praca bezpie
WYBRANE ASPEKTY BEZPIECZEŃSTWA DANYCH BANKOWYCH

więcej podobnych podstron