Protokół IPSec - asobcz.kis.p.lodz.plasobcz.kis.p.lodz.pl/IPSec_Racoon.pdf · Dopisujemy...
Transcript of Protokół IPSec - asobcz.kis.p.lodz.plasobcz.kis.p.lodz.pl/IPSec_Racoon.pdf · Dopisujemy...
Protokół IPSec
Implementacja z uŜyciem pakietu ‘racoon’
IPSec jest zbiorem protokołów słuŜących do:
• Implementacji bezpiecznych połączeń,
• Wymiany kluczy szyfrowania pomiędzy komputerami.
Protokoły tej grupy mogą być wykorzystywane do tworzenia Wirtualnej Sieci Prywatnej
(ang. ‘VPN’). VPN oparta na IPSec składa się z dwóch kanałów komunikacyjnych między
połączonymi hostami lub bramami VPN:
• Kanał wymiany kluczy, przez który przekazywane są dane związane z
uwierzytelnianiem oraz kodowaniem (klucze). Pracuje ze standardowym
protokołem UDP na porcie 500.
• Kanał transportowy (jeden lub więcej), który transmituje pakiety przez sieć
prywatną. Jest on oparty są na protokole ESP (port numer 50).
Instalacja oprogramowania
Instalacja oprogramowania moŜe odbyć się za pomocą poniŜszej komendy lub menedŜera
pakietów ‘Synaptic’:
aptitude install ipsec-tools racoon
ipsec-tool – oprogramowanie obsługujące protokoły IPSec (ESP, AH),
racoon – oprogramowanie serwera wymiany kluczy IKE (ang. ‘IPSec key exchange’)
Konfiguracja oprogramowania
Polecenia konfiguracyjne wykonujemy „ręcznie” jako administrator ‘root’ (‘sudo’ lub
‘sudo su’). Konfiguracja tunelu IPSec składa się z konfiguracji statycznej i dynamicznej.
W tym celu warto wykorzystać skrypty pomocnicze. Umownie oznaczamy komputery w
sieci jako serwer i klient.
Konfiguracja statyczna tunelu IPsec
Skrypt ipsec-trans.sh tworzący tunel, umieszczamy w katalogu /etc i nadajemy mu
prawa do wykonywania:
chmod +x /etc/ipsec-trans.sh
a następnie edytujemy w nim odpowiednie adresy IP:
#!/usr/sbin/setkey -f flush; spdflush; # ESP add IP_serwera IP_klienta esp 15701 -E 3des-cbc "123456789012345678901234"; add IP_klienta IP_serwera esp 24501 -E rijndael-cbc "987654321098765432109876"; spdadd IP_serwera IP_klienta any -P out ipsec esp/transport//require; spdadd IP_klienta IP_serwera any -P in ipsec esp/transport//require; #ESP - to protokół transportowy dla IPSec; działa n a porcie 50, wi ęc trzeba go udost ępni ć. #3des-cbc oraz rijndael-cbc - algorytmy szyfrowania #123456789012345678901234 – przykładowy klucz szyfr owania #IP_serwera oraz IP_klienta - adresy umownie oznacz onych stacji #spdadd – polecenie okre śla reguł ę dla danych wej ściowych i wyj ściowych w zale Ŝności od stacji, na której wprowadzamy ustawienia.
Skrypt uruchamiamy poleceniem:
/etc/ipsec-trans.sh Generowanie kluczy publicznych i prywatnych zaangaŜowanych stron (opcja) Edytujemy skrypt cert.sh, generujący klucze publiczny i prywatny (o ile nie zrobiliśmy tego wcześniej), wstawiając odpowiednie nazwy komputerów w zaleŜności od umownej roli jaką będą pełnić (klient/serwer): #!/bin/bash nazwa="umowna nazwa hosta" openssl req -new -nodes -newkey rsa:1024 -sha1 -key form PEM -keyout ${nazwa}.private -outform PEM -out request.pem openssl x509 -req -in request.pem -signkey ${nazwa} .private -out ${nazwa}.public #skrypt wykonuje polecenia biblioteki openssl. Twor zy klucze prywatne oraz publiczne dla danej stacji. #w polu nazwa="" definijemy umown ą nazw ę komputera Podczas generowania kluczy odpowiadamy na pytania (kraj, region, nazwa hosta etc. – vide instrukcja do narzędzia OpenSSL) a wygenerowane pliki kopiujemy do katalogu /etc/racoon. Za pomocą polecenia scp (moŜemy uŜyć usługi FTP ale równieŜ skorzystać z Samby lub innej bezpiecznej metody transferu) plik klucza publicznego (‘klient.public’) naleŜy dostarczyć na stację zdalną – tak, aby obie strony szyfrowanego połączenia dysponowały kluczem publicznym partnera, np.:
scp klient.public kowalski@domena:/home/ko walski/
a następnie, jako administrator zdalnej stacji (kowalski@domena) przekopiować plik do
katalogu z plikami konfiguracyjnymi:
cp klient.public /etc/racoon/
Konfiguracja dynamicznego tunelu IPSec
W lokalizacji /etc/racoon tworzymy plik konfiguracyjny ‘racoon.conf’ i wstawiamy do niego odpowiednie nazwy kluczy oraz adres IP zdalnego hosta (miejsca zaznaczone pogrubieniem):
path certificate "/etc/racoon/"; sainfo anonymous { pfs_group 1; lifetime time 20 sec; encryption_algorithm 3des ; authentication_algorithm hmac_sha1; compression_algorithm deflate ; } remote adres_zdalnego_hosta { exchange_mode aggressive,main; my_identifier asn1dn; peers_identifier asn1dn; certificate_type x509 "klient.public" "klient.priv ate"; peers_certfile x509 "server.public"; proposal { encryption_algorithm 3des; hash_algorithm sha1; authentication_method rsasig; dh_group 2 ; } }
Wiersz rozpoczynający się od: certificate_type wskazuje pliki stanowiące własne klucz publiczny i prywatny. Natomiast linia zaczynająca się peers_certfile wskazuje na plik, który jest kluczem publicznym zdalnego hosta.
Uruchomienie tunelu IPSec
Dopisujemy zawartość skryptu ipsec-trans.sh do pliku /etc/ipsec-tools.conf Komentujemy linie zaczynające się od poleceń add (definiują tzw. asocjacje, które juŜ wcześniej zostały stworzone przez uruchomienie skryptu). Następnie za pomocą polecenia:
/etc/init.d/racoon restart
restartujemy demona IKE. Konfiguracja i uruchomienie stacji zdalnej na drugim końcu kanału wygląda analogicznie.
Weryfikacja poprawności działania tunelu IPSec
Weryfikacji działania tunelu IPSec moŜna dokonać za pomocą polecenia ‘ping’ lub
programu ‘wireshark’. W oknie konsoli moŜna takŜe otworzyć plik ‘syslog’, który będzie
zawierał ewentualne błędy (komenda ‘tail’ – pokazuje końcowe wpisy w logu, parametr
‘-f’ pozwala podglądać najświeŜsze zdarzenia systemowe):
tail –f /var/log/syslog
Z kolei aktywność samego procesu ‘racoon’ i to, którym plikiem został on zainicjowany, moŜna zweryfikować poleceniem:
ps –ef |grep racoon
w którym: ‘ps’, to komenda wyświetlająca aktywne procesy, ‘-ef’ to parametr
definiujący sposób formatowania listowanych procesów, symbol ‘|’ przekazuje wyjście
jednego programu na wejście kolejnego (w tym wypadku ‘grep’). Program ‘grep’ w tym
przypadku filtruje wiersze zawierające ciąg ‘racoon’. W przypadku błędów naleŜy
ponownie uruchomić skonfigurować demona IPSec za pomocą skryptu ‘ipsec-trans.sh’
oraz restartować demona IKE (‘racoon’).