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ż
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
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
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
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
Plik z chomika:
marcinek061
Inne pliki z tego folderu:
Zostan-administratorem-sieci-komputerowej-cz.9.PDF
(6996 KB)
Zostan-administratorem-sieci-komputerowej-cz.8.PDF
(576 KB)
Zostan-administratorem-sieci-komputerowej-cz.7.PDF
(2322 KB)
Zostan-administratorem-sieci-komputerowej-cz.6.pdf
(1365 KB)
Zostan-administratorem-sieci-komputerowej-cz.5.pdf
(1176 KB)
Inne foldery tego chomika:
CISCO
Google.Hacking
Zgłoś jeśli
naruszono regulamin