Sieci VPN. Zdalna praca
i bezpieczeñstwo danych.
Wydanie II rozszerzone
Autor:
Marek Serafin
ISBN: 978-83-246-2474-4
Format: 158×235, stron: 248
Poznaj dzia³anie i wykorzystaj w praktyce metody tworzenia tuneli VPN
• Na czym oparty jest standard SSL
• Jak dzia³a protokó³ IPSec
• Jak skonfigurowaæ tunele VPN w systemach Linux, Windows i routerach Cisco?
• Jak w bezpieczny sposób po³¹czyæ oddzia³y firmy?
Rozwój sieci pozwoli³ wielu firmom i organizacjom na sprawn¹ i szybk¹ komunikacjê
i tym samym otworzy³ nowe 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. Jeœli chcesz stworzyæ w³aœnie tak¹
mo¿liwoœæ bezpiecznej choæ zdalnej pracy w Twojej firmie, z tego podrêcznika dowiesz
siê jak to zrobiæ!
Ksi¹¿ka „Sieci VPN. Zdalna praca i bezpieczeñstwo danych. Wydanie II” to drugie,
poszerzone wydanie praktycznego przewodnika dla administratorów sieci firmowych,
którzy zajmuj¹ siê wdra¿aniem rozwi¹zañ umo¿liwiaj¹cych pracê na odleg³oœæ. Ten
bestsellerowy podrêcznik opisuje wszystkie aspekty konfigurowania tuneli VPN
z wykorzystaniem protoko³ów IPSec oraz SSL w systemach Linux, Windows oraz
routerach Cisco. Czytaj¹c j¹ poznasz standard SSL, zasady generowania certyfikatów,
a tak¿e zrozumiesz zasadê dzia³ania protoko³u IPSec. 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
• Generowanie kluczy i certyfikatów
• Zapewnianie pracownikom zdalnego dostêpu do zasobów firmy
• Instalacja i konfiguracja programu OpenVPN
• Tunele VPN w urz¹dzeniach mobilnych
• Implementacja IPSEC/L2TP w systemie Linux
• Konfiguracja IPSec w routerach i Cisco
• Konfiguracja VPN w systemach Windows Server
• Metody ³¹czenia oddzia³ów firmy w systemach Linux, Cisco, Windows
Otwórz bezpieczny, zdalny dostêp do sieci!
Spis tre
Ĉci
Przedmowa ..................................................................................................9
Rozdzia
ä 1. Wstöp ........................................................................................................11
Rozdzia
ä 2. SäaboĈè protokoäów sieciowych i zwiñzane z tym problemy .......................13
Rozdzia
ä 3. SSL jako standard bezpiecznego przesyäania danych .................................15
3.1. Historia i znaczenie protoko
áu SSL ......................................................................... 15
3.1.1. Przebieg nawi
ązania poáączenia SSL ............................................................ 16
3.1.2. Znaczenie zaufanego certyfikatu ................................................................... 17
3.2. Generowanie certyfikatów przy u
Īyciu programu OpenSSL .................................. 17
3.2.1. Tworzenie w
áasnego CA ............................................................................... 18
3.2.2. Tworzenie klucza prywatnego dla serwera .................................................... 20
3.2.3. Generowanie wniosku o wystawienie certyfikatu ......................................... 20
3.2.4. Wystawianie certyfikatu dla serwera ............................................................. 21
3.2.5.
ĝciąganie hasáa z klucza prywatnego serwera ............................................... 22
3.2.6. Uniewa
Īnianie certyfikatów .......................................................................... 22
3.2.7. Generowanie listy CRL (uniewa
Īnionych certyfikatów) .............................. 22
3.2.8. Sprawdzenie wa
ĪnoĞci certyfikatu ................................................................ 23
3.2.9. Ró
Īne formaty certyfikatów .......................................................................... 23
3.3. Kompilacja biblioteki OpenSSL ze
Ĩródeá .............................................................. 24
3.4. Graficzne nak
áadki do programu OpenSSL ............................................................. 25
3.5. Generowanie certyfikatów w
Ğrodowisku Windows Server 2003 .............................. 27
Rozdzia
ä 4. Tunelowanie portów ...................................................................................33
4.1. Program Stunnel ...................................................................................................... 34
4.1.1. stunnel.conf ................................................................................................... 37
4.1.2. Przyk
áad 1 ..................................................................................................... 39
4.1.3. Przyk
áad 2 ..................................................................................................... 41
4.2. Tunele SSH ............................................................................................................. 43
4.2.1. Przyk
áad 1 ..................................................................................................... 43
4.2.2. Przyk
áad 2 — SSH jako Socks Proxy ............................................................ 44
4.2.3. Przyk
áad 3 — tunele z przekazywaniem zdalnym ......................................... 45
4.2.4. Przyk
áad 4 — tunel UDP po SSH .................................................................. 48
Rozdzia
ä 5. OpenVPN — praktyczna implementacja tuneli VPN ...................................51
5.1. Instalacja ................................................................................................................. 51
5.1.1. Instalacja w systemie Linux Debian .............................................................. 52
5.1.2. Instalacja przez kompilacj
Ċ Ĩródeá programu (Linux) ................................... 52
5.1.3. Instalacja pod systemami MS Windows ........................................................ 56
6
Spis tre
Ĉci
5.2. Konfiguracja OpenVPN .......................................................................................... 58
5.3. Praktyczny przyk
áad — zdalny dostĊp do zasobów firmy dla pracowników .......... 59
5.3.1. Generowanie certyfikatów SSL ..................................................................... 60
5.3.2. Konfiguracja po stronie serwera .................................................................... 61
5.3.3. Uruchomienie us
áugi serwera OpenVPN ....................................................... 63
5.3.4. Konfiguracja klienta ...................................................................................... 64
5.4. Bardziej z
áoĪona konfiguracja z wieloma uĪytkownikami ...................................... 67
5.4.1. Przypisywanie sta
áych adresów IP uĪytkownikom ........................................ 68
5.4.2. Pliki ustawie
Ĕ uĪytkowników w katalogu ccd ............................................... 68
5.4.3. Tworzenie pliku dostep.txt ............................................................................ 69
5.4.4. Testowanie .................................................................................................... 70
5.4.5. Logowanie zdarze
Ĕ do pliku ......................................................................... 71
5.5. Uniewa
Īnianie certyfikatów .................................................................................... 72
5.6.
àączenie oddziaáów firmy ....................................................................................... 74
5.6.1. Przyk
áad rozwiązania z routerem .................................................................. 75
5.6.2. Tunel VPN z mostkowaniem ........................................................................ 79
5.6.3. Tunel VPN z mostkowaniem w Windows XP .............................................. 84
5.7. OpenVPN w Windows Server z uwierzytelnianiem przez Active Directory .......... 87
5.7.1. Konfiguracja serwera .................................................................................... 87
5.7.2. Konfiguracja klienta ...................................................................................... 89
5.8. OpenVPN w systemach Windows Mobile (PDA) ................................................... 91
5.8.1. Instalacja ....................................................................................................... 91
Rozdzia
ä 6. IPSec .........................................................................................................95
6.1. IPSec a translacja adresów (maskarada) .................................................................. 98
Rozdzia
ä 7. IPSec w systemie Linux .......................................................................... 101
7.1. IPSec — przygotowanie
Ğrodowiska w systemie Linux ........................................ 101
7.2. Instalacja programu OpenSWAN .......................................................................... 102
7.3. Praktyczny przyk
áad — brama IPSec/VPN dla uĪytkowników mobilnych ........... 104
7.3.1. Konfiguracja bramy IPSec (Linux) ............................................................. 105
7.3.2. Uruchomienie tunelu ................................................................................... 109
7.4. Konfiguracja klienta Windows .............................................................................. 110
7.5. Debugowanie po
áączenia ...................................................................................... 113
7.6. Konfiguracja z uwierzytelnieniem przez certyfikaty ............................................. 114
7.6.1. Konfiguracja OpenSWAN z wykorzystaniem certyfikatów ........................ 115
7.7. Import certyfikatów w systemie Windows ............................................................ 116
7.7.1. Konfiguracja po
áączenia .............................................................................. 121
7.8. Dost
Ċp z urządzeĔ PDA — Windows Mobile 2003, 2005, 2006 ............................. 124
7.9.
àączenie oddziaáów firmy tunelem IPSec ............................................................. 125
Rozdzia
ä 8. Cisco — äñczenie oddziaäów firmy. Site-to-Site IPSec Tunnel .................. 131
8.1. Access-listy w routerach Cisco ............................................................................. 133
8.2.
àączenie oddziaáów firmy — praktyczny przykáad ............................................... 135
8.3. Debugowanie po
áączenia ...................................................................................... 138
8.4.
àączenie oddziaáów firmy z tunelowaniem GRE .................................................. 141
8.5. IPSec z GRE — konfiguracja z trzema routerami ................................................. 145
8.6.
àączenie oddziaáów firmy z mostkowaniem ......................................................... 152
8.7.
àączenie oddziaáów firmy Cisco-Linux ................................................................ 154
Rozdzia
ä 9. Cisco — zdalny dostöp VPN dla pracowników ........................................ 159
9.1. Zdalny dost
Ċp pracowników — konta przechowywane lokalnie na routerze ........ 159
9.2. Konfiguracja klienta VPN ..................................................................................... 163
9.3. Zdalny dost
Ċp pracowników — uwierzytelnianie przez RADIUS ........................ 164
9.3.1. Instalacja MS IAS ....................................................................................... 164
9.3.2. Konfiguracja routera ................................................................................... 169
Spis tre
Ĉci
7
9.4. Uprawnienia do zasobów w sieci wewn
Ċtrznej ..................................................... 170
9.4.1. Ruch przechodz
ący przez tunel VPN (split tunneling) ................................ 171
9.4.2. Filtracja ruchu w tunelu VPN ...................................................................... 172
Rozdzia
ä 10. Cisco ASA .............................................................................................. 175
10.1. ASA jako brama VPN dla pracowników ............................................................ 176
10.2. ASA jako brama SSL-VPN (WEB-VPN) ........................................................... 181
10.2.1. Konfiguracja SSL-VPN w ASA przez SDM .......................................... 181
10.2.2. Po
áączenie testowe .................................................................................. 185
Rozdzia
ä 11. Windows Server jako brama VPN ............................................................ 189
11.1. Konfiguracja us
áugi Routing i dostĊp zdalny ...................................................... 191
11.2. Konfiguracja klienta ........................................................................................... 197
11.3. Dost
Ċp do VPN na podstawie czáonkostwa w grupie w Windows 2003 ............. 200
11.4. Dost
Ċp do VPN na podstawie czáonkostwa w grupie w Windows 2008 ............. 205
11.5. Tablica routingu po stronie klienta ..................................................................... 208
11.6. Firewall — filtrowanie ruchu wewn
ątrz tunelu VPN ......................................... 211
11.6.1. Post
Ċpowanie w systemie Windows 2003 .............................................. 211
11.6.2. Post
Ċpowanie w systemie Windows 2008 .............................................. 212
11.6.3. Dodawanie nowej regu
áy filtru ............................................................... 213
11.7. SSTP — nowy protokó
á dostĊpu VPN ................................................................ 214
Rozdzia
ä 12. ãñczenie oddziaäów firmy
z wykorzystaniem systemów Windows Server 2003 ............................... 215
12.1. Konfiguracja lokalizacji 1 — Gliwice ................................................................ 216
12.2. Konfiguracja lokalizacji 2 — Bytom .................................................................. 220
12.3. Konfiguracja zabezpiecze
Ĕ IPSec ....................................................................... 221
12.4. Debugowanie po
áączenia .................................................................................... 222
Rozdzia
ä 13. Poäñczenia VPN w systemach Windows Mobile ...................................... 223
13.1. Konfiguracja Windows Mobile z uwierzytelnianiem
przez klucz wspó
ádzielony (PSK) ....................................................................... 223
13.2. Konfiguracja Windows Mobile z certyfikatami .................................................. 224
Rozdzia
ä 14. Konfiguracja poäñczenia IPSec w routerach Linksys................................ 227
14.1. Po
áączenie typu Site-to-Site.................................................................................. 228
14.1.1. Wspó
ápraca z innymi urządzeniami .......................................................... 229
14.2. Zdalny dost
Ċp dla pracowników ........................................................................... 230
Rozdzia
ä 15. Podsumowanie ........................................................................................ 233
15.1. Przydatne linki...................................................................................................... 234
Skorowidz ............................................................................................... 237
Rozdzia
ä 7.
IPSec w systemie Linux
7.1. IPSec — przygotowanie
Ĉrodowiska w systemie Linux
W niniejszym punkcie omówi
Ċ przygotowanie systemu do dziaáania z protokoáem IPSec.
Najprawdopodobniej nie obejdzie si
Ċ bez rĊcznej kompilacji niektórych skáadników, dlatego
te
Ī zakáadam, Īe uĪywasz jakiejĞ aktualnej wersji Linuksa oraz masz zainstalowane
narz
Ċdzia do kompilacji programów (
gcc
,
make
itd.).
Z punktu widzenia systemu operacyjnego po
áączenie IPSec moĪna podzieliü na dwie czĊĞci:
1.
Cz
ĊĞü odpowiedzialną za zarządzanie pakietami (protokóá AH/ESP)
— tj. enkapsulacj
Ċ pakietów IP w pakiety IPSec, zabezpieczanie sum kontrolnych
itd. Z racji tego,
Īe operacje te muszą byü bardzo wydajne, ich obsáugą zajmuje
si
Ċ jądro systemu.
2.
Cz
ĊĞü odpowiedzialną za zestawienie poáączenia i póĨniejszą wymianĊ kluczy
(protokó
á IKE). Obsáugą tych funkcji zajmuje siĊ program (demon) dziaáający
w warstwie u
Īytkownika — w systemie Linux to demon Pluto (wchodzący
w sk
áad OpenSWAN).
W zwi
ązku z powyĪszym jądro systemu musi obsáugiwaü protokóá IPSec. Dla systemu
Linux powsta
áy dwa niezaleĪne stosy obsáugi IPSec — starszy KLIPS oraz nowszy
NETKEY. Stos KLIPS, rozwijany od prawie dziesi
Ċciu lat, dobrze sprawdzony, dziaáa
z j
ądrami serii 2.2, 2.4, 2.6. Niestety, kod stosu KLIPS nie wchodzi w skáad Ĩródeá jądra
Linuksa, dlatego konieczne jest na
áoĪenie áatek na Ĩródáa i przekompilowanie jądra. Ze
stosem KLIPS jest tak
Īe problem w przypadku poáączeĔ zza NAT-a — aby udaáo siĊ
zestawi
ü takie poáączenie IPSec, potrzebna jest jeszcze jedna áatka — NAT-Traversal.
Wspomnianych wad nie posiada stos NETKEY, dost
Ċpny początkowo tylko dla jąder
2.6, a obecnie tak
Īe dla 2.4. W przykáadach uĪywaü bĊdziemy stosu NETKEY.
102
Sieci VPN. Zdalna praca i bezpiecze
þstwo danych
W popularnych dystrybucjach systemu Linux domy
Ğlnie dostarczane są wszystkie po-
trzebne modu
áy. SprawdĨ poleceniem
find
, czy rzeczywi
Ğcie masz w systemie odpo-
wiednie pliki. Wpisz polecenie:
root@server:~# find /lib/modules/`uname -r` -name 'esp4*'
Program find powinien odnale
Ĩü plik moduáu jądra o nazwie
esp4.ko
lub
esp4.o
. Je
Ğli
plik istnieje, oznacza to,
Īe twórcy dystrybucji dodali moduáy IPSec. JeĞli kompilowaáeĞ
kernela z w
áasnymi opcjami i nie masz moduáów IPSec, bĊdziesz musiaá przekompilowaü
j
ądro od nowa. PoniĪej podajĊ listĊ opcji, które musisz dodaü jako moduáy. Nazwy w na-
wiasach kwadratowych to dok
áadne nazwy z pliku konfiguracyjnego jądra
.config
.
Uruchom program
make menuconfig
i wybierz poni
Īsze opcje konfiguracyjne:
W ga
áĊzi Networking --> Networking options ---> wybierz
IPsec user configuration interface (NEW) [CONFIG_XFRM_USER]
PF_KEY sockets [CONFIG_NET_KEY]
IP: AH transformation [CONFIG_INET_AH]
IP: ESP transformation [CONFIG_INET_ESP]
IP: IPComp transformation [CONFIG_INET_IPCOMP]
IP: IPsec transport mode [CONFIG_INET_XFRM_MODE_TRANSPORT]
IP: IPsec tunnel mode [CONFIG_INET_XFRM_MODE_TUNNEL]
IP: advanced router [CONFIG_IP_ADVANCED_ROUTER]
Packet socjet [CONFIG_PACKETT]
W ga
áĊzi Device Drivers ---> Character devices ---> wybierz:
Legacy (BSD) PTY support [CONFIG_LEGACY_PTYS]
W ga
áĊzi Device Drivers ---> Network device support ---> wybierz:
PPP (point-to-point protocol) support [CONFIG_PPP]
PPP support for sync tty ports [CONFIG_PPP_SYNC_TTY]
PPP Deflate compression [CONFIG_PPP_DEFLATE]
PPP BSD-Compress compression [CONFIG_PPP_BSDCOMP]
Zapisz zmiany w pliku konfiguracyjnym j
ądra, a nastĊpnie przekompiluj jądro.
7.2. Instalacja programu OpenSWAN
OpenSWAN to implementacja protoko
áu IPSec w systemie Linux rozwijana przez grupĊ
deweloperów, którzy wcze
Ğniej pracowali nad projektem FreeSwan. W trakcie prac nad
projektem FreeSwan dosz
áo do konfliktu i czĊĞü deweloperów rozpoczĊáa pracĊ nad
OpenSWAN. FreeSwan nie jest ju
Ī zresztą rozwijany i nie zalecam uĪywania go (swego
czasu by
á bardzo niestabilny, czego osobiĞcie doĞwiadczyáem).
Je
Īeli Twoja dystrybucja wspiera automatyczną instalacjĊ pakietów, moĪesz zainstalowaü
program OpenSWAN z gotowych paczek. W przypadku Debiana mo
Īesz zainstalowaü
pakiet, u
Īywając programu
apt
.
Rozdzia
ä 7.
i IPSec w systemie Linux
103
Instalacja programu ze
Ĩródeá przebiega nastĊpująco:
1.
ĝciągnij Ĩródáa programu OpenSWAN ze strony projektu: http://www.openswan.org/.
2.
Sprawd
Ĩ podpis cyfrowy pakietu.
3.
Rozpakuj archiwum i wpisz polecenie
make programs install
Je
Īeli podczas kompilacji programu zostanie zgáoszony báąd, upewnij siĊ, czy masz
zainstalowany pakiet z nag
áówkami biblioteki arytmetycznej GMP (GNU Multiple
Precision Arithmetic Library). W przypadku dystrybucji Debian odpowiedni pakiet na-
zywa si
Ċ
libgmp3-dev
. Dla innych dystrybucji paczka powinna nazywa
ü siĊ podobnie
— wa
Īne, aby byá to pakiet „deweloperski”, tzn. zawieraá pliki nagáówkowe.
Je
Ğli kompilacja przebiegnie prawidáowo, w systemie zostanie zainstalowany program za-
rz
ądzający poáączeniami IPSec (/usr/local/sbin/ipsec) oraz demon protokoáu IKE — Pluto.
Ostatnim (opcjonalnym) sk
áadnikiem, który musisz zainstalowaü, jest serwer L2TP
— najlepiej xl2tpd. Napisa
áem: opcjonalnym, gdyĪ nie wszystkie rozwiązania IPSec
u
Īywają tunelowania L2TP. Niemniej implementacja IPSec firmy Microsoft wbudo-
wana w ka
Īdy z systemów Windows wymaga do dziaáania wáaĞnie protokoáu L2TP.
Je
Īeli zamierzasz áączyü siĊ z bramą VPN, uĪywając wbudowanych w Windows mecha-
nizmów IPSec, musisz zainstalowa
ü i skonfigurowaü demon L2TP.
Protokó
á L2TP umoĪliwia przesyáanie ramek poáączenia PPP poprzez protokóá IP
(internet), które to po
áączenie normalnie realizowane jest tylko w bezpoĞrednim poáą-
czeniu punkt-punkt (modemy, linie szeregowe itd.). Samo po
áączenie PPP operuje w war-
stwie drugiego modelu OSI i s
áuĪy do enkapsulacji protokoáów warstwy wyĪszej (IP,
IPX itd.), zapewniaj
ąc jednoczeĞnie uwierzytelnianie oraz kompresjĊ. Poáączenie proto-
ko
áu L2TP z PPP umoĪliwia tunelowanie protokoáu IP w ramach innego poáączenia
IP, dlatego cz
Ċsto wykorzystywane jest w sieciach VPN. Wykorzystanie protokoáu PPP
daje tak
Īe dodatkowe moĪliwoĞci, jak np. przydzielanie adresów IP tunelowi, przeka-
zywanie parametrów sieciowych, takich jak DNS, WINS itp.
Aby zainstalowa
ü demon L2TP, wykonaj nastĊpujące czynnoĞci:
1.
Pobierz
Ĩródáa pakietu ze strony http://www.xelerance.com/software/xl2tpd/.
2.
Sprawd
Ĩ podpis pakietu.
3.
Rozpakuj archiwum i wpisz komend
Ċ
make
Z kompilacj
ą tego programu nie powinno byü problemów.
4.
Wpisz polecenie
make install
, aby zainstalowa
ü skompilowany program
we w
áaĞciwych katalogach (/usr/sbin/xl2tpd).
Naturalnie aby tunelowanie po
áączenia PPP przez protokóá L2TP mogáo dziaáaü, po-
trzebny jest tak
Īe demon PPP (sprawdĨ obecnoĞü polecenia
pppd
). Jednak
Īe pakiet ten
instalowany jest chyba we wszystkich dystrybucjach Linuksa.
104
Sieci VPN. Zdalna praca i bezpiecze
þstwo danych
7.3. Praktyczny przyk
äad
— brama IPSec/VPN
dla u
Ĕytkowników mobilnych
W niniejszym punkcie stworzymy bram
Ċ VPN dla uĪytkowników mobilnych áączących siĊ
zdalnie z siedzib
ą firmy. UĪytkownicy uĪywają na laptopach systemu Microsoft Windows
XP i wbudowanego we
Ĕ „klienta” IPSec. Analogicznie jak w przykáadzie z rozdziaáu 5.
(brama OpenVPN), u
Īytkownicy powinni mieü dostĊp do kilku serwerów w sieci LAN.
Adresy IP u
Īytkowników mobilnych nie są znane, mogą oni áączyü siĊ z róĪnych miejsc,
tak
Īe zza maskarady (poáączenia GPRS, hotspot itd.). Po stronie bramy VPN wykorzystamy
system Linux (j
ądro 2.6 ze stosem IPSec NETKEY) oraz oprogramowanie OpenSWAN.
Konfiguracj
Ċ przedstawia rysunek 7.3.1.
Rysunek 7.3.1.
Brama IPSec
dla u
Īytkowników
mobilnych
W tym przypadku do uwierzytelniania u
Ĕytkowników powinniĈmy uĔyè certyfikatów,
jednak
Ĕe w pierwszej kolejnoĈci wykorzystamy klucz wspóädzielony, a nastöpnie roz-
budujemy konfiguracj
ö o certyfikaty. Zalecam stosowanie takiej kolejnoĈci, gdyĔ
konfiguracja oparta na kluczu wspó
ädzielonym jest prostsza, a ponadto warto
przetestowa
è poäñczenie IPSec, eliminujñc wszelkie moĔliwe komplikacje. Jest to
szczególnie wa
Ĕne z tego powodu, Ĕe instalacja certyfikatów po stronie systemów
Windows jest troch
ö skomplikowana (szczegóäy w nastöpnych punkach rozdziaäu).
Rozdzia
ä 7.
i IPSec w systemie Linux
105
7.3.1. Konfiguracja bramy IPSec (Linux)
Zainstaluj oprogramowanie OpenSWAN oraz demona xl2tpd zgodnie z opisem za-
wartym w poprzednim punkcie.
Konfiguracj
Ċ zaczniemy od przygotowania demona L2TP. Utwórz plik konfiguracyjny
/etc/l2tp/l2tpd.conf.
Zawarto
Ğü pliku konfiguracyjnego l2tpd.conf powinna wyglądaü nastĊpująco (patrz listing
7.3.1.1):
Listing 7.3.1.1. Plik konfiguracyjny demona L2TP
[global]
listen-addr = 85.98.29.251 ;adres internetowy bramy
port = 1701 ;port — zostaw domy
Ğlny
[lns default]
ip range = 192.168.10.198-192.168.10.250 ;pula IP dla klientów
local ip = 85.98.29.251 ;IP lokalny po
áączenia PPP
require chap = yes ;wymagamy uwierzytelniania CHAP
;refuse pap = yes
require authentication = yes
name = ipsec
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd ;pozosta
áy
length bit = yes
Zauwa
Ī, Īe wymóg uwierzytelniania dotyczy tutaj poáączenia PPP, a nie L2TP. De-
mon L2TP ma mo
ĪliwoĞü przeprowadzania swojego uwierzytelniania, ale nie jest to
w tym przypadku potrzebne.
Teraz utwórzmy plik z opcjami programu
pppd
— /etc/ppp/options.l2tpd. Przyk
áadową
konfiguracj
Ċ przedstawiono na listingu 7.3.1.2.
Listing 7.3.1.2. Konfiguracja po
áączenia PPP
ipcp-accept-local ; pppd zaakceptuje lokalny adres po
áączenia
ipcp-accept-remote ; jw. dla adresu drugiej strony
require-mschap-v2 ; wymagamy uwierzytelniania MSCHAP wersji drugiej
auth
proxyarp
idle 1800
mtu 500
mru 500
# eof
Nast
Ċpnie konfigurujemy plik z danymi uwierzytelniającymi dla PPP — /etc/ppp/
chap-secrets
# Secrets for authentication using CHAP
# client server secret IP addresses
marek * "test" *
gdzie
marek
to nazwa u
Īytkownika, a
"test"
— has
áo.
106
Sieci VPN. Zdalna praca i bezpiecze
þstwo danych
W sytuacji gdyby PPP by
áo jedynym uwierzytelnianiem, mógábyĞ wpisaü w pliku
chap-secrets
wszystkich u
Īytkowników. Nie ma to jednak sensu, gdyĪ podstawowym
uwierzytelnianiem b
Ċdą certyfikaty X.509. Niemniej konfiguracjĊ PPP moĪna wykorzystaü
do przypisywania sta
áych adresów IP dla poszczególnych klientów, np.:
jacek * "test12" 192.168.10.220
michal * "test12" 192.168.10.221
Ostatni element przygotowania bramy IPSec to w
áaĞciwa konfiguracja programu
OpenSWAN, która sprowadza si
Ċ w najprostszym przypadku do edycji dwóch plików
— ipsec.conf oraz ipsec.secrets.
Na listingu 7.3.1.3 przedstawiony zosta
á plik ipsec.conf. W tym przypadku metodą
uwierzytelniania jest klucz wspó
ádzielony, a klientami mogą byü uĪytkownicy Windowsa
(XP, Vista) znajduj
ący siĊ za NAT-em.
Listing 7.3.1.3. Konfiguracja programu OpenSWAN z u
Īyciem PSK
version 2.0
config setup
interfaces=%defaultroute
plutodebug=none
forwardcontrol=yes
nat_traversal=yes
virtual_private=%v4:10.0.0.0/8,%v4:172.16.0.0/12,%v4:192.168.0.0/16,%v4:!192.168.10.0/24
conn roadwarrior-l2tp
leftprotoport=17/1701
rightprotoport=17/1701
also=roadwarrior
conn roadwarrior
auth=esp
authby=secret
compress=yes
keyexchange=ike
keyingtries=3
pfs=no
rekey=yes
left=%defaultroute
right=%any
rightsubnet=vhost:%no,%priv
auto=add
#Disable Opportunistic Encryption
include /etc/ipsec.d/examples/no_oe.conf
Twórcy programu OpenSWAN przyj
Ċli konwencjĊ, aby stron poáączenia nie nazywaü
w klasyczny sposób: „serwer” i „klient” (lub te
Ī „Ĩródáo” i „cel”), tylko „strona lewa”
(ang. left) i „strona prawa” (ang. right). Ma to swoje uzasadnienie, poniewa
Ī tak na-
prawd
Ċ i tak zestawiane są dwa niezaleĪne skojarzenia SA — dla kaĪdego z kierunków
transmisji. Poza tym nie zawsze jest jasne, która strona jest bardziej serwerem, a która
klientem (przyk
áad áączenia oddziaáów firm). Przez „left” rozumie siĊ lokalną konfiguracjĊ,
Rozdzia
ä 7.
i IPSec w systemie Linux
107
a przez „right” odleg
áą stronĊ. ZauwaĪ, Īe w przypadku poáączeĔ typu uĪytkownik
mobilny-brama IPSec, patrz
ąc od strony bramy IPSec, strona „right” najczĊĞciej nie jest
znana (nie znamy adresu IP, z którego b
Ċdzie siĊ áączyü uĪytkownik). W przypadku
áączenia dwóch bram IPSec (áączenie oddziaáów firmy) strony „left” i „right” są na ogóá
ĞciĞle okreĞlone. W anglojĊzycznej terminologii pracowników mobilnych, którzy áączą siĊ
z ró
Īnych miejsc kraju i Ğwiata, przyjĊáo siĊ nazywaü roadwarrior (polskim odpo-
wiednikiem b
Ċdą „jeĪdĪący handlowcy w autach z kratką” :-)). Wspominam o terminie
roadwarrior, poniewa
Ī bardzo czĊsto wystĊpuje on w dokumentacji technicznej róĪnych
implementacji VPN.
Przeanalizujmy najwa
Īniejsze wpisy pliku konfiguracyjnego z listingu 7.3.1.3.
version 2.0
— informuje program OpenSWAN,
Īe skáadnia pliku bĊdzie zgodna
z OpenSWAN, a nie z przestarza
áym programem FreeSwan (poprzednik OpenSWAN).
Plik podzielony jest na kilka sekcji. Podstawowe opcje — tzw. globalne — zawarte s
ą
w sekcji
config setup
.
interfaces=%defaultroute
— oznacza interfejs, na którym ma dzia
áaü IPSec. WartoĞü
domy
Ğlna to
%defaultroute
, co oznacza,
Īe uĪyty zostanie „wyjĞciowy” adres IP komputera
(z którego komputer „wychodzi na
Ğwiat”).
Na ogó
á
%defaultroute
jest poprawn
ą wartoĞcią.
plutodebug=none
— definiuje poziom szczegó
áowoĞci (ang. verbose level) demona
pluto
. Opcja przydaje si
Ċ podczas debugowania, gdy nie dziaáa poáączenie. W przypadku
braku jawnie podanej opcji domy
Ğlnie przyjmowana jest wartoĞü
none
. Inne mo
Īliwe
warto
Ğci to:
all
,
raw
,
krypt
,
parsing
,
emitting
,
control
.
all
— bardzo szczegó
áowe debugowanie. Opcja przydatna dla guru IPSec. Zwykli Ğmier-
telnicy mog
ą mieü problemy ze zrozumieniem pojawiających siĊ komunikatów (jak-
kolwiek czasem mo
Īe siĊ przydaü).
Podczas debugowania polecam opcj
Ċ
control
, a gdy wszystko zacznie dzia
áaü —
none
.
forwardcontrol=yes|no
— sprawdza, czy za
áączone jest przekazywanie pakietów IP
(ang. IP forwarding). Je
Īeli nie, to je zaáącza. Po zakoĔczeniu dziaáania tunelu przy-
wraca poprzedni
ą wartoĞü.
nat_traversal=yes|no
— domy
Ğlnie:
no
. Wa
Īna opcja, jeĪeli spodziewasz siĊ poáączeĔ
zza NAT-a (maskarady). Za
áączenie jej sprawi, Īe OpenSWAN bĊdzie oczekiwaá
tak
Īe poáączeĔ na porcie UDP 4500, po którym przenoszone są pakiety IPSec.
virtual_private=
— okre
Ğla podsieci (z zakresu „prywatnych” klas IP), z których
mog
ą áączyü siĊ klienci. Na ogóá podaje siĊ tutaj wszystkie pule IP zdefiniowane do
u
Īytku prywatnego, z wyjątkiem puli uĪywanej w sieci firmowej, do której uĪytkownicy
chc
ą mieü dostĊp poprzez VPN. Innymi sáowy — OpenSWAN potrzebuje znaü adres
IP klienta. Jako
Īe uĪytkownicy mogą áączyü siĊ zewsząd, a my nie znamy prywatnych
klas adresowych u
Īywanych w hotelach, hotspotach itd., podajemy wszystkie „prywatne”
pule adresowe. Z oczywistych wzgl
Ċdów (problem z routingiem) musimy wykluczyü
108
Sieci VPN. Zdalna praca i bezpiecze
þstwo danych
pul
Ċ uĪywaną u nas w firmie. JeĪeli mielibyĞmy pewnoĞü, Īe wszyscy uĪytkownicy
b
Ċdą áączyü siĊ zza NAT-u, z puli adresowej
192.168.1.0/24
— to wystarczy
áoby po-
da
ü tylko tĊ pulĊ. Zwróü teĪ uwagĊ na parametr
rightsubnet
opisany w dalszej cz
ĊĞci.
Sekcja
conn roadwarrior-l2tp
odpowiedzialna jest za po
áączenia L2TP (port UDP 1701).
Jest ona potrzebna, je
Ğli oczekujesz poáączeĔ od klientów wbudowanych w systemy
Windows (u
Īywają L2TP). WaĪne jest, aby sekcja L2TP umieszczona byáa w pliku przed
w
áaĞciwą sekcją odpowiedzialną za poáączenia klientów (u nas:
conn roadwarrior
).
conn roadwarrior
— w
áaĞciwa sekcja poáączeĔ dla pracowników mobilnych.
auth=esp
— okre
Ğla protokóá IPSec. MoĪliwe opcje to
ah
lub
esp
. Zalecan
ą metodą jest
ESP, poniewa
Ī obsáuguje uwierzytelnianie i szyfrowanie.
authby=secret
— okre
Ğla sposób uwierzytelniania stron. WartoĞü
secret
oznacza wspó
á-
dzielony klucz (PSK). W przypadku uwierzytelniania z wykorzystaniem certyfikatów
opcja powinna mie
ü wartoĞü
rsasig
.
compress=yes
— mo
Īliwa kompresja danych.
keyexchange=ike
— warto
Ğü
ike
oznacza,
Īe do uzgodnienia kluczy zostanie uĪyty proto-
kó
á IKE (Internet Key Exchange). UĪycie IKE jest zdecydowanie polecane (takĪe przez
twórców OpenSWAN). R
Ċczne zarządzanie tunelami jest skomplikowane i niepraktyczne.
keyingtries=3
— okre
Ğla, ile prób negocjacji SA moĪe nastąpiü (maksymalnie).
pfs=yes|no
— w
áącza (
yes
) lub wy
áącza (
no
) PFS.
rekey=yes
— okre
Ğla, czy poáączenie po wygaĞniĊciu powinno byü renegocjowane.
Mo
Īliwe wartoĞci to
yes
lub
no
. Domy
Ğlnie:
yes
.
right=%any
— okre
Ğla adres drugiej strony. Sáowo kluczowe
%any
oznacza,
Īe adres
IP nie jest znany (przypadek mobilnych pracowników).
rightsubnet=vhost:%no,%priv
— opcja
rightsubnet
okre
Ğla podsieü drugiej strony.
W przypadku po
áączeĔ typu
Roadwarriors
z mo
Īliwym NAT-em oraz „nie NAT-em”
powinna mie
ü wartoĞü
vhost:%no,%priv
. Przez NAT oraz „nie NAT” rozumiem,
Īe
u
Īytkownicy mogą áączyü siĊ zza NAT-u lub teĪ mieü „zewnĊtrzny” adres IP i obie
konfiguracje b
Ċdą dziaáaü jednoczeĞnie.
Wi
Ċcej szczegóáów dotyczących tego zagadnienia znajdziesz na stronie http://www.
openswan.org/docs/local/README.NAT-Traversal.
auto=add
— opcja przyjmuje warto
Ğci:
start
,
add
,
ignore
(domy
Ğlna!) oraz
manual
.
Znaczenie poszczególnych warto
Ğci jest nastĊpujące:
start
— za
áaduj konfiguracjĊ i inicjuj poáączenie z drugą stroną. WartoĞü
najcz
ĊĞciej uĪywana w przypadku poáączeĔ dwóch routerów lub jeĞli strona
jest klientem (ma inicjowa
ü poáączenie z drugą stroną).
Rozdzia
ä 7.
i IPSec w systemie Linux
109
add
— za
áaduj konfiguracjĊ i odpowiadaj na przychodzące poáączenia (czekaj
na po
áączenie od drugiej strony). WartoĞü uĪywana dla konfiguracji typu
roadwarriors — nie znamy ani czasu, ani adresu IP, z jakiego po
áączy siĊ
mobilny pracownik. Jedyne, co mo
Īemy zrobiü, to odpowiedzieü na jego poáączenia.
ignore
— ignoruje sekcj
Ċ tego poáączenia. Uwaga: jest to wartoĞü domyĞlna,
dlatego musisz przypisa
ü jakąĞ wartoĞü sekcjom, które mają dziaáaü.
manual
— opcja u
Īywana przy rĊcznej konfiguracji wymiany kluczy (zamiast
u
Īycia IKE). Opcja niepolecana. Nie bĊdziemy rozpatrywali tego przypadku.
Zainteresowanych odsy
áam do dokumentacji programu OpenSWAN.
W ostatniej linijce pliku konfiguracyjnego widzimy do
áączony (ang. include) plik:
#Disable Opportunistic Encryption
include /etc/ipsec.d/examples/no_oe.conf
Do
áączenie powyĪszego pliku wyáącza tzw. szyfrowanie oportunistyczne, które w tym
przypadku nie jest potrzebne (strony uwierzytelniaj
ą siĊ w inny sposób), a pozostawienie
go za
áączonego skutkowaáoby serią komunikatów w logach systemowych, mówiących
o niemo
ĪnoĞci sprawdzenia informacji w DNS-ie. Idea szyfrowania oportunistycznego
polega na mo
ĪliwoĞci uwierzytelnienia dowolnych hostów w internecie bez wczeĞniejszej
wymiany tajnego klucza (lub kluczy publicznych). Uwierzytelnienie hosta odbywa si
Ċ tutaj
na podstawie informacji pobranych z bezpiecznych serwerów DNS (ang. Secure DNS).
Na razie bezpieczne DNS-y nie wyst
Ċpują w powszechnym uĪyciu.
Ogólna uwaga odno
Ĉnie do skäadni pliku ipsec.conf. Pamiötaj, aby pomiödzy sekcjami
po
äñczeþ byäa jedna linijka przerwy. Nazwa sekcji nie powinna zaczynaè siö od spacji
czy tabulacji. Opcje w ramach sekcji mog
ñ zaczynaè siö od tabulacji. WczeĈniejsze
wersje programu by
äy na to doĈè wraĔliwe, a zdiagnozowanie bäödu kosztowaäo mnie
du
Ĕo czasu.
Pozosta
á nam jeszcze do konfiguracji plik /etc/ipsec.secrets. W przypadku wspóádzielonego
klucza oraz po
áączeĔ z nieznanych adresów IP skáadnia pliku jest nastĊpująca:
85.98.29.251 %any: PSK "tajnehaslo"
gdzie
85.98.29.251
to „zewn
Ċtrzny” adres IP lokalnej strony (odpowiednik
%defaultroute
),
a
%any
— adres drugiej strony. Zadbaj o to, aby mo
ĪliwoĞü odczytu pliku miaá tylko
u
Īytkownik root (
chmod 600
).
7.3.2. Uruchomienie tunelu
Aby uruchomi
ü tunel (proces nasáuchiwania), wpisz polecenie:
ipsec setup start
lub u
Īyj skryptu startowego z dystrybucji:
/etc/init.d/ipsec start
110
Sieci VPN. Zdalna praca i bezpiecze
þstwo danych
7.4. Konfiguracja klienta Windows
W tym punkcie zajmiemy si
Ċ konfiguracją poáączenia IPSec w systemach Windows,
tak aby ich u
Īytkownicy mogli áączyü siĊ z naszą bramą linuksową skonfigurowaną
w punkcie 7.3.1. Metod
ą uwierzytelniania bĊdzie klucz wspóádzielony oraz dodatkowe
uwierzytelnianie w po
áączeniu PPP (MS-CHAP v2). UĪyjemy wbudowanego w Windowsa
klienta IPSec (2000, XP, 2003, Vista).
Po
äñczenia z uĔyciem wspóädzielonego klucza (PSK) przetestowaäem, uĔywajñc Win-
dowsa XP (SP2). Przegl
ñdajñc archiwum list dyskusyjnych, wyczytaäem, iĔ konfigu-
racja w systemach Windows 2000 nie dzia
äa prawidäowo z kluczem wspóädzielonym.
Niestety, jako
Ĕe nie mam juĔ nigdzie „w uĔyciu” systemu Windows 2000, nie by-
äem w stanie tego sprawdziè. Konfiguracja z wykorzystaniem certyfikatów dziaäa na-
tomiast prawid
äowo. W zwiñzku z powyĔszym jeĈli zamierzasz siö äñczyè, uĔywajñc
systemu Windows 2000, przejd
Ē, proszö, do nastöpnego punktu rozdziaäu opisu-
j
ñcego konfiguracjö opartñ na certyfikatach.
W przypadku Windowsa XP i nowszych sprawa sprowadza si
Ċ do dodania nowego poáą-
czenia przy u
Īyciu kreatora. Aby dodaü nowe poáączenie, wykonaj poniĪsze czynnoĞci:
1.
Wejd
Ĩ do Panelu sterowania i wybierz Poáączenia sieciowe.
2.
Uruchom Kreatora nowego po
áączenia. Kreator zapyta o rodzaj poáączenia
— wybierz opcj
Ċ Poáącz z siecią w miejscu pracy — tak jak pokazano
na rysunku 7.4.1. Nast
Ċpnie kliknij przycisk Dalej.
Rysunek 7.4.1.
Kreator nowego
po
áączenia w systemie
Windows XP
3.
W nast
Ċpnym kroku wybierz opcjĊ Poáączenie wirtualnej sieci prywatnej,
nast
Ċpnie kliknij przycisk Dalej.
4.
Wybierz nazw
Ċ dla poáączenia, np.
ipsec1
.
5.
Podaj adres IP lub nazw
Ċ DNS bramy VPN (patrz rysunek 7.4.2).
Rozdzia
ä 7.
i IPSec w systemie Linux
111
Rysunek 7.4.2.
Kreator po
áączenia VPN
— podaj adres IP
bramy IPSec
6.
Zako
Ĕcz pracĊ kreatora, klikając przycisk ZakoĔcz. Nowe poáączenie powinno
widnie
ü na liĞcie poáączeĔ sieciowych — w grupie Wirtualna sieü prywatna.
Przed uruchomieniem naszego po
áączenia trzeba zmodyfikowaü jeszcze dwie
opcje. Wejd
Ĩ we wáaĞciwoĞci nowego poáączenia — kliknij prawym przyciskiem
myszy ikon
Ċ nowego poáączenia i wybierz z menu opcjĊ WáaĞciwoĞci. PostĊpuj
wed
áug poniĪszych punktów.
7.
Przejd
Ĩ do zakáadki Zabezpieczenia i wybierz opcjĊ Ustawienia protokoáu
IPSec (patrz rysunek 7.4.3).
Rysunek 7.4.3.
W
áaĞciwoĞci
po
áączenia IPSec
— wpisz has
áo (PSK)
112
Sieci VPN. Zdalna praca i bezpiecze
þstwo danych
8.
Zaznacz opcj
Ċ UĪyj klucza wstĊpnego do uwierzytelnienia oraz wpisz w polu
Klucz has
áo podane w pliku /etc/ipsec.secrets na Linuksie — w naszym
przypadku b
Ċdzie to:
tajnehaslo
. Zatwierd
Ĩ przyciskiem OK.
9.
Nast
Ċpnie przejdĨ do zakáadki Sieü i zmieĔ wartoĞü pola Typ wirtualnej sieci
prywatnej (VPN) z Automatyczny na Sie
ü VPN z protokoáem L2TP IPSec
— patrz rysunek 7.4.4.
Rysunek 7.4.4.
W
áaĞciwoĞci
po
áączenia IPSec
— wybierz protokó
á
L2TP
10.
Zapisz zmiany.
W tej chwili mo
Īesz poáączyü siĊ z bramą IPSec. Kliknij dwukrotnie myszką ikonĊ
po
áączenia VPN (patrz rysunek 7.4.5). W oknie dialogowym podaj nazwĊ uĪytkownika
i has
áo, a nastĊpnie kliknij przycisk Poáącz.
Rysunek 7.4.5.
Pierwsze
po
áączenie IPSec
Rozdzia
ä 7.
i IPSec w systemie Linux
113
Nazwa u
Īytkownika i hasáo to oczywiĞcie dane uwierzytelniające poáączenie PPP
(patrz plik /etc/ppp/chap-secrets na Linuksie).
7.5. Debugowanie po
äñczenia
Je
Īeli wykonaáeĞ wszystkie kroki z poprzednich punktów, poáączenie powinno zadziaáaü
od razu. W praktyce pewnie pojawi
ą siĊ jakieĞ komplikacje. W tym punkcie podam parĊ
porad dotycz
ących tego, jak odnaleĨü báąd.
W przypadku po
áączeĔ Windows-Linux (OpenSWAN) opartych na PSK báąd wystąpi
prawdopodobnie gdzie
Ğ po stronie Linuksa. Konfiguracja Windowsa jest bowiem tak
prosta,
Īe trudno byáoby w niej coĞ Ĩle zrobiü.
Zacznij od przekierowania wszystkich logów systemowych do jednego pliku, aby
áatwiej
by
áo podglądaü na bieĪąco, co siĊ dzieje. W pisz do pliku /etc/syslog.conf poniĪszą linijkĊ:
*.* /var/log/all
Nast
Ċpnie przeáaduj konfiguracjĊ demona Syslog. Wpisz komendĊ
killall -HUP syslogd
.
W produkcyjnym serwerze plik mo
Īe szybko przyrastaü. PamiĊtaj, aby po zakoĔczonych
testach usun
ąü wpis z konfiguracji Sysloga.
Po
áącz siĊ z serwerem na innej konsoli (jeĞli pracujesz lokalnie, przeáącz siĊ na drugą
konsol
Ċ). Wpisz polecenie:
tail -f /var/log/all
Na tej konsoli b
Ċdziesz miaá staáy podgląd logów systemowych. JeĪeli na serwerze
dzia
áają inne usáugi, które moĪesz wyáączyü (np. poczta, dhcp itd.), zrób to — im mniej
logów, tym
áatwiej je przeglądaü.
Prze
áącz siĊ na pierwszą konsolĊ i sprawdĨ nastĊpujące rzeczy:
1.
Czy dzia
áa demon L2TP — wpisz:
ipsecgw:~# ps aux|grep l2tp
root 16659 0.0 0.0 1656 560 ? Ss Oct31 0:00 xl2tpd
Powiniene
Ğ zobaczyü proces. JeĪeli nie dziaáa — uruchom go, wpisując
xl2tpd
.
Sprawd
Ĩ ponownie, czy widnieje na liĞcie procesów. JeĪeli nie — zobacz,
co mówi
ą logi na drugiej konsoli.
2.
Sprawd
Ĩ poleceniem
netstat
, czy serwer nas
áuchuje na portach 4500 (NAT
Traversal), 500 (Pluto — IKE) oraz 1701 (L2TP). W tym celu wpisz polecenie:
ipsecgw:~# netstat -anp|grep udp
udp 0 0 127.0.0.1:4500 0.0.0.0:* 26771/pluto
udp 0 0 85.98.29.251:4500 0.0.0.0:* 26771/pluto
udp 0 0 192.168.10.98:4500 0.0.0.0:* 26771/pluto
114
Sieci VPN. Zdalna praca i bezpiecze
þstwo danych
udp 0 0 85.98.29.251:1701 0.0.0.0:* 16659/xl2tpd
udp 0 0 127.0.0.1:500 0.0.0.0:* 26771/pluto
udp 0 0 85.98.29.251:500 0.0.0.0:* 26771/pluto
udp 0 0 192.168.10.98:500 0.0.0.0:* 26771/pluto
Powiniene
Ğ zobaczyü wynik podobny do powyĪszego. W ostatniej kolumnie
mo
Īesz zobaczyü nazwĊ procesu powiązanego z danym portem.
3.
Upewnij si
Ċ, czy firewall nie blokuje potrzebnych portów UDP oraz protokoáu
ESP. Najlepiej, je
Ğli na czas testów w ogóle wyáączysz firewalla, tzn. ustawisz
domy
Ğlną politykĊ zapory na
ACCEPT
.
4.
Sprawd
Ĩ, czy w systemie na pewno zainstalowany jest program
pppd
— wpisz polecenie:
which pppd
.
5.
Upewnij si
Ċ, Īe w pliku ipsec.conf widnieje wpis
pfs=no
, który oznacza,
Īe PFS
nie jest konieczne (mo
Īliwe, gdy druga strona obsáuguje). Implementacja
Microsoftu nie obs
áuguje PFS, dlatego nie moĪemy go wymuszaü.
Po stronie Windowsa debugowanie jest utrudnione z racji braku „sysloga”. Mo
Īesz
zainstalowa
ü program Wireshark (nastĊpca Ethereala) — bardzo dobry sniffer sieciowy
— i analizowa
ü nim fazy poáączenia.
Je
Īeli mimo sprawdzenia powyĪszych punktów dalej nie udaje siĊ zestawiü poáączenia,
spróbuj po
áączyü siĊ, uĪywając innego komputera klienckiego (innego Windowsa).
Upewnij si
Ċ, Īe Īaden program typu firewall (zwáaszcza „kombajny” typu Norton Inter-
net Security) nie blokuje po
áączenia.
7.6. Konfiguracja z uwierzytelnieniem
przez certyfikaty
W niniejszym punkcie opisz
Ċ konfiguracjĊ podobną do poprzedniej, tzn. utworzymy
bram
Ċ IPSec dla mobilnych uĪytkowników, z tą tylko róĪnicą, Īe do uwierzytelniania
u
Īyjemy certyfikatów X.509, a nie klucza wspóádzielonego. Konfiguracja taka jest zdecy-
dowanie zalecana przy zdalnym dost
Ċpie pracowników, gdyĪ umoĪliwia w razie potrzeby
uniewa
Īnienie certyfikatu uĪytkownikowi.
Przed przej
Ğciem do konfiguracji bramy IPSec oraz komputerów klienckich musimy
przygotowa
ü klucze i certyfikaty dla serwera (bramy IPSec) oraz uĪytkowników. Szcze-
gó
áowy opis generowania certyfikatów zostaá omówiony w rozdziaáach 3. (SSL) oraz 5.
(OpenVPN). Aby nie powiela
ü tych samych informacji, proszĊ CiĊ o zajrzenie do instrukcji
zawartej w poprzednich rozdzia
áach.
Zak
áadam tutaj, Īe masz juĪ wygenerowane klucze i certyfikaty dla serwera i uĪytkownika
(na razie jeden u
Īytkownik wystarczy).
Konfiguracja po stronie Linuksa (bramy VPN) znacz
ąco siĊ nie róĪni — wiĊcej pracy
b
Ċdzie w systemie Windows.
Rozdzia
ä 7.
i IPSec w systemie Linux
115
7.6.1. Konfiguracja OpenSWAN
z wykorzystaniem certyfikatów
Po stronie Linuksa — w stosunku do konfiguracji z u
Īyciem PSK — zmianie ulegają
tylko pliki ipsec.conf oraz ipsec.secrets, pozosta
áe konfiguracje są identyczne (demon
L2TP, konfiguracja
pppd
).
Konfiguracj
Ċ wykonamy wedáug nastĊpujących punktów:
1.
Zapisz klucz prywatny serwera jako /etc/ipsec.d/private/serverkey.pem.
2.
Zapisz certyfikat serwera jako /etc/ipsec.d/certs/servercrt.pem.
3.
Zapisz certyfikat CA jako /etc/ipsec.d/cacerts/cacert.pem.
4.
Plik z list
ą uniewaĪnionych certyfikatów (póĨniejszy etap) powinien
znajdowa
ü siĊ w katalogu /etc/ipsec.d/crls/.
5.
Dokonaj zmian w pliku /etc/ipsec.secrets, tak aby mia
á nastĊpującą skáadniĊ:
: RSA serverkey.pem "supertajnehaslo"
gdzie:
serverkey.pem
to nazwa pliku z kluczem prywatnym, którego program
OpenSWAN oczekuje w katalogu /etc/ipsec.d/private/,
supertajnehaslo
to has
áo do klucza prywatnego serwera. W przypadku
gdy klucz prywatny nie jest zabezpieczony has
áem, moĪna je pominąü.
Wstawienie warto
Ğci
%prompt
spowoduje,
Īe program OpenSWAN przy
starcie b
Ċdzie pytaá o hasáo do klucza.
6.
Utwórz plik konfiguracyjny /etc/ipsec.conf zgodny z listingiem 7.6.1.1.
Listing 7.6.1.1. Konfiguracja programu OpenSWAN z wykorzystaniem certyfikatów
version 2.0
config setup
interfaces=%defaultroute
plutodebug=none
forwardcontrol=yes
nat_traversal=yes
virtual_private=%v4:10.0.0.0/8,%v4:172.16.0.0/12,
´
%v4:192.168.0.0/16,%v4:!192.168.10.0/24
conn roadwarrior-l2tp
leftprotoport=17/1701
rightprotoport=17/1701
also=roadwarrior
conn roadwarrior
auth=esp
authby=rsasig
compress=yes
keyexchange=ike
keyingtries=3
116
Sieci VPN. Zdalna praca i bezpiecze
þstwo danych
pfs=no
left=%defaultroute
leftcert=/etc/ipsec.d/certs/servercrt.pem
right=%any
rightrsasigkey=%cert
rightsubnet=vhost:%no,%priv
rightca=%same
auto=add
#Disable Opportunistic Encryption
include /etc/ipsec.d/examples/no_oe.conf
Opcja
rightrsasigkey=%cert
oznacza,
Īe druga strona uwierzytelni siĊ,
przedstawiaj
ąc swój certyfikat.
Opcja
rightca=%same
oznacza,
Īe certyfikat drugiej strony (klienta) musi byü
wystawiony przez to samo CA co certyfikat serwera, czyli przez CA, którego
certyfikat znajduje si
Ċ na serwerze w pliku /etc/ipsec.d/cacerts/cacert.pem.
7.
Uruchom us
áugĊ IPSec. Wpisz polecenie:
ipsec setup start
.
W tym momencie brama jest ju
Ī gotowa do dziaáania. W nastĊpnym punkcie skonfi-
gurujemy po
áączenie w systemie Windows.
7.7. Import certyfikatów
w systemie Windows
Zak
áadam, Īe wygenerowaáeĞ juĪ uĪytkownikowi klucz prywatny i wystawiáeĞ mu cer-
tyfikat podpisany przez swoje CA. Powiniene
Ğ mieü juĪ pliki user.key i user.crt. BĊdziesz
musia
á przekonwertowaü klucz i certyfikat do formatu P12 uĪywanego w systemach
Windows. W tym celu na komputerze CA wpisz polecenie:
ca:/etc/ssl# openssl pkcs12 -export -out user.p12 -inkey private/user.key -in user.crt
Program OpenSSL zapyta o has
áo do klucza prywatnego, a nastĊpnie utworzy plik
w formacie P12. Tak utworzony plik przegraj za pomoc
ą bezpiecznego medium (SCP,
pendrive) na komputer kliencki z systemem Windows. Przegraj te
Ī certyfikat CA — plik
CA.crt (lub cacert.pem — w zale
ĪnoĞci od przyjĊtej konwencji).
Nie instaluj i nie importuj certyfikatów w systemie Windows poprzez klikni
öcie pliku.
Ta metoda nie dzia
äa prawidäowo. Zamiast tego zawsze uĔywaj przystawki MMC do
importu kluczy i certyfikatów!
Procedur
Ċ importu certyfikatów przeprowadĨ wedáug zamieszczonej instrukcji.
Utworzymy teraz przystawk
Ċ MMC, dziĊki której bĊdziesz mógá importowaü klucze
i certyfikaty. Wpisz w pasku Uruchom menu Start polecenie
mmc
— uruchomi si
Ċ kon-
sola MMC.
Rozdzia
ä 7.
i IPSec w systemie Linux
117
Z menu Plik konsoli MMC wybierz opcj
Ċ Dodaj/UsuĔ przystawkĊ… (patrz rysunek 7.7.1).
Rysunek 7.7.1. Konsola MMC — wybierz opcj
Ċ Dodaj przystawkĊ
Pojawi si
Ċ nowe okno Dodaj/UsuĔ przystawkĊ — kliknij przycisk Dodaj (patrz rysu-
nek 7.7.2).
Rysunek 7.7.2. Konsola MMC — dodawanie przystawki
118
Sieci VPN. Zdalna praca i bezpiecze
þstwo danych
Na li
Ğcie dostĊpnych przystawek zaznacz Certyfikaty, a nastĊpnie kliknij Dodaj — uru-
chomi si
Ċ kreator konfiguracji przystawki. Wybierz opcjĊ Konto komputera, nastĊpnie
kliknij Dalej (patrz rysunek 7.7.3).
Rysunek 7.7.3.
Dodawanie
przystawki Certyfikaty
W nast
Ċpnym kroku wybierz opcjĊ Komputer lokalny oraz kliknij przycisk ZakoĔcz.
Z menu Plik wybierz opcj
Ċ Zapisz, aby zapisaü gotową przystawkĊ na dysku. Nazwij ją
sobie, jak chcesz — np.
ipsec.mmc
.
Maj
ąc gotową przystawkĊ, moĪesz zaimportowaü certyfikat. W tym celu rozwiĔ przy-
stawk
Ċ Certyfikaty, a nastĊpnie kliknij prawym przyciskiem myszy folder Osobisty.
Z menu wybierz Wszystkie zadania, a nast
Ċpnie opcjĊ Importuj… — uruchomi siĊ
kreator importu certyfikatów (patrz rysunek 7.7.4).
Rysunek 7.7.4.
Z menu Wszystkie
zadania wybierz
opcj
Ċ Importuj
Rozdzia
ä 7.
i IPSec w systemie Linux
119
W kreatorze dodawania certyfikatów wska
Ī przygotowany wczeĞniej plik user.p12.
Kreator zapyta o has
áo do klucza prywatnego — podaj je (patrz rysunek 7.7.5).
Rysunek 7.7.5.
Import certyfikatu
u
Īytkownika — krok 1
Kliknij przycisk Dalej, nast
Ċpnie wybierz opcjĊ Automatycznie wybierz magazyn certy-
fikatów na podstawie typu certyfikatu (WA
ĩNE!) oraz ponownie kliknij przycisk Dalej
(patrz rysunek 7.7.6).
Rysunek 7.7.6.
Import certyfikatu
u
Īytkownika — krok 2
W kolejnym oknie kliknij przycisk Zako
Ĕcz. Kreator powinien potwierdziü pomyĞlnoĞü
importu certyfikatu (patrz rysunek 7.7.7).
Musisz jeszcze zainstalowa
ü certyfikat swojego CA w katalogu zaufanych urzĊdów certyfi-
kacji. W tym celu kliknij prawym przyciskiem myszy katalog Zaufane g
áówne urzĊdy certy-
fikacji, a nast
Ċpnie z menu wybierz opcjĊ Wszystkie zadania/Importuj (patrz rysunek 7.7.8).
120
Sieci VPN. Zdalna praca i bezpiecze
þstwo danych
Rysunek 7.7.7.
Kreator powinien
potwierdzi
ü import
Rysunek 7.7.8.
Wybierz opcj
Ċ
Importuj z menu
Po wybraniu opcji Importuj uruchomi si
Ċ kolejny kreator importu certyfikatów. Musisz
wskaza
ü plik z certyfikatem CA (ca.crt). Kreator importu certyfikatów oczekuje pliku
z rozszerzeniem *.crt, a nie *.pem, dlatego przed importem musisz si
Ċ upewniü, czy
plik ma takie rozszerzenie (patrz rysunek 7.7.9).
Rysunek 7.7.9.
Import certyfikatu CA
— krok 1
Kliknij przycisk Dalej, a nast
Ċpnie wybierz opcjĊ UmieĞü wszystkie certyfikaty w na-
st
Ċpującym magazynie — Zaufane gáówne urzĊdy certyfikacji (patrz rysunek 7.7.10).
Wyjd
Ĩ z konsoli, zapisując zmiany.
Rozdzia
ä 7.
i IPSec w systemie Linux
121
Rysunek 7.7.10.
Import certyfikatu CA
— krok 2
Jak widzisz, procedura importu jest troch
Ċ skomplikowana. Tak naprawdĊ záoĪona jest tylko
za pierwszym razem. Maj
ąc przygotowaną przystawkĊ mmc (
ipsec.mmc
), mo
Īesz uĪyü jej
na innych komputerach.
7.7.1. Konfiguracja po
äñczenia
Konfiguracj
Ċ poáączenia przeprowadĨ dokáadnie w taki sam sposób, jak w przykáadzie
z kluczem wspó
ádzielonym. Jedyna róĪnica polega na tym, aby w zakáadce Zabezpie-
czenia nie zaznacza
ü opcji Ustawienia protokoáu IPSec/UĪyj klucza wstĊpnego do uwie-
rzytelnienia (patrz rysunek 7.7.1.1).
Rysunek 7.7.1.1.
W
áaĞciwoĞci poáączenia,
zak
áadka Zabezpieczenia
122
Sieci VPN. Zdalna praca i bezpiecze
þstwo danych
Upewnij si
Ċ, Īe w zakáadce Sieü typ wirtualnej sieci prywatnej ustawiony jest na Sieü VPN
z protoko
áem L2TP IPSec.
Zapisz zmiany i spróbuj si
Ċ poáączyü. W polu Nazwa uĪytkownika i Hasáo podaj dane
uwierzytelniaj
ące do poáączenia PPP (plik /etc/ppp/chap-secrets na serwerze) — patrz ry-
sunek 7.7.1.2.
Rysunek 7.7.1.2.
Po
áączenie
z bram
ą IPSec
Je
Īeli nie wystąpią nieprzewidziane problemy, po chwili poáączenie powinno zostaü
nawi
ązane.
W przypadku pojawienia si
Ċ komunikatu o báĊdzie, mówiącego o braku certyfikatu
wymaganego do uwierzytelnienia zabezpiecze
Ĕ (patrz rysunek 7.7.1.3) upewnij siĊ, czy
zaimportowa
áeĞ poprawnie certyfikat CA w magazynie Zaufane gáówne urzĊdy certyfikacji.
Najlepiej powtórz t
Ċ czynnoĞü jeszcze raz.
Rysunek 7.7.1.3.
B
áąd poáączenia IPSec
— brak certyfikatu
W razie dalszych problemów z zestawieniem po
áączenia wykonaj kroki podane w punk-
cie 7.5.
Je
Īeli poáączenie zestawiáo siĊ, sprawdĨ po stronie systemu Windows, jaki adres IP
otrzyma
á interfejs poáączenia PPP/IPSec, oraz spróbuj „pingnąü” drugą stronĊ.
Na listingu 7.7.1.1 przedstawiono wycinek logów systemowych Linuksa. Zwró
ü uwagĊ
na poszczególne fazy po
áączenia (wymiana kluczy przez IKE, nawiązanie SA, enkap-
sulacja PPP w L2TP). W logach widzimy te
Ī, Īe poáączenie nadeszáo z nieznanego
adresu IP oraz
Īe klient jest za NAT-em.
Rozdzia
ä 7.
i IPSec w systemie Linux
123
Listing 7.7.1.1. Wycinek logów systemowych po stronie Linuksa
Nov 2 01:10:35 ipsecgw pluto[29172]: "roadwarrior-l2tp"[1] 91.192.0.177 #8:
´
responding to Main Mode from unknown peer 91.192.0.177
Nov 2 01:10:35 ipsecgw pluto[29172]: "roadwarrior-l2tp"[1] 91.192.0.177 #8:
´
transition from state STATE_MAIN_R0 to state STATE_MAIN_R1
Nov 2 01:10:35 ipsecgw pluto[29172]: "roadwarrior-l2tp"[1] 91.192.0.177 #8:
´
STATE_MAIN_R1: sent MR1, expecting MI2
Nov 2 01:10:35 ipsecgw pluto[29172]: "roadwarrior-l2tp"[1] 91.192.0.177 #8:
´
NAT-Traversal: Result using draft-ietf-ipsec-nat-t-ike-02/03: peer is NATed
Nov 2 01:10:35 ipsecgw pluto[29172]: "roadwarrior-l2tp"[1] 91.192.0.177 #8:
´
transition from state STATE_MAIN_R1 to state STATE_MAIN_R2
Nov 2 01:10:35 ipsecgw pluto[29172]: "roadwarrior-l2tp"[1] 91.192.0.177 #8:
´
STATE_MAIN_R2: sent MR2, expecting MI3
Nov 2 01:10:35 ipsecgw pluto[29172]: "roadwarrior-l2tp"[1] 91.192.0.177 #8:
´
Main mode peer ID is ID_DER_ASN1_DN: 'C=PL, ST=Slask, O=Helion, CN=user1'
Nov 2 01:10:35 ipsecgw pluto[29172]: "roadwarrior-l2tp"[1] 91.192.0.177 #8:
´
I am sending my cert
Nov 2 01:10:35 ipsecgw pluto[29172]: "roadwarrior-l2tp"[1] 91.192.0.177 #8:
´
transition from state STATE_MAIN_R2 to state STATE_MAIN_R3
Nov 2 01:10:35 ipsecgw pluto[29172]: "roadwarrior-l2tp"[1] 91.192.0.177 #8:
´
STATE_MAIN_R3: sent MR3, ISAKMP SA established {auth=OAKLEY_RSA_SIG
´
cipher=oakley_3des_cbc_192 prf=oakley_sha group=modp2048}
Nov 2 01:10:35 ipsecgw pluto[29172]: "roadwarrior-l2tp"[1] 91.192.0.177 #9:
´
responding to Quick Mode {msgid:e83ab5d8}
Nov 2 01:10:35 ipsecgw pluto[29172]: "roadwarrior-l2tp"[1] 91.192.0.177 #9:
´
transition from state STATE_QUICK_R0 to state STATE_QUICK_R1
Nov 2 01:10:35 ipsecgw pluto[29172]: "roadwarrior-l2tp"[1] 91.192.0.177 #9:
´
STATE_QUICK_R1: sent QR1, inbound IPsec SA installed, expecting QI2
Nov 2 01:10:35 ipsecgw pluto[29172]: "roadwarrior-l2tp"[1] 91.192.0.177 #9:
´
transition from state STATE_QUICK_R1 to state STATE_QUICK_R2
Nov 2 01:10:35 ipsecgw pluto[29172]: "roadwarrior-l2tp"[1] 91.192.0.177 #9:
´
STATE_QUICK_R2: IPsec SA established {ESP=>0xb66477ee <0xa49dc8ea xfrm=
´
3DES_0-HMAC_MD5 NATD=91.192.0.177:4500 DPD=none}
Nov 2 01:10:37 ipsecgw xl2tpd[29349]: Connection established to 91.192.0.177, 1701.
´
Local: 11685, Remote: 5 (ref=0/0). LNS session is 'default'
Nov 2 01:10:37 ipsecgw xl2tpd[29349]: start_pppd: I'm running:
Nov 2 01:10:37 ipsecgw xl2tpd[29349]: "/usr/sbin/pppd"
Nov 2 01:10:37 ipsecgw xl2tpd[29349]: "passive"
Nov 2 01:10:37 ipsecgw xl2tpd[29349]: "-detach"
Nov 2 01:10:37 ipsecgw xl2tpd[29349]: "85.98.29.251:192.168.10.198"
Nov 2 01:10:37 ipsecgw xl2tpd[29349]: "auth"
Nov 2 01:10:37 ipsecgw xl2tpd[29349]: "require-chap"
Nov 2 01:10:37 ipsecgw xl2tpd[29349]: "name"
Nov 2 01:10:37 ipsecgw xl2tpd[29349]: "ipsec"
Nov 2 01:10:37 ipsecgw xl2tpd[29349]: "file"
Nov 2 01:10:37 ipsecgw xl2tpd[29349]: "/etc/ppp/options.l2tpd"
Nov 2 01:10:37 ipsecgw xl2tpd[29349]: "/dev/pts/1"
Nov 2 01:10:37 ipsecgw xl2tpd[29349]: Call established with 91.192.0.177,
´
Local: 27862, Remote: 1, Serial: 0
Nov 2 01:10:37 ipsecgw pppd[29356]: pppd 2.4.4 started by root, uid 0
Nov 2 01:10:37 ipsecgw pppd[29356]: Using interface ppp0
Nov 2 01:10:37 ipsecgw pppd[29356]: Connect: ppp0 <--> /dev/pts/1
Nov 2 01:10:39 ipsecgw pppd[29356]: found interface eth1 for proxy arp
Nov 2 01:10:39 ipsecgw pppd[29356]: local IP address 85.98.29.251
Nov 2 01:10:39 ipsecgw pppd[29356]: remote IP address 192.168.10.198
124
Sieci VPN. Zdalna praca i bezpiecze
þstwo danych
W Linuksie informacj
Ċ o aktualnym stanie poáączenia IPSec moĪesz uzyskaü, wpisując
polecenie:
ipsecgw:~# ip xfrm state
src 85.98.29.251 dst 91.192.0.177
proto esp spi 0xb66477ee reqid 16413 mode transport
replay-window 32
auth md5 0x4fc684eb720b08a2e0783b9a2dcbf31f
enc des3_ede 0xaee1a11e87622f31c06ddfbbd842a672575bc08bc2e29ca3
encap type espinudp sport 4500 dport 4500 addr 0.0.0.0
src 91.192.0.177 dst 85.98.29.251
proto esp spi 0xa49dc8ea reqid 16413 mode transport
replay-window 32
auth md5 0x92d7ccce0c943d3742d9a3fd0304c656
enc des3_ede 0x9cc2b82f3c216d4947cd435fcec1f17ad3373bab5f381950
encap type espinudp sport 4500 dport 4500 addr 0.0.0.0
Widzimy tutaj informacje o dwóch skojarzeniach SA (kierunek serwer-klient i klient-
serwer). Identyfikatory SPI dla ka
Īdego SA zostaáy podkreĞlone. Widzimy takĪe, Īe
po
áączenie dziaáa w trybie transportowym.
Na listingu 7.7.1.2 dla przyk
áadu przedstawiáem komunikat zarejestrowany przez demon
Syslog w przypadku próby nawi
ązania poáączenia przez uĪytkownika legitymującego
si
Ċ záym certyfikatem (podpisanym przez inne CA — nie nasze).
Listing 7.7.1.2. Komunikat o odrzuconym certyfikacie u
Īytkownika
Nov 2 02:21:44 ipsecgw pluto[29172]: "roadwarrior"[5] 91.192.0.182 #17:
´
issuer cacert not found
Nov 2 02:21:44 ipsecgw pluto[29172]: "roadwarrior"[5] 91.192.0.182 #17:
´
X.509 certificate rejected
Nov 2 02:21:44 ipsecgw pluto[29172]: "roadwarrior"[5] 91.192.0.182 #17:
´
no suitable connection for peer 'C=PL, ST=Rojca, O=rojcanet, OU=rojcanet,
´
CN=rojcanet_user1, E=marek@rojcanet.pl'
7.8. Dost
öp z urzñdzeþ PDA
— Windows Mobile 2003, 2005,
2006
Z linuksowym serwerem VPN mo
Īesz siĊ takĪe poáączyü, korzystając z urządzeĔ mobil-
nych typu palmtop. Zajrzyj do rozdzia
áu 13., w którym opisaáem procedurĊ importu certy-
fikatów SSL oraz konfiguracj
Ċ poáączeĔ IPSec w systemach mobilnych.
Rozdzia
ä 7.
i IPSec w systemie Linux
125
7.9.
ãñczenie oddziaäów firmy
tunelem IPSec
W niniejszym punkcie stworzymy tunel
áączący siedzibĊ firmy (Gliwice) z oddziaáem
(Bytom). W obu lokalizacjach routery dzia
áają pod kontrolą Linuksa z zainstalowanym
programem OpenSWAN. Celem tunelu jest zapewnienie bezpiecznej komunikacji TCP/IP
pomi
Ċdzy komputerami w oddziaáach. KonfiguracjĊ przedstawia rysunek 7.9.1.
Rysunek 7.9.1.
Tunel IPSec/L2TP
mi
Ċdzy oddziaáami
firmy
Funkcjonalnie przyk
áad jest podobny do rozwiązania z podrozdziaáu 5.4., róĪni siĊ nato-
miast implementacj
ą VPN. Zamiast dziaáającego w warstwie uĪytkownika programu
OpenVPN zestawimy tunel IPSec.
Do uwierzytelniania stron u
Īyjemy tym razem kluczy RSA (klucz prywatny i publiczny).
Je
Īeli routery mają staáe IP, moĪesz uĪyü nawet klucza wspóádzielonego (hasáo), ale
pami
Ċtaj, aby zablokowaü na firewallu moĪliwoĞü áączenia siĊ protokoáem IPSec ze
wszystkich hostów z wyj
ątkiem adresu IP „drugiej strony” (w przeciwnym razie ktoĞ
b
Ċdzie mógá próbowaü odgadnąü hasáo, np. przez atak typu brute force).
Poniewa
Ī implementacja IPSec w Linuksie nie wymaga uĪycia protokoáu PPP oraz
L2TP, konfiguracja jest tutaj znacznie prostsza ni
Ī w poprzednim rozdziale. W zasadzie
gotowy plik konfiguracyjny znajduje si
Ċ w przykáadach doáączonych razem z pakietem
OpenSWAN (/etc/ipsec.d/examples/linux-linux.conf).
Utwórz plik konfiguracyjny podany w listingu 7.9.1 — b
Ċdzie to plik lokalizacji pierwszej
(Gliwice).
126
Sieci VPN. Zdalna praca i bezpiecze
þstwo danych
Listing 7.9.1. Konfiguracja IPSec Linux-Linux (lokalizacja Gliwice)
version 2.0
config setup
interfaces=%defaultroute
forwardcontrol=yes
rp_filter=0
nat_traversal=no
conn linux-to-linux
auth=esp
authby=rsasig
pfs=yes
left=91.192.0.186
leftsubnet=192.168.20.0/24
leftrsasigkey=0sAQPuvae6KEw/yHijDjqHomCyLo8oO3H8wl3UExuTArCXtzc1DO5X2E8QFI
´u0grLofzIzgoCy8AkoFthFPJIyDF3zKVH9ppMS8XQQL2naWp+YOm2cROstRlAfyvC/jF7GvW
´lRIjxzHzCLCIJXihZmFZGN1ku/DExLx5TjzqG/bXQ9DQ==
right=91.192.0.185
rightsubnet=192.168.30.0/24
rightrsasigkey=0sAQODH/CRwexspJ6mu/bThfQzs84IpaHBYNs5MeDpxbiLdacZjM22PqOvb
´VIqeQlYg4zHMAnB2EyUIgYHskJqyRmtmg6S5ELxnNHqvTE92KI5Bdicn458CowdqR2Jtc4tv
´D7OWHv/RFzmt6W1kIHPiILAOkR2mSvATgI/QhZtNN4oaw==
auto=start
include /etc/ipsec.d/examples/no_oe.conf
Oto znaczenie wa
Īniejszych opcji:
authby=rsasig
— uwierzytelnianie przez klucze RSA,
left=91.192.0.186
— adres IP routera w Gliwicach („lewa strona”
— lokalna dla routera),
leftsubnet=192.168.20.0/24
— sie
ü LAN za routerem w Gliwicach,
leftrsasigkey=0sAQPuvae6KE…
— klucz publiczny „lewej strony”
(routera w Gliwicach),
right=91.192.0.185
— adres IP bramy odleg
áej lokalizacji (Bytom),
rightsubnet=192.168.30.0/24
— sie
ü LAN za routerem w Bytomiu,
rightrsasigkey=0sAQODH/CR…
— klucz publiczny prawej strony.
Zauwa
Ī, Īe jawnie umieĞciáem wpis
pfs=yes
. Nie musia
áem tego robiü, poniewaĪ jest to
opcja domy
Ğlna. Moim zamiarem byáo podkreĞlenie, Īe w przypadku poáączeĔ Linux-Linux
PFS jest obs
áugiwana i nie naleĪy jej wyáączaü.
PFS (ang. Perfect Forward Secrecy) to, jak ju
Ī wiemy, poufnoĞü doskonaáa. Przez pojĊcie
to rozumie si
Ċ sposób wymiany kluczy sesyjnych w trakcie poáączenia IPSec. Zaáączenie
PFS zapewnia,
Īe materiaá klucza gáównego moĪe byü uĪywany do wygenerowania tylko
jednego klucza sesji. Przed utworzeniem nowego klucza sesji jest przeprowadzana wy-
miana kluczy (algorytm Diffiego-Hellmana) w celu wygenerowania nowego materia
áu klu-
cza g
áównego. DziĊki zastosowaniu PFS uzyskanie przez atakującego pojedynczego klucza
pozwala mu na odczytanie tylko wiadomo
Ğci zaszyfrowanych tym kluczem. Niestety, nie
Rozdzia
ä 7.
i IPSec w systemie Linux
127
wszystkie implementacje obs
áugują tĊ wáaĞciwoĞü, dlatego w przykáadach z uĪyciem
klientów Windows umieszczali
Ğmy
pfs=no
.
Po stronie lokalizacji Bytom plik wygl
ąda analogicznie — patrz listing 7.9.2.
Listing 7.9.2. Konfiguracja IPSec Linux-Linux (lokalizacja Bytom)
version 2.0
config setup
interfaces=%defaultroute
forwardcontrol=yes
rp_filter=0
nat_traversal=no
conn linux-to-linux
auth=esp
authby=rsasig
pfs=yes
left=91.192.0.185
leftsubnet=192.168.30.0/24
leftrsasigkey=0sAQODH/CRwexspJ6mu/bThfQzs84IpaHBYNs5MeDpxbiLdacZjM22PqOvbVI
´
qeQlYg4zHMAnB2EyUIgYHskJqyRmtmg6S5ELxnNHqvTE92KI5Bdicn458CowdqR2Jtc4tvD7OWH
´
v/RFzmt6W1kIHPiILAOkR2mSvATgI/QhZtNN4oaw==
right=91.192.0.186
rightsubnet=192.168.20.0/24
rightrsasigkey=0sAQPuvae6KEw/yHijDjqHomCyLo8oO3H8wl3UExuTArCXtzc1DO5X2E8QFIu0gr
´
LofzIzgoCy8AkoFthFPJIyDF3zKVH9ppMS8XQQL2naWp+YOm2cROstRlAfyvC/jF7GvWlRI
´
jxzHzCLCIJXihZmFZGN1ku/DExLx5TjzqG/bXQ9DQ==
auto=start
include /etc/ipsec.d/examples/no_oe.conf
Oczywi
Ğcie z punktu widzenia routera w Bytomiu strona „lewa” to jego podsieü, a „prawa”
— siedziba firmy w Gliwicach.
Musisz jeszcze wygenerowa
ü swoje klucze RSA i umieĞciü je w konfiguracjach po
obu stronach. Zrób to wed
áug poniĪszych punktów:
1.
Na obu routerach wpisz polecenie:
gliwice:~#ipsec rsasigkey 1024 > /root/key.rsa
Pliki b
Ċdą miaáy postaü podobną do podanej na listingu 7.9.3.
Listing 7.9.3. Klucze RSA — publiczny i prywatny
# RSA 1024 bits hebaz Wed Nov 7 13:40:56 2007
# for signatures only, UNSAFE FOR ENCRYPTION
#pubkey=0sAQPCU0jPYnML3QzQzS8TsiyEJXj9p8uJZH1fgwLAjiahSA5Novx0OjfDKOJNtjOuTpxQ9bqrO
´
mu65FxrnLZAj31etSaaqyKGk3h6KEvIcPkESwuHpGBoxYsiuLJCmKGX5jZYkc3ckjnkqggL6eduC+4/FF
´
Gff5LzvwY5DSJLLGimLw==
Modulus: 0xc25348cf62730bdd0cd0cd2f13b22c842578fda7cb89647d5f8302c08e26a148
´0e4da2fc743a37c328e24db633ae4e9c50f5baab3a6bbae45c6b9cb6408f7d5eb5269aab2
´28693787a284bc870f9044b0b87a46068c58b22b8b24298a197e6365891cddc9239e4aa08
´0be9e76e0bee3f14519f7f92f3bf06390d224b2c68a62f