Zostan-administratorem-sieci-komputerowej-cz.6.pdf

(1365 KB) Pobierz
399021664 UNPDF
Sieci komputerowe
Sieci komputerowe: część szósta
administratorem sieci
komputerowej
Część szósta (6/9): Firewalle i wirtualne sieci prywatne
Rafał Kułaga
W poprzedniej części cyklu omówione zostały podstawowe zagadnienia związane z bezpieczeństwem
sieci komputerowych. Przedstawiona została również analiza zagrożeń, na jakie narażone są serwery
oraz komputery klienckie. Po prezentacji podstawowych zasad bezpiecznej instalacji i koniguracji
systemu operacyjnego, przyszedł czas na zapoznanie się z oprogramowaniem, które pozwoli nam
zwiększyć bezpieczeństwo naszej sieci – irewallami oraz narzędziami do tworzenia wirtualnych
sieci prywatnych. Ich jednoczesne wykorzystanie sprawi, że Twoja sieć będzie w pełni odporna na
większość ataków. Zapraszam do lektury!
zapewnienie bezpieczeństwa sieci kom-
puterowej jest procesem ciągłym. Każ-
dy dzień przynosi bowiem nowe infor-
macje o błędach znajdowanych w oprogramowaniu, któ-
re wcześniej uznawane było za bezpieczne. Z tego wzglę-
du nigdy nie powinieneś zaprzestawać zdobywania informa-
cji na tematy związane z bezpieczeństwem sieci komputero-
wych, a w szczególności – błędów odnajdywanych w opro-
gramowaniu.
Analiza zagrożeń dla klientów i serwerów przedstawio-
na w poprzedniej części również nie jest pełna ani uniwer-
salna – wszystko zależy bowiem od koniguracji Twojej sie-
ci oraz charakteru środowiska, w którym jest zastosowana.
Pomimo tego, wypływają z niej ważne wnioski – każdy z
komputerów w naszej sieci jest narażony na ataki.
Podstawowe zagadnienia z dziedziny hardeningu syste-
mu operacyjnego Linux przedstawione w poprzednim arty-
kule, powinny być dla Czytelnika punktem wyjścia do dal-
szego zgłębiania zasad bezpiecznej koniguracji systemu
operacyjnego. W internecie dostępnych jest wiele narzę-
dzi przeznaczonych do automatycznej analizy bezpieczeń-
stwa systemu operacyjnego. Obejmuje ona zazwyczaj takie
aspekty, jak konta użytkowników, aktualizacje oprogramo-
wania, wykrywanie rootkitów itp.
Hardening systemu operacyjnego jest niezbędnym
krokiem do odpowiedniego zabezpieczenia każdego z
serwerów sieciowych. Niezależnie od ich przeznaczenia,
konieczna jest ponadto koniguracja irewalla, którą zaj-
miemy się w tym artykule. W wielu przypadkach może-
my również dodatkowo zwiększyć bezpieczeństwo po-
łączeń poprzez zastosowanie tzw. wirtualnych sieci pry-
watnych (VPN – Virtual Private Network ), których kon-
iguracja zostanie przedstawiona na przykładzie progra-
mu OpenVPN.
Firewalle i wirtualne sieci prywatne
Firewalle (zwane niekiedy ścianami lub zaporami ognio-
wymi) oraz wirtualne sieci prywatne są dwoma bardzo
efektywnymi sposobami zabezpieczania połączeń oraz sie-
ci komputerowych. Ich przeznaczenie oraz sposób działa-
nia jest jednak zupełnie odmienne – warto zapoznać się z
tymi różnicami oraz zastanowić się, kiedy użycie każdej z
tych technik jest uzasadnione.
64
kwiecień 2010
Zostań
W piątej części cyklu napisane zostało, iż
399021664.032.png 399021664.033.png 399021664.034.png
 
