Implementacje IPsec

Transkrypt

Implementacje IPsec
Implementacje IPsec - Linuks
FreeS/WAN - http://www.freeswan.org/
Openswan - http://www.openswan.org/
strongSwan - http://www.strongswan.org/
ipsec-tools - http://ipsec-tools.sourceforge.net/
Jądra 2.6+ natywnie udostępniają stos IPsec.
1
Knoppix – zainstalowane pakiety
$dpkg –-list | grep -i ipsec
ii
ipsec-tools
1:0.7.1-1.3
IPsec tools for Linux
Pakiet powinien zawierać:
libipsec – biblioteka z implementacją PF_KEY (rodzina protokołów
gniazda komunikacji z systemowym SAD (Security Association
Database))
setkey – narzędzie do manipulowania SPD (Security Policy Database) i
SAD(Security Association Database)
racoon – demon do automatycznej wymiany kluczy (IKE - Internet Key
Exchange) dla połączeń IPsec
2
Pakiet ipsec-tools - kompilacja
http://ipsec-tools.sourceforge.net/
Będziemy potrzebować dodatkowych pakietów:
●
libselinux1-dev - Security-Enhanced Linux
●
Flex - Fast Lex
Domyślny prefix = /usr/local
3
Pakiet ipsec-tools – setkey
#setkey -f ścieżka_do_pliku_konfiguracyjnego
#setkey -D
(wyświetla wpisy SA - Security Association)
#setkey -DP
(wyświetla wpisy SP - Security Policy)
#setkey -F
(kasuje wpisy SA)
#setkey -FP
(kasuje wpisy SP)
4
Pakiet ipsec-tools – setkey
Plik konfiguracyjny
spdadd src_range dst_range upperspec policy ;
Dodaje nowy wpis do SPD (Security Policy Database)
src_range, dst_range:
adres, adres/długość maski, adres[port], adres/długość maski[port]
upperspec:
protokół, any – dla każdego protokołu
policy:
-P in (out) ipsec (discard, none)
protocol/mode/src-dst/level [...]
5
Pakiet ipsec-tools – setkey
Plik konfiguracyjny
policy:
-P in (out) ipsec (discard, none)
protocol/mode/src-dst/level [...]
protocol: ah, esp
mode: transport, tunnel
src-dst: w trybie tunelowania – adresy hostów tworzących
tunel
level: use – użyty, gdy dostępny, require – wymagany,
6
Pakiet ipsec-tools – setkey
Plik konfiguracyjny
add src dst protocol spi [extensions] algorithm ;
Dodaje nowy wpis do SAD (Security Association Database)
src, dst:
adresy hostów dla określanego SA
protocol:
esp, ah
spi:
Security Parameter Index (SPI)
extensions:
-m
(transport, tunnel, any)
7
Pakiet ipsec-tools – setkey
Plik konfiguracyjny
add src dst protocol spi [extensions] algorithm ;
algorithm:
-E ealgo key
-A aalgo key
(algorytm szyfrujący dla ESP oraz klucz)
(algorytm identyfikacji dla AH oraz klucz)
ealgo:
3des-cbc
blowfish-cbc
aalgo:
hmac-sha1
hmac-md5
flush ;
spdflush ;
(kasuje wpisy SA, to samo co #setkey -F)
(kasuje wpisy SP, to samo co #setkey -FP)
8
Pakiet ipsec-tools – racoon
racoon -f ścieżka_do_pliku_konfiguracyjnego
racoon -l ścieżka_do_pliku_logowania (logfile)
racoon -d
(zwiększa poziom debugowania)
racoon -F
(uruchom racoon na pierwszym planie)
9
Pakiet ipsec-tools – racoon
Plik konfiguracyjny
path pre_shared_key file;
file: ścieżka do pliku zawierającego PSK – wstępne hasła
path certificate path;
path: katalog, w którym powinny znajdować się certyfikaty
remote name { statements }
statements: parametry dla IKE fazy 1
name:
identyfikator zdalnego hosta, anonymous – dopasowuje
wszystkie identyfikatory
10
Pakiet ipsec-tools – racoon
Plik konfiguracyjny
Statements:
exchange_mode main ;
Definiuje tryb wymiany.
my_identifier idtype ;
Specyfikuje identyfikator wysyłany do zdalnego hosta i używany w
negocjacjach.
idtype:
address
asn1dn
– adres IP
– typ ASN.1 – nazwa wyróżniająca (distniguished
name) . Pobierana z pola 'subject' certyfikatu.
11
Pakiet ipsec-tools – racoon
Plik konfiguracyjny
certificate_type certspec;
Definiuje typ certyfikatu
certspec:
x509 certfile privkeyfile ;
certfile:
privkeyfile:
nazwa pliku certyfikatu
nazwa pliku klucza prywatnego
proposal { sub-substatements }
Definiuje propozycję do negocjacji
encryption_algorithm algorithm ;
Algorytm szyfrowania: 3des, blowfish, aes
12
Pakiet ipsec-tools – racoon
Plik konfiguracyjny
hash_algorithm algorithm ;
Algorytm funkcji skrótu: md5, sha1
authentication_method type ;
Metoda identyfikacji: pre_shared_key, rsasig
dh_group group ;
Definiuje grupę Diffiego-Hellmana: modp768, modp1024,
modp2048; lub, odpowiednio: 1, 2, 14
sainfo local_id remote_id { statements }
Definiuje parametry dla IKE fazy 2
local_id, remote_id – identyfikatory, anonymous – dopasowuje
każdy identyfikator
13
Pakiet ipsec-tools – racoon
Plik konfiguracyjny
Statements:
pfs_group group ;
Definiuje grupę Diffiego-Hellmana
encryption_algorithm algorithms ;
Definiuje algorytm szyfrowania (dla ESP): 3des, blowfish, aes
authentication_algorithm algorithms ;
Definiuje algorytm wykorzystywany przy identyfikacji: hmac_md5,
hmac_sha1
compression_algorithm algorithms ;
Definiuje algorytm kompresji: deflate
14
Pakiet ipsec-tools – racoon
Plik konfiguracyjny
Plik zawierający klucze PSK:
client_id
password
15
Pakiet ipsec-tools
Przykładowe pliki konfiguracyjne
Ręczne ustawianie kluczy (manual keying): setkey.conf
flush;
spdflush;
# AH
add 158.75.88.244 158.75.90.45 ah 24500 -A hmac-md5 "1234567890123456";
add 158.75.90.45 158.75.88.244 ah 15700 -A hmac-md5 "6543210987654321";
# ESP
add 158.75.88.244 158.75.90.45 esp 24501 -E 3des-cbc
"123456789012123456789012";
add 158.75.90.45 158.75.88.244 esp 15701 -E 3des-cbc
"210987654321210987654321";
spdadd 158.75.88.244 158.75.90.45 any -P out ipsec
esp/transport//require
ah/transport//require;
spdadd 158.75.90.45 158.75.88.244 any -P in ipsec
esp/transport//require
ah/transport//require;
16
Pakiet ipsec-tools
Przykładowe pliki konfiguracyjne
Ręczne ustawianie kluczy (manual keying): test
$ping 158.75.90.45
IP 158.75.88.244 > 158.75.90.45: AH(spi=0x00005fb4,seq=0x237):
ESP(spi=0x00005fb5,seq=0x237), length 88
IP 158.75.90.45 > 158.75.88.244: AH(spi=0x00003d54,seq=0x1c6):
ESP(spi=0x00003d55,seq=0x1c6), length 88
17
Pakiet ipsec-tools
Przykładowe pliki konfiguracyjne
Wstępne hasło (preshared key): setkey.conf
flush;
spdflush;
spdadd 158.75.88.244 158.75.90.196 any -P out ipsec
esp/transport//require;
spdadd 158.75.90.196 158.75.88.244 any -P in ipsec
esp/transport//require;
psk.txt
158.75.90.196
moj_klucz_psk
18
Pakiet ipsec-tools
Przykładowe pliki konfiguracyjne
Wstępne hasło (preshared key): racoon.conf
path pre_shared_key "/usr/local/etc/racoon/psk.txt";
remote anonymous
{
exchange_mode main;
}
proposal {
encryption_algorithm 3des;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group 2;
}
sainfo anonymous
{
pfs_group 2;
encryption_algorithm 3des;
authentication_algorithm hmac_sha1;
compression_algorithm deflate;
}
19
Pakiet ipsec-tools
Przykładowe pliki konfiguracyjne
Wstępne hasło (preshared key): test
$ping 158.75.90.196
IP 158.75.88.244 > 158.75.90.196: ESP(spi=0x5bec92fa,seq=0x93), length
100
IP 158.75.90.196 > 158.75.88.244: ESP(spi=0x056b0e22,seq=0x94), length
100
20
Pakiet ipsec-tools
Przykładowe pliki konfiguracyjne
Wstępne hasło (preshared key): test
Plik logowania racoon:
INFO: respond new phase 1 negotiation:
158.75.88.244[500]<=>158.75.89.113[500]
INFO: begin Identity Protection mode.
INFO: received broken Microsoft ID: MS NT5 ISAKMPOAKLEY
INFO: received Vendor ID: RFC 3947
INFO: received Vendor ID: draft-ietf-ipsec-nat-t-ike-02
INFO: received Vendor ID: FRAGMENTATION
INFO: ISAKMP-SA established 158.75.88.244[500]-158.75.89.113[500]
spi:40764358f8f7c038:d23b150f4aad4194
INFO: respond new phase 2 negotiation:
158.75.88.244[0]<=>158.75.89.113[0]
INFO: IPsec-SA established: ESP/Transport 158.75.88.244[0]>158.75.89.113[0] spi=36902396(0x23315fc)
INFO: IPsec-SA established: ESP/Transport 158.75.88.244[0]>158.75.89.113[0] spi=1301126193(0x4d8d9c31)
21
Konfiguracja w systemie Windows XP / 7
Uruchomienie programu Microsoft Management Console (MMC)
Start → Uruchom: mmc
Dodajemy nową przystawkę: Plik → Dodaj/Usuń przystawkę „Zarządzanie zasadami
zabezpieczeń IP”
22
Konfiguracja w systemie Windows XP / 7
Klikamy prawym klawiszem myszy na Zasady zabezpieczeń i wybieramy „Utwórz zasadę
zabezpieczeń IP...
23
Konfiguracja w systemie Windows XP / 7
Dodajemy reguły do zasady klikając na guzik „Dodaj...”
24
Konfiguracja w systemie Windows XP / 7
Konfigurujemy filtry
25
Konfiguracja w systemie Windows XP / 7
Konfigurujemy propozycje dla IKE fazy 2
26
Konfiguracja w systemie Windows XP / 7
Konfigurujemy ustawienia tunelowania
27
Konfiguracja w systemie Windows XP / 7
Wybieramy metodę uwierzytelniania
28
Konfiguracja w systemie Windows XP / 7
Konfigurujemy propozycje dla IKE fazy 1
29
Konfiguracja w systemie Windows XP / 7
Po skonfigurowaniu zasady należy ją przypisać:
Klikamy prawym klawiszem myszy na nazwę zasady i wybieramy „Przypisz”
30
Konfiguracja w systemie Windows XP
Wynik komendy ping po skonfigurowaniu połączenia IPsec:
>ping 158.75.88.244
Badanie 158.75.88.244 z użyciem 32 bajtów danych:
Negocjowanie zabezpieczeń IP.
Odpowiedz z 158.75.88.244: bajtów=32 czas<1 ms TTL=64
Odpowiedz z 158.75.88.244: bajtów=32 czas<1 ms TTL=64
Odpowiedz z 158.75.88.244: bajtów=32 czas<1 ms TTL=64
Statystyka badania ping dla 158.75.88.244:
Pakiety: Wysłane = 4, Odebrane = 3, Utracone = 1 (25% straty),
Szacunkowy czas błądzenia pakietów w millisekundach:
Minimum = 0 ms, Maksimum = 0 ms, Czas średni = 0 ms
31
Certyfikaty
Generowanie certyfikatu X.509
Ścieżki w systemie Knoppix:
/usr/lib/ssl/openssl.cnf
/usr/lib/ssl/misc/CA.sh
Tworzenie nowego CA:
$mkdir certs
$cd certs
$/usr/lib/ssl/misc/CA.sh -newca
Wydłużamy ważność CA:
$cd demoCA/
$openssl x509 -in cacert.pem -days 3650 -out cacert.pem -signkey
./private/cakey.pem
Tworzymy klucz i podpisujemy:
$cd..
$/usr/lib/ssl/misc/CA.sh -newreq
$/usr/lib/ssl/misc/CA.sh -sign
32
Certyfikaty
Generowanie certyfikatu X.509
Naszym nowym certyfikatem jest plik newcert.pem, a nowym kluczem prywatnym plik
newkey.pem
Przygotowanie klucza dla systemu Windows
$openssl pkcs12 -export -inkey newkey.pem -in newcert.pem -certfile
demoCA/cacert.pem -out export.p12 -name "Windows Cert"
33
Referencje
1. Ipsec-Tools, http://ipsec-tools.sourceforge.net/
2. Linux Advanced Routing & Traffic Control HOWTO: Chapter 7. IPSEC: secure IP over the
Internet, http://lartc.org/howto/lartc.ipsec.html
3. The official IPsec Howto for Linux, http://www.ipsec-howto.org
4. Rozwiązywanie problemów: Czy oprogramowanie klienta IPsec w WinXP naprawdę działa?,
http://www.tomshardware.pl/network/20030904/index.html
34