Professional Documents
Culture Documents
Zdalna praca
i bezpieczestwo danych.
Wydanie II rozszerzone
Autor: Marek Serafin
ISBN: 978-83-246-2474-4
Format: 158235, stron: 248
Spis treci
Przedmowa ..................................................................................................9
Rozdzia 1.
Wstp ........................................................................................................11
Rozdzia 2.
Rozdzia 3.
Rozdzia 4.
Rozdzia 5.
Spis treci
5.2. Konfiguracja OpenVPN .......................................................................................... 58
5.3. Praktyczny przykad zdalny dostp do zasobw firmy dla pracownikw .......... 59
5.3.1. Generowanie certyfikatw SSL ..................................................................... 60
5.3.2. Konfiguracja po stronie serwera .................................................................... 61
5.3.3. Uruchomienie usugi serwera OpenVPN ....................................................... 63
5.3.4. Konfiguracja klienta ...................................................................................... 64
5.4. Bardziej zoona konfiguracja z wieloma uytkownikami ...................................... 67
5.4.1. Przypisywanie staych adresw IP uytkownikom ........................................ 68
5.4.2. Pliki ustawie uytkownikw 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. Uniewanianie certyfikatw .................................................................................... 72
5.6. czenie oddziaw firmy ....................................................................................... 74
5.6.1. Przykad rozwizania 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.
Rozdzia 7.
Rozdzia 8.
Rozdzia 9.
IPSec .........................................................................................................95
6.1. IPSec a translacja adresw (maskarada) .................................................................. 98
8.1.
8.2.
8.3.
8.4.
8.5.
8.6.
8.7.
9.1. Zdalny dostp pracownikw konta przechowywane lokalnie na routerze ........ 159
9.2. Konfiguracja klienta VPN ..................................................................................... 163
9.3. Zdalny dostp pracownikw uwierzytelnianie przez RADIUS ........................ 164
9.3.1. Instalacja MS IAS ....................................................................................... 164
9.3.2. Konfiguracja routera ................................................................................... 169
Spis treci
7
9.4. Uprawnienia do zasobw w sieci wewntrznej ..................................................... 170
9.4.1. Ruch przechodzcy przez tunel VPN (split tunneling) ................................ 171
9.4.2. Filtracja ruchu w tunelu VPN ...................................................................... 172
Rozdzia 7.
102
W popularnych dystrybucjach systemu Linux domylnie dostarczane s wszystkie potrzebne moduy. Sprawd poleceniem find, czy rzeczywicie masz w systemie odpowiednie pliki. Wpisz polecenie:
root@server:~# find /lib/modules/`uname -r` -name 'esp4*'
Program find powinien odnale plik moduu jdra o nazwie esp4.ko lub esp4.o. Jeli
plik istnieje, oznacza to, e twrcy dystrybucji dodali moduy IPSec. Jeli kompilowae
kernela z wasnymi opcjami i nie masz moduw IPSec, bdziesz musia przekompilowa
jdro od nowa. Poniej podaj list opcji, ktre musisz doda jako moduy. Nazwy w nawiasach kwadratowych to dokadne nazwy z pliku konfiguracyjnego jdra .config.
Uruchom program make menuconfig i wybierz ponisze opcje konfiguracyjne:
W gazi 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 gazi Device Drivers ---> Character devices ---> wybierz:
Legacy (BSD) PTY support [CONFIG_LEGACY_PTYS]
W gazi 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]
103
Jeeli podczas kompilacji programu zostanie zgoszony bd, upewnij si, czy masz
zainstalowany pakiet z nagwkami biblioteki arytmetycznej GMP (GNU Multiple
Precision Arithmetic Library). W przypadku dystrybucji Debian odpowiedni pakiet nazywa si libgmp3-dev. Dla innych dystrybucji paczka powinna nazywa si podobnie
wane, aby by to pakiet deweloperski, tzn. zawiera pliki nagwkowe.
Jeli kompilacja przebiegnie prawidowo, w systemie zostanie zainstalowany program zarzdzajcy poczeniami IPSec (/usr/local/sbin/ipsec) oraz demon protokou IKE Pluto.
Ostatnim (opcjonalnym) skadnikiem, ktry musisz zainstalowa, jest serwer L2TP
najlepiej xl2tpd. Napisaem: opcjonalnym, gdy nie wszystkie rozwizania IPSec
uywaj tunelowania L2TP. Niemniej implementacja IPSec firmy Microsoft wbudowana w kady z systemw Windows wymaga do dziaania wanie protokou L2TP.
Jeeli zamierzasz czy si z bram VPN, uywajc wbudowanych w Windows mechanizmw IPSec, musisz zainstalowa i skonfigurowa demon L2TP.
Protok L2TP umoliwia przesyanie ramek poczenia PPP poprzez protok IP
(internet), ktre to poczenie normalnie realizowane jest tylko w bezporednim poczeniu punkt-punkt (modemy, linie szeregowe itd.). Samo poczenie PPP operuje w warstwie drugiego modelu OSI i suy do enkapsulacji protokow warstwy wyszej (IP,
IPX itd.), zapewniajc jednoczenie uwierzytelnianie oraz kompresj. Poczenie protokou L2TP z PPP umoliwia tunelowanie protokou IP w ramach innego poczenia
IP, dlatego czsto wykorzystywane jest w sieciach VPN. Wykorzystanie protokou PPP
daje take dodatkowe moliwoci, jak np. przydzielanie adresw IP tunelowi, przekazywanie parametrw sieciowych, takich jak DNS, WINS itp.
Aby zainstalowa demon L2TP, wykonaj nastpujce czynnoci:
1. Pobierz rda pakietu ze strony http://www.xelerance.com/software/xl2tpd/.
2. Sprawd podpis pakietu.
3. Rozpakuj archiwum i wpisz komend
make
104
105
[lns default]
ip range = 192.168.10.198-192.168.10.250
local ip = 85.98.29.251
require chap = yes
;refuse pap = yes
require authentication = yes
name = ipsec
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd
length bit = yes
;pozostay
Zauwa, e wymg uwierzytelniania dotyczy tutaj poczenia PPP, a nie L2TP. Demon L2TP ma moliwo przeprowadzania swojego uwierzytelniania, ale nie jest to
w tym przypadku potrzebne.
Teraz utwrzmy plik z opcjami programu pppd /etc/ppp/options.l2tpd. Przykadow
konfiguracj przedstawiono na listingu 7.3.1.2.
Listing 7.3.1.2. Konfiguracja poczenia PPP
ipcp-accept-local
ipcp-accept-remote
require-mschap-v2
auth
proxyarp
idle 1800
mtu 500
mru 500
# eof
IP addresses
106
"test12" 192.168.10.220
"test12" 192.168.10.221
Twrcy programu OpenSWAN przyjli konwencj, aby stron poczenia nie nazywa
w klasyczny sposb: serwer i klient (lub te rdo i cel), tylko strona lewa
(ang. left) i strona prawa (ang. right). Ma to swoje uzasadnienie, poniewa tak naprawd i tak zestawiane s dwa niezalene skojarzenia SA dla kadego z kierunkw
transmisji. Poza tym nie zawsze jest jasne, ktra strona jest bardziej serwerem, a ktra
klientem (przykad czenia oddziaw firm). Przez left rozumie si lokaln konfiguracj,
107
telnicy mog mie problemy ze zrozumieniem pojawiajcych si komunikatw (jakkolwiek czasem moe si przyda).
Podczas debugowania polecam opcj control, a gdy wszystko zacznie dziaa none.
forwardcontrol=yes|no sprawdza, czy zaczone jest przekazywanie pakietw IP
(ang. IP forwarding). Jeeli nie, to je zacza. Po zakoczeniu dziaania tunelu przywraca poprzedni warto.
nat_traversal=yes|no domylnie: no. Wana opcja, jeeli spodziewasz si pocze
zza NAT-a (maskarady). Zaczenie jej sprawi, e OpenSWAN bdzie oczekiwa
take pocze na porcie UDP 4500, po ktrym przenoszone s pakiety IPSec.
virtual_private= okrela podsieci (z zakresu prywatnych klas IP), z ktrych
mog czy si klienci. Na og podaje si tutaj wszystkie pule IP zdefiniowane do
uytku prywatnego, z wyjtkiem puli uywanej w sieci firmowej, do ktrej uytkownicy
chc mie dostp poprzez VPN. Innymi sowy OpenSWAN potrzebuje zna adres
IP klienta. Jako e uytkownicy mog czy si zewszd, a my nie znamy prywatnych
klas adresowych uywanych w hotelach, hotspotach itd., podajemy wszystkie prywatne
pule adresowe. Z oczywistych wzgldw (problem z routingiem) musimy wykluczy
108
109
110
W przypadku Windowsa XP i nowszych sprawa sprowadza si do dodania nowego poczenia przy uyciu kreatora. Aby doda nowe poczenie, wykonaj ponisze czynnoci:
1. Wejd do Panelu sterowania i wybierz Poczenia sieciowe.
2. Uruchom Kreatora nowego poczenia. Kreator zapyta o rodzaj poczenia
111
Rysunek 7.4.2.
Kreator poczenia VPN
podaj adres IP
bramy IPSec
112
W tej chwili moesz poczy si z bram IPSec. Kliknij dwukrotnie myszk ikon
poczenia VPN (patrz rysunek 7.4.5). W oknie dialogowym podaj nazw uytkownika
i haso, a nastpnie kliknij przycisk Pocz.
Rysunek 7.4.5.
Pierwsze
poczenie IPSec
113
/var/log/all
Nastpnie przeaduj konfiguracj demona Syslog. Wpisz komend killall -HUP syslogd.
W produkcyjnym serwerze plik moe szybko przyrasta. Pamitaj, aby po zakoczonych
testach usun wpis z konfiguracji Sysloga.
Pocz si z serwerem na innej konsoli (jeli pracujesz lokalnie, przecz si na drug
konsol). Wpisz polecenie:
tail -f /var/log/all
Na tej konsoli bdziesz mia stay podgld logw systemowych. Jeeli na serwerze
dziaaj inne usugi, ktre moesz wyczy (np. poczta, dhcp itd.), zrb to im mniej
logw, tym atwiej je przeglda.
Przecz si na pierwsz konsol i sprawd nastpujce rzeczy:
1. Czy dziaa demon L2TP wpisz:
ipsecgw:~# ps aux|grep l2tp
root
16659 0.0 0.0
1656
560 ?
Ss
Oct31
0:00 xl2tpd
Powiniene zobaczy proces. Jeeli nie dziaa uruchom go, wpisujc xl2tpd.
Sprawd ponownie, czy widnieje na licie procesw. Jeeli nie zobacz,
co mwi logi na drugiej konsoli.
2. Sprawd poleceniem netstat, czy serwer nasuchuje na portach 4500 (NAT
Traversal), 500 (Pluto IKE) oraz 1701 (L2TP). W tym celu wpisz polecenie:
ipsecgw:~#
udp 0
0
udp 0
0
udp 0
0
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
26771/pluto
26771/pluto
26771/pluto
114
0
0
0
0
0
0
0
0
85.98.29.251:1701
127.0.0.1:500
85.98.29.251:500
192.168.10.98:500
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
16659/xl2tpd
26771/pluto
26771/pluto
26771/pluto
ESP. Najlepiej, jeli na czas testw w ogle wyczysz firewalla, tzn. ustawisz
domyln 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, ktry oznacza, e PFS
115
gdzie:
serverkey.pem to nazwa pliku z kluczem prywatnym, ktrego program
116
W tym momencie brama jest ju gotowa do dziaania. W nastpnym punkcie skonfigurujemy poczenie w systemie Windows.
117
Z menu Plik konsoli MMC wybierz opcj Dodaj/Usu przystawk (patrz rysunek 7.7.1).
Pojawi si nowe okno Dodaj/Usu przystawk kliknij przycisk Dodaj (patrz rysunek 7.7.2).
118
Na licie dostpnych przystawek zaznacz Certyfikaty, a nastpnie kliknij Dodaj uruchomi si kreator konfiguracji przystawki. Wybierz opcj Konto komputera, nastpnie
kliknij Dalej (patrz rysunek 7.7.3).
Rysunek 7.7.3.
Dodawanie
przystawki Certyfikaty
W nastpnym kroku wybierz opcj Komputer lokalny oraz kliknij przycisk Zakocz.
Z menu Plik wybierz opcj Zapisz, aby zapisa gotow przystawk na dysku. Nazwij j
sobie, jak chcesz np. ipsec.mmc.
Majc gotow przystawk, moesz zaimportowa certyfikat. W tym celu rozwi przystawk Certyfikaty, a nastpnie kliknij prawym przyciskiem myszy folder Osobisty.
Z menu wybierz Wszystkie zadania, a nastpnie opcj Importuj uruchomi si
kreator importu certyfikatw (patrz rysunek 7.7.4).
Rysunek 7.7.4.
Z menu Wszystkie
zadania wybierz
opcj Importuj
119
Kliknij przycisk Dalej, nastpnie wybierz opcj Automatycznie wybierz magazyn certyfikatw na podstawie typu certyfikatu (WANE!) oraz ponownie kliknij przycisk Dalej
(patrz rysunek 7.7.6).
Rysunek 7.7.6.
Import certyfikatu
uytkownika krok 2
120
Rysunek 7.7.7.
Kreator powinien
potwierdzi import
Rysunek 7.7.8.
Wybierz opcj
Importuj z menu
Kliknij przycisk Dalej, a nastpnie wybierz opcj Umie wszystkie certyfikaty w nastpujcym magazynie Zaufane gwne urzdy certyfikacji (patrz rysunek 7.7.10).
Wyjd z konsoli, zapisujc zmiany.
121
Rysunek 7.7.10.
Import certyfikatu CA
krok 2
Jak widzisz, procedura importu jest troch skomplikowana. Tak naprawd zoona jest tylko
za pierwszym razem. Majc przygotowan przystawk mmc (ipsec.mmc), moesz uy jej
na innych komputerach.
122
Upewnij si, e w zakadce Sie typ wirtualnej sieci prywatnej ustawiony jest na Sie VPN
z protokoem L2TP IPSec.
Zapisz zmiany i sprbuj si poczy. W polu Nazwa uytkownika i Haso podaj dane
uwierzytelniajce do poczenia PPP (plik /etc/ppp/chap-secrets na serwerze) patrz rysunek 7.7.1.2.
Rysunek 7.7.1.2.
Poczenie
z bram IPSec
W razie dalszych problemw z zestawieniem poczenia wykonaj kroki podane w punkcie 7.5.
Jeeli poczenie zestawio si, sprawd po stronie systemu Windows, jaki adres IP
otrzyma interfejs poczenia PPP/IPSec, oraz sprbuj pingn drug stron.
Na listingu 7.7.1.1 przedstawiono wycinek logw systemowych Linuksa. Zwr uwag
na poszczeglne fazy poczenia (wymiana kluczy przez IKE, nawizanie SA, enkapsulacja PPP w L2TP). W logach widzimy te, e poczenie nadeszo z nieznanego
adresu IP oraz e klient jest za NAT-em.
123
124
Widzimy tutaj informacje o dwch skojarzeniach SA (kierunek serwer-klient i klientserwer). Identyfikatory SPI dla kadego SA zostay podkrelone. Widzimy take, e
poczenie dziaa w trybie transportowym.
Na listingu 7.7.1.2 dla przykadu przedstawiem komunikat zarejestrowany przez demon
Syslog w przypadku prby nawizania poczenia przez uytkownika legitymujcego
si zym certyfikatem (podpisanym przez inne CA nie nasze).
Listing 7.7.1.2. Komunikat o odrzuconym certyfikacie uytkownika
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'
125
Funkcjonalnie przykad jest podobny do rozwizania z podrozdziau 5.4., rni si natomiast implementacj VPN. Zamiast dziaajcego w warstwie uytkownika programu
OpenVPN zestawimy tunel IPSec.
Do uwierzytelniania stron uyjemy tym razem kluczy RSA (klucz prywatny i publiczny).
Jeeli routery maj stae IP, moesz uy nawet klucza wspdzielonego (haso), ale
pamitaj, aby zablokowa na firewallu moliwo czenia si protokoem IPSec ze
wszystkich hostw z wyjtkiem adresu IP drugiej strony (w przeciwnym razie kto
bdzie mg prbowa odgadn haso, np. przez atak typu brute force).
Poniewa implementacja IPSec w Linuksie nie wymaga uycia protokou PPP oraz
L2TP, konfiguracja jest tutaj znacznie prostsza ni w poprzednim rozdziale. W zasadzie
gotowy plik konfiguracyjny znajduje si w przykadach doczonych razem z pakietem
OpenSWAN (/etc/ipsec.d/examples/linux-linux.conf).
Utwrz plik konfiguracyjny podany w listingu 7.9.1 bdzie to plik lokalizacji pierwszej
(Gliwice).
126
(routera w Gliwicach),
right=91.192.0.185 adres IP bramy odlegej lokalizacji (Bytom),
rightsubnet=192.168.30.0/24 sie LAN za routerem w Bytomiu,
rightrsasigkey=0sAQODH/CR klucz publiczny prawej strony.
Zauwa, e jawnie umieciem wpis pfs=yes. Nie musiaem tego robi, poniewa jest to
opcja domylna. Moim zamiarem byo podkrelenie, e w przypadku pocze Linux-Linux
PFS jest obsugiwana i nie naley jej wycza.
PFS (ang. Perfect Forward Secrecy) to, jak ju wiemy, poufno doskonaa. Przez pojcie
to rozumie si sposb wymiany kluczy sesyjnych w trakcie poczenia IPSec. Zaczenie
PFS zapewnia, e materia klucza gwnego moe by uywany do wygenerowania tylko
jednego klucza sesji. Przed utworzeniem nowego klucza sesji jest przeprowadzana wymiana kluczy (algorytm Diffiego-Hellmana) w celu wygenerowania nowego materiau klucza gwnego. Dziki zastosowaniu PFS uzyskanie przez atakujcego pojedynczego klucza
pozwala mu na odczytanie tylko wiadomoci zaszyfrowanych tym kluczem. Niestety, nie
127
Oczywicie z punktu widzenia routera w Bytomiu strona lewa to jego podsie, a prawa
siedziba firmy w Gliwicach.
Musisz jeszcze wygenerowa swoje klucze RSA i umieci je w konfiguracjach po
obu stronach. Zrb to wedug poniszych punktw:
1. Na obu routerach wpisz polecenie:
gliwice:~#ipsec rsasigkey 1024 > /root/key.rsa
128
2. Na obu routerach przekopiuj (myszk albo uywajc edytora vim) cig znakw
zaczynajcy si od #pubkey= i umie go w pliku ipsec.conf przy parametrze
leftrsasigkey=, przy czym usu ze skopiowanego klucza publicznego cig
znakw #pubkey. Dla przykadu parametr leftrsasigkey= z listingu 7.9.3
129