Sieci komputerowe
Sieci komputerowe: część szósta
Firewalle – iltrowanie ruchu sieciowego
Firewalle, jak wskazuje nazwa, służą do od-
dzielania sieci komputerowych. Taka deinicja
zdradza nam typowe położenie zapór w topo-
logii sieci – znajdują się one zazwyczaj w bli-
skim sąsiedztwie routerów. W przypadku re-
alizacji routingu przy pomocy standardowych
komputerów PC, bardzo często spotkamy się
z sytuacją, gdy funkcje te będą pełnione przez
to samo urządzenie – w takim przypadku mó-
wimy zazwyczaj o routerze iltrującym ( Filte-
ring Router ).
Jednym z głównych zastosowań irewalli
jest blokowanie niepożądanego (niebezpiecz-
nego) ruchu sieciowego. W większości sieci
komputerowych mamy do czynienia z sytu-
acją, w której przeważają urządzenia klienckie.
Usługi sieciowe są bowiem udostępniane przez
mniej liczną grupę serwerów. W takim przypad-
ku bez utraty funkcjonalności możemy odiltro-
wać próby nawiązania połączenia z klientami.
Podobnie jest w przypadku serwerów – zablo-
kowanie wszelkiego ruchu poza określonym
zbiorem portów znacznie zwiększy ich bez-
pieczeństwo.
Ze względu na przeznaczenie, wyróżnić
można trzy podstawowe typy irewalli:
Wirtualne sieci prywatne
– bezpieczne połączenie
Wirtualne sieci prywatne umożliwiają zestawie-
nie wirtualnych połączeń (zwanych tunelami)
pomiędzy hostami. Dane przesyłane za pomocą
wirtualnej sieci prywatnej mogą być szyfrowa-
ne oraz kompresowane, co umożliwia uzyskanie
wysokiej wydajności oraz bezpieczeństwa.
W przypadku większości oprogramowania
służącego do realizacji rozwiązań tej klasy, prze-
ważają programy działające w oparciu o wirtu-
alne interfejsy. Pozwala to na obsługę tuneli w
taki sam sposób, jak w przypadku zwykłych in-
terfejsów sieciowych. Koniguracja interfejsów
oraz nawiązywanie połączeń odbywa się po-
przez odpowiednie narzędzia.
W tym artykule przedstawiona zostanie
koniguracja wirtualnych sieci prywatnych w
oparciu o program OpenVPN. Umożliwia on
łatwe oraz bezpieczne zestawianie połączeń
pomiędzy węzłami. Oprócz klasycznej meto-
dy uwierzytelniania wykorzystującej klucze sta-
tyczne (kryptograia symetryczna), OpenVPN
umożliwia zastosowanie infrastruktury klucza
publicznego PKI ( Public Key Infrastructure ), co
znacznie upraszcza zarządzanie dużymi wirtual-
nymi sieciami prywatnymi.
• Tabela nat – służy do realizacji funkcji
DNAT ( Destination NAT ) i SNAT ( Source
NAT ), przez co umożliwia wykorzystanie
jednego publicznego adresu IP przez wie-
le komputerów sieci lokalnej.
• Tabela ilter – służy do realizacji iltrowa-
nia pakietów. Przy pomocy zasad dodawa-
nych do tabeli ilter ustala się, jaki ruch po-
winien być blokowany.
Każda z tabel dzieli się z kolei na tzw. łańcu-
chy ( chains ). Oprócz łańcuchów predeiniowa-
nych, można dodawać własne łańcuchy. Łańcu-
chy predeiniowane tabeli nat to:
PREROUTING – służy do zmiany warto-
ści pól nagłówków pakietów przed routin-
giem;
OUTPUT – służy do zmiany wartości pól na-
główków pakietów generowanych lokal-
nie;
POSTROUTING – służy do zmiany wartości
pól nagłówków pakietów po routingu.
W tabeli ilter również zdeiniowane są trzy łań-
cuchy:
Firewalle hosta – służące do iltrowania
ruchu sieciowego na poziomie hosta do-
celowego (do którego adresowane są pa-
kiety). Każdy z komputerów podłączo-
nych do sieci powinien posiadać przy-
najmniej podstawowy irewall;
Firewalle serwerów – służące do il-
trowania ruchu sieciowego na pozio-
mie serwera docelowego. W działaniu
są bardzo podobne do irewalli działa-
jących na komputerach klienckich, róż-
nica dotyczy zazwyczaj większych wy-
magań, jakie są im stawiane – pamiętaj-
my, iż serwery będą zazwyczaj dostęp-
ne dla komputerów należących do sieci
rozległej;
Firewalle sieci – służące do iltrowania
ruchu na poziomie sieci. Tego typu za-
pory stosujemy zazwyczaj na kompute-
rach będących routerami lub w ich bli-
skim sąsiedztwie (w topologii sieci). Są
one pierwszą linią obrony przed niechcia-
nym ruchem oraz atakami crackerów.
Iptables
– struktura i zasada działania
W artykule przedstawiony zostanie sposób kon-
iguracji irewalla przy wykorzystaniu pakie-
tu iptables. Celowe jest zatem zapoznanie się z
podstawowymi informacjami na temat struktury
i zasady działania tego programu.
Iptables jest pakietem służącym do komuni-
kacji ze stosem sieciowym systemu Linux (a kon-
kretnie frameworkiem Netilter ). Do prawidłowe-
go zrozumienia zasady działania tego pakietu ko-
nieczne jest zrozumienie, iż nie jest to demon
(program działający w tle), lecz narzędzie wy-
woływane wtedy, gdy potrzebujemy zmienić lub
sprawdzić ustawienia irewalla. Sama funkcjo-
nalność w zakresie iltrowania pakietów i transla-
cji adresów realizowana jest poprzez jądro syste-
mu. Dokonane przez nas zmiany są więc aktyw-
ne do czasu ponownego uruchomienia systemu.
Sposób obsługi pakietów przez iptables jest
złożony – zajmiemy się tu jedynie jego podsta-
wowym opisem. Każdy pakiet, odbierany przez
interfejs komputera, przechodzi przez 3 prede-
iniowane tabele ( tables ) – tabelę mangle , nat
oraz ilter (w przedstawionej kolejności). Każda
z tabel ma odmienne przeznaczenie:
INPUT – służy do iltrowania pakietów
przychodzących;
OUTPUT – służy do iltrowania pakietów
wychodzących;
FORWARD – służy do iltrowania pakietów
przekazywanych.
Koniguracja irewalla sprowadza się w głów-
nej mierze do dodawania odpowiednich za-
sad ( rules ) do łańcuchów. Oprócz tego, w ipta-
bles mamy do czynienia z tzw. politykami ( po-
licy ), określającymi domyślny sposób obsłu-
gi pakietów.
Koniguracja pracy iptables
Przed zapoznaniem się z przykładowymi koni-
guracjami irewalla, warto poznać podstawowe
komendy programu iptables. Zajmiemy się te-
raz poleceniami związanymi z obsługą polityk,
tabeli oraz zasad.
Jak zostało napisane, iptables jest progra-
mem przestrzeni użytkownika, pozwalającym
na zmianę koniguracji elementów stosu siecio-
wego systemu Linux. Zmiany w niej wprowa-
dzone zachowują ważność do czasu ponownego
uruchomienia systemu, toteż odpowiednie proi-
le pracy irewalla warto organizować w skrypty
– znacznie ułatwi nam to pracę. Ponadto należy
pamiętać, iż irewall musi być skonigurowany
przed podłączeniem do sieci zewnętrznej – nie-
dopuszczalne jest nawet chwilowe wystawianie
hosta lub sieci na ataki.
W artykule szczegółowo omówiony zostanie
przykład budowy irewalla dla pojedynczego
hosta. Budowa irewalla dla sieci wykorzystu-
jącej NAT do podziału łącza internetowego po-
lega na dodaniu odpowiednich reguł do koni-
guracji przedstawionej w artykule poświęco-
nym routingowi.
• Tabela mangle – służy do zaawansowanej
manipulacji pakietami (zmiana wartości
pól nagłówków protokołów warstwy sie-
ciowej i transportu).
www.lpmagazine.org
65
399021664.001.png 399021664.002.png 399021664.003.png 399021664.004.png 399021664.005.png 399021664.006.png 399021664.007.png 399021664.008.png 399021664.009.png 399021664.010.png 399021664.011.png
 
Sieci komputerowe
Sieci komputerowe: część szósta
Najczęściej używaną tabelą pakietu iptables
jest tabela ilter . Z tego względu, jeżeli nie poda-
my tabeli, wszystkie zmiany będą wprowadza-
ne dla tabeli ilter .
Dodawanie reguł i zmiana polityk
Domyślne polityki ustawiamy przy pomocy po-
lecenia iptables -t table -P chain tar-
get . Parametr table określa nazwę tabeli, zaś
parametry chain i target – odpowiednio łań-
cuch i cel pakietu. Przykład ustawienia domyśl-
nej polityki ACCEPT (przyjęcie pakietu) dla łań-
cucha OUTPUT tabeli NAT ma więc postać ipta-
bles -t nat -P OUTPUT ACCEPT .
Bardziej szczegółowe opcje koniguracyjne
możemy wprowadzać przy użyciu reguł doda-
wanych za pomocą polecenia iptables -t ta-
ble -A chain -p protocol [options] -s
source -d destination -i in_interface
-o out_interface -j target . Parametr cha-
in określa łańcuch, do którego dodana zostanie
tworzona reguła, protocol – protokół, którego
dotyczy. W zależności od określonego protoko-
łu, specyiczne opcje możemy dodać w miej-
scu określonym poprzez parametr options . Po-
przez ustawienie parametrów source i desti-
nation określamy adres źródłowy i docelowy
pakietu, którego dotyczy tworzona reguła, zaś
in_interface i out_interface deiniują in-
terfejs wejściowy i wyjściowy. Parametr tar-
get deiniuje cel, do którego przekazany zo-
stanie pakiet. Przykład dodania nowej reguły
do łańcucha INPUT tabeli ilter ma następującą
postać iptables -A INPUT -p tcp --syn -
j DROP . Dodanie przedstawionej reguły spowo-
duje odrzucanie wszystkich pakietów protokołu
TCP z lagą SYN (nawiązanie połączenia).
Listing 1. Koniguracja iptables do zastosowania jako irewalla pojedynczego hosta
#!/bin/sh
echo "Starting host irewall..."
#wczytanie niezbędnych modułów jądra
modprobe ip_tables
modprobe ip_conntrack
modprobe iptable_ilter
modprobe iptable_nat
modprobe iptable_mangle
modprobe ipt_LOG
modprobe ipt_limit
modprobe ipt_state
modprobe ipt_MASQUERADE
modprobe ip_conntrack_ftp
#usunięcie reguł i łańcuchów użytkownika tabeli ilter
iptables -F
iptables -X
#usunięcie reguł i łańcuchów użytkownika tabeli nat
iptables -t nat -F
iptables -t nat -X
#usunięcie reguł i łańcuchów użytkownika tabeli mangle
iptables -t mangle -F
iptables -t mangle -X
#wyzerowanie liczników
iptables -Z
iptables -t nat -Z
iptables -t mangle -Z
Wyświetlanie istniejących reguł i polityk
Gdy po koniguracji irewall nie działa tak, jak-
byśmy tego oczekiwali, warto wyświetlić i prze-
analizować istniejące reguły i domyślne polity-
ki. Można tego dokonać za pomocą komendy
iptables -t table -L chain -v --line-
numbers , gdzie table i chain oznaczają odpo-
wiednio tabelę i łańcuch. Parametry -v i --li-
ne-numbers powodują wyświetlenie dodatko-
wych informacji oraz numerację reguł (co jest
bardzo przydatne przy ich usuwaniu).
#koniguracja polityk poszczególnych tabel
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT
Usuwanie reguł
i zdeiniowanych łańcuchów
Gdy w trakcie dodawania reguły popełniliśmy
błąd, możemy ponownie uruchomić kompu-
ter lub usunąć regułę za pomocą odpowiednie-
go polecenia. Pierwsze rozwiązanie jest oczywi-
ście mało praktyczne, tak więc przyjrzyjmy się
komendom służącym do przywracania iptables
do pierwotnego stanu.
Usunięcie reguły odbywa się przy użyciu
polecenia iptables -t table -D chain N ,
gdzie N oznacza numer reguły (wyświetlony za
pomocą polecenia opisanego w poprzednim pa-
ragraie).
#przepuszczanie ruchu na interfejsie loopback
iptables -A INPUT -i lo -j ACCEPT
#przepuszczanie pakietów należących do
#połączeń zainicjalizowanych przez hosta
iptables -A INPUT -m state –state --state ESTABLISHED,RELATED -j ACCEPT
#przepuszczanie pakietów protokołu ICMP
iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
66
kwiecień 2010
399021664.012.png 399021664.013.png 399021664.014.png 399021664.015.png
 
Sieci komputerowe
Sieci komputerowe: część szósta
W celu usunięcia łańcucha zdeiniowanego
przez użytkownika, należy użyć polecenia ip-
tables -X chain , gdzie chain oznacza nazwę
łańcucha. Wywołanie polecenia bez podania na-
zwy spowoduje usunięcie wszystkich zdeinio-
wanych łańcuchów.
Wyzerowanie liczników, odpowiadających
poszczególnym łańcuchom, odbywa się przy
użyciu polecenia iptables -Z chain , gdzie
chain oznacza nazwę łańcucha.
DROP ), przy przepuszczaniu ruchu wychodzące-
go (pozostałe łańcuchy).
Następnym krokiem jest dodanie reguły ze-
zwalającej na ruch przychodzący na interfejsie
loopback (lo). Jest to niezbędne do zapewnienia
poprawnego działania oprogramowania wyko-
rzystującego lokalne połączenia oparte na gniaz-
dach ( socket ). Konieczne jest również dodanie
reguły powodującej odbieranie ruchu przycho-
dzącego w odpowiedzi na nawiązywane połą-
czenia – możemy to osiągnąć poprzez akcep-
towanie pakietów o stanie ESTABLISHED (nale-
żących do nawiązanych połączeń) oraz RELA-
TED (nawiązujących nowe połączenie, należą-
cych jednak do istniejących połączeń w kontek-
ście protokołów wyższych warstw).
Pakiety protokołu ICMP służą m.in. do
przesyłania informacji o błędach komunika-
cji – powinny więc być przepuszczane przez
zaporę. Według koniguracji przedstawionej
na Listingu 1 akceptowane są komunikaty Ti-
me Exceeded (przekroczono czas życia pakie-
tu) oraz Destination Unreachable (nie odnale-
ziono hosta docelowego). Aby możliwe było
testowanie łączności przy pomocy programu
ping, należy dodatkowo zezwolić na przesyła-
nie komunikatów typu Echo Request ( -p icmp
--icmp-type echo-request ).
la, ponieważ umożliwia bezpieczną weryika-
cję jego pracy. W przypadku gdy oprócz regu-
ły z celem LOG znajduje się reguła z celem AC-
CEPT , pakiet zostanie zaakceptowany oraz odno-
towany w logu.
Sposób zapisu informacji możemy kontro-
lować poprzez dodanie odpowiednich opcji do
reguły z celem LOG . Dodanie opcji --log-pre-
ix "nazwa" ułatwia parsowanie pliku z loga-
mi przez narzędzia takie jak grep dzięki dodaniu
preiksu nazwa .
Koniguracja irewalla dla poje-
dynczego hosta
Po przedstawieniu podstawowych informacji
na temat działania i koniguracji pakietu ipta-
bles, czas na prezentację przykładu zastosowa-
nia jako irewalla dla pojedynczego hosta. Za-
cznijmy jednak od określenia wymagań, które
powinien spełniać.
Testowanie irewalla
Po zakończeniu koniguracji irewalla, niezależ-
nie od miejsca jego zastosowania, należy prze-
prowadzić testy sprawdzające, czy spełnia on
przyjęte założenia. Narzędzia zaprezentowane
w tym paragraie doskonale nadają się również
do testowania bezpieczeństwa całej sieci.
Przed przystąpieniem do testowania ire-
walla, warto zastanowić się, z jakiego miejsca
(w topologii sieci) testy powinny być przepro-
wadzane. Należy bowiem pamiętać, iż akcje po-
dejmowane przez irewall w stosunku do pakie-
tów mogą być różne, w zależności od sieci, w
której się znajdujemy.
Doskonałym narzędziem do testowania
zapór ogniowych jest nmap. Najnowsza wer-
sja tego programu jest dostępna na stronie http:
//nmap.org/ oraz w repozytoriach wszystkich
dystrybucji. Funkcje programu nmap dalece wy-
kraczają poza standardowe skanowanie portów
– więcej informacji na ich temat znajdziesz w
dokumentacji ( man nmap ). Aby sprawdzić, któ-
re porty danego adresu są otwarte, należy wydać
polecenie nmap adres_ip .
W trakcie testowania irewalli bardzo przy-
datne są również narzędzia takie jak:
Wymagania
Tworzone ustawienia irewalla będą przezna-
czone dla komputerów klienckich sieci. Na żad-
nym z nich nie ma uruchomionych usług serwe-
rowych, chcemy jednak umożliwić nawiązywa-
nie połączeń na pewnych portach, w związku z
wykorzystaniem aplikacji P2P ( Peer-to-Peer ).
Podsumowanie powyższych wymagań
prowadzi do wniosku, iż nasz irewall powi-
nien blokować ruch przychodzący (oprócz wy-
szczególnionych portów), przepuszczając jed-
nocześnie cały ruch wychodzący z danego kom-
putera.
Logi pakietu iptables
Domyślnie irewall nie zapisuje informacji o
przebiegu pracy. Mamy jednak możliwość ak-
tywowania zapisu informacji dla każdej z reguł
– wystarczy podać w niej jako cel LOG (parametr
-j LOG ). Spowoduje to odrzucenie danego pa-
kietu oraz zapisanie odpowiedniej informacji w
pliku /var/log/kern.log . Metoda ta często stoso-
wana jest do testowania nowych reguł irewal-
Koniguracja iptables
Przykładowy skrypt koniguracyjny progra-
mu iptables do zastosowania na komputerach
klienckich przedstawiony jest na Listingu 1.
Zajmijmy się teraz omówieniem znaczenia po-
szczególnych poleceń.
Skrypt rozpoczyna się od wyświetlenia ko-
munikatu informującego o uruchomieniu i-
rewalla. Następnie wczytywane są odpowied-
nie moduły jądra – tę część skryptu można po-
minąć, jeżeli są one wbudowane w jądro. Ko-
lejnym krokiem jest usunięcie istniejących re-
guł i łańcuchów – jest to niezbędne, ponieważ
ustawienia te mogłyby zakłócać pracę irewalla.
Wyzerowanie liczników nie jest konieczne, je-
żeli nie korzystamy z ich wskazań.
Właściwa koniguracja irewalla rozpo-
czyna się od dodania domyślnych polityk, któ-
re będą stosowane do pakietów nieodpowiada-
jących żadnym regułom. Zawsze powinieneś
rozpoczynać skrypty koniguracyjne od określe-
nia polityk – pozwoli to na zachowanie porząd-
ku nawet przy dużej liczbie reguł. W naszym
przypadku decydujemy się na odrzucanie ruchu
przychodzącego (łańcuchy INPUT i FORWARD , cel
Listing 2. Koniguracja OpenVPN do połączenia z zastosowaniem kluczy statycznych
##serwer.conf
##połączenie z zastosowaniem statycznych kluczy
remote adres.ip.klienta
dev tun
ifconig 10.0.0.1 10.0.0.2
comp-lzo
secret /etc/openvpn/static.key
daemon
##client.conf
##połączenie z zastosowaniem statycznych kluczy
remote adres.ip.serwera
dev tun
ifconig 10.0.0.2 10.0.0.1
comp-lzo
secret /etc/openvpn/static.key
daemon
www.lpmagazine.org
67
399021664.016.png 399021664.017.png 399021664.018.png 399021664.019.png 399021664.020.png 399021664.021.png 399021664.022.png 399021664.023.png 399021664.024.png 399021664.025.png 399021664.026.png 399021664.027.png
 
Sieci komputerowe
Sieci komputerowe: część szósta
• hping – pozwalający na tworzenie sprepa-
rowanych pakietów oraz analizę odebra-
nych danych;
• tcpdump i Wireshark – narzędzia służące
do przechwytywania i analizy ruchu sie-
ciowego.
stałe aplikacje, w przeciwieństwie do np. systemu
IPSec, który działa na poziomie jądra. Przekłada
się to oczywiście na zwiększony poziom bezpie-
czeństwa oraz łatwiejszą instalację i konigurację.
Dużą zaletą OpenVPN jest możliwość
działania jako klient i serwer z jednej instalacji
– rola hosta jest deiniowana w plikach koni-
guracyjnych. W celu zapewnienia szyfrowania,
OpenVPN korzysta z protokołu SSL/TLS (bi-
blioteka OpenSSL), będącego sprawdzonym i
bezpiecznym rozwiązaniem. Obsługiwana jest
cała gama metod kryptograicznych, zarówno
symetrycznych, jak i asymetrycznych. Oprócz
tego, możliwe jest zastosowanie kompresji da-
nych w czasie rzeczywistym z wykorzystaniem
bezstratnego algorytmu LZO ( Lempel-Ziv-Obe-
rhumer ), co znacznie poprawia działanie two-
rzonego tunelu na wolniejszych łączach.
OpenVPN wykorzystuje wirtualne inter-
fejsy TAP/TUN w celu niskopoziomowego do-
stępu do sieci. Są one widoczne w systemie ja-
ko standardowe interfejsy, co oznacza, iż łatwo
można iltrować obsługiwany przez nie ruch
oraz stosować je w routingu.
Cechy te czynią OpenVPN doskonałym na-
rzędziem do tworzenia wirtualnych sieci pry-
watnych. Czytelnik zainteresowany innymi roz-
wiązaniami tej klasy więcej informacji znajdzie
na stronach wymienionych w ramce W Sieci .
Polecam zapoznanie się ze wszystkimi powyż-
szymi programami, ponieważ ich funkcje do-
skonale się dopełniają, tworząc razem zestaw
oprogramowania, z którego pomocą poradzimy
sobie z każdym problemem z irewallem.
Instalacja OpenVPN
Najnowsza wersja programu OpenVPN jest do-
stępna do pobrania na stronie http://openvpn.net/
index.php/open-source/downloads.html oraz w
repozytoriach większości dystrybucji.
Przed rozpoczęciem instalacji OpenVPN
należy zainstalować niezbędne biblioteki:
OpenSSL ( http://www.openssl.org/ ) oraz LZO
( http://www.oberhumer.com/opensource/lzo/ ).
Kompilacja i instalacja OpenVPN przebiega
w standardowy sposób: należy wydać kolejno po-
lecenia ./conigure , make oraz make install .
OpenVPN – wprowadzenie
W dalszej części artykułu przedstawione zosta-
ną metody tworzenia wirtualnych sieci prywat-
nych w oparciu o program OpenVPN.
OpenVPN jest demonem działającym w
przestrzeni użytkownika. Oznacza to, że podle-
ga on dokładnie takim samym regułom, jak pozo-
Listing 3. Koniguracja OpenVPN do połączenia z zastosowaniem PKI
##serwer.conf
##połączenie z zastosowaniem PKI
local adres.serwera
port 1194
proto udp
dev tun
daemon
server adres.ip maska
push “route adres.ip maska”
push “dhcp-option DNS adres.ip”
max-clients 30
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/serwer.crt
key /etc/openvpn/keys/serwer.key
dh dh1024.pem
tls-auth /etc/openvpn/keys/tls.key 0
comp-lzo
keepalive 10 120
log-append /var/log/openvpn.log
verb 4
mute 10
Połączenia z zastosowaniem
kluczy statycznych
Pierwsze połączenie zestawimy z zastosowa-
niem szyfrowania opartego o klucze statycz-
ne. Jest to bardzo proste rozwiązanie, jednak
w przypadku większej ilości klientów powo-
duje problemy z dystrybucją kluczy. W sytuacji,
gdy konieczne jest cofnięcie uprawnień jedne-
go użytkownika, niezbędne jest ponowne roz-
prowadzenie kluczy. Z tego względu klucze sta-
tyczne najlepiej nadają się do zestawiania połą-
czeń typu punkt-punkt w sieciach o niewielkiej
dynamice.
Konigurację należy rozpocząć od wygene-
rowania 2048-bitowego klucza. Można tego do-
konać za pomocą polecenia openvpn --genkey
--secret static.key . Plik static.key na-
leży umieścić na zdalnym komputerze – moż-
na w tym celu wykorzystać pendrive lub polece-
nie scp (na zdalnym komputerze musi być uru-
chomiony serwer SSH):
##klient.conf
##połączenie z zastosowaniem PKI
client
pull
dev tun
proto udp
remote adres.ip.serwera port
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/klient1.crt
key /etc/openvpn/keys/klient1.key
tls-auth /etc/openvpn/keys/tls.key 1
comp-lzo
ns-cert-type server
scp static.key adres.ip:/etc/openvpn/
keys
Niedopuszczalne jest przesyłanie klucza przy
pomocy protokołów transmitujących dane bez
odpowiednio mocnego szyfrowania (np. SMTP,
większość protokołów wykorzystywanych w
komunikatorach). Należy również pamiętać o
nadaniu plikowi odpowiednich uprawnień.
Po przesłaniu kluczy należy utworzyć pliki
koniguracyjne programu OpenVPN dla klienta
i serwera (Listing 2). Znaczenie poszczególnych
opcji w nich zawartych jest następujące:
68
kwiecień 2010
399021664.028.png 399021664.029.png 399021664.030.png 399021664.031.png
 
Zgłoś jeśli naruszono regulamin