Racoon czyli ipsec - VPN adresy statyczne szyfrowanie plain rsa

Transkrypt

Racoon czyli ipsec - VPN adresy statyczne szyfrowanie plain rsa
Racoon czyli ipsec - VPN adresy statyczne szyfrowanie plain rsa
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:38
Racoon czyli ipsec - VPN adresy statyczne szyfrowanie kluczem plain rsa - linux openwrt
8.09.x , 10.03.x
Większość opisów tworzenia tunelu opiera się na OpenVPN . Dla odmiany postanowiłem
opisać
VPN utworzony za
pomocą pakietu
rac
oon
czyli
ipsec
. Opisany sposób został przetestowany na routerze Linksys AG241v2-EU w jednym końcu
tunelu w połączeniu z
Debian
Lenny na drugim końcu. Oba routery mają adresy IP statyczne czyli nie zmieniają się. Oba
adresy MUSZĄ być adresami publicznymi. Nie będe w tym artykule opisywał instalacji w
Debianie Racoon. Opis dotyczy tylko
Openwrt
ew. podam pliki konfiguracyjne po stronie Debiana.
Jeszcze jedno. Konfiguracji racoon nie można przeprowadzić poprzez narzędzie UCI.
Większość rzeczy trzeba zrobić ręcznie.
27.07.2010: Konfiguracja zgodna z Backfire 10.03.x. Testowano na wr1043nd.
Założenia 1 / 20
Racoon czyli ipsec - VPN adresy statyczne szyfrowanie plain rsa
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:38
Adres publiczny WAN IP Routera Debian Lenny : 218.97.26.22
Adres i maska sieci LAN Routera Debian Lenny : 192.168.1.0/24
Adres publiczny WAN IP Routera z Openwrt AG241 : 87.205.205.13
Adres i maska sieci LAN Routera z Openwrt AG241 : 10.0.0.0/24
(10.0.0.0/24)AG241(87.205.205.13) <=============> (218.97.26.22)Debian(192.168.1.0/24)
Szyfrowanie za pomocą pary kluczy Plain RSA
Nazwa ID tunelu od strony Debian: vpn.dyndns.org
Nazwa ID tunelu od strony AG241 : iyy99.internetdsl.tpnet.pl
Nie muszą być to nazwy DNS mogą być dowolne.
2 / 20
Racoon czyli ipsec - VPN adresy statyczne szyfrowanie plain rsa
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:38
Instalacja
Musimy zainstalować Racoon oraz potrzebne moduły.
opkg install ipsec-tools kmod-crypto-aead kmod-crypto-aes kmod-crypto-authenc
kmod-crypto-core kmod-crypto-des kmod-crypto-hmac kmod-crypto-md5 kmod-crypto-sha1
kmod-ipsec kmod-ipsec4
Od wersji Backfire nie ma modułu kmod-crypto-aead
musimy jeszcze utworzyć plik ładujący dodatkowe moduły w czasie startu systemu - są
wymagane do poprawnej pracy- UWAGA !!! TYLKO w kamikadze 8.09.x
echo af_key >> /etc/modules.d/10-ipsec
echo ah4 >> /etc/modules.d/10-ipsec
echo esp4 >> /etc/modules.d/10-ipsec
echo xfrm_user >> /etc/modules.d/10-ipsec
echo xfrm4_mode_beet >> /etc/modules.d/10-ipsec
echo xfrm4_mode_transport >> /etc/modules.d/10-ipsec
echo xfrm4_mode_tunnel >> /etc/modules.d/10-ipsec
echo xfrm4_tunnel >> /etc/modules.d/10-ipsec
po załadowaniu modułów lsmod powinien wykazać:
3 / 20
Racoon czyli ipsec - VPN adresy statyczne szyfrowanie plain rsa
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:38
xfrm_user 21664 0
tunnel4 2608 2 xfrm4_tunnel
xfrm4_tunnel 1920 0
xfrm4_mode_tunnel 1952 2
xfrm4_mode_transport 1248 0
xfrm4_mode_beet 2208 0esp4 6368 1
ah4 4800 0
af_key 33552 0
sha1_generic 2144 1
md5 5024 0
hmac 3776 1
des_generic 19296 1
authenc 5280 1
aes_generic 29296 0
aead 5440 2 esp4,authenc
deflate 2560 0
ecb 2336 0
cbc 3168 1
crypto_blkcipher 15376 4 authenc,ecb,cbc
crypto_hash 3648 2 hmac,authenc
cryptomgr 2688 0
crypto_algapi 11616 12
sha1_generic,md5,hmac,des_generic,authenc,aes_generic,aead,deflate,ecb,cbc,crypto_blkciph
er,cryptomgr
Konfiguracja racoon po stronie routera AG241 na openwrt
w katalogu /etc/racoon utwórz 4 pliki i 1 katalog
touch /etc/racoon/psk.txt
touch /etc/racoon/racoon.conf
4 / 20
Racoon czyli ipsec - VPN adresy statyczne szyfrowanie plain rsa
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:38
touch /etc/racoon/setkey.conf
touch /etc/init.d/racoon
mkdir /etc/racoon/certs
oraz nadaj uprawnienia do wykonywania
chmod +x /etc/racoon/setkey.conf
chmod +x /etc/init.d/racoon
chmod 600 /etc/racoon.psk.txt
Zawartość pliku setkey.conf powinna wyglądać następująco:
#!/usr/sbin/setkey -f
5 / 20
Racoon czyli ipsec - VPN adresy statyczne szyfrowanie plain rsa
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:38
flush;
spdflush;
#FPW
spdadd 10.0.0.0/24 192.168.1.0/24 any -P out ipsec
esp/tunnel/87.205.205.13-218.97.26.22/require;
spdadd 192.168.1.0/24 10.0.0.0/24 any -P in ipsec
esp/tunnel/218.97.26.22-87.205.205.13/require;
Zawartość pliku racoon.conf powinna wyglądać następująco:
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";
log info;
listen
{
isakmp 87.205.205.13 [500];
}
remote 218.97.26.22 {
exchange_mode main;
doi ipsec_doi;
situation_identity_only;
lifetime time 28800 sec;
certificate_type plain_rsa " 87.205.205.13_privatekey.rsa";
peers_certfile plain_rsa "218.97.26.22 _publickey.rsa";
my_identifier fqdn "iyy99.internetdsl.tpnet.pl";
peers_identifier fqdn "vpn.dyndns.org";
passive off;
initial_contact on;
# ike_frag=on;
proposal_check obey;
proposal {
encryption_algorithm aes;
hash_algorithm sha1;
authentication_method rsasig;
6 / 20
Racoon czyli ipsec - VPN adresy statyczne szyfrowanie plain rsa
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:38
dh_group 2;
}
generate_policy off;
}
sainfo anonymous {
pfs_group 2;
lifetime time 3600 sec;
encryption_algorithm aes,3des ;
authentication_algorithm hmac_sha1, hmac_md5 ;
compression_algorithm deflate;
}
Plik /etc/init.d/racoon winien zawierać:
#!/bin/sh /etc/rc.common
START=60
start() {
echo Uruchamiam tunel ipsec racoon...
if [ ! -e /var/racoon ]
then
mkdir /var/racoon
fi
setkey -f /etc/racoon/setkey.conf
racoon -f /etc/racoon/racoon.conf
}
stop() {
killall racoon
}
7 / 20
Racoon czyli ipsec - VPN adresy statyczne szyfrowanie plain rsa
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:38
Generowanie kluczy Plain RSA na routerze AG241
Przechodzimy do katalogu /etc/racoon/certs
cd /etc/racoon/certs
i wywołujemy polecenie:
plainrsa-gen -f /etc/racoon/certs/87.205.205.13_privatekey.rsa
W wyniku utworzy nam się plik z kluczem prywatnym RSA. Teraz musimy wydzielić klucz
publiczny z tego pliku. Wykonujemy wywołując:
grep ": PUB" 87.205.205.13_privatekey.rsa | sed 's/^#//' > /etc/racoon/certs/87.205.205.13_publ
ickey.rsa
Ten plik należy przekopiować do drugiego routera Debian do katalogu /etc/racoon/certs/87.205.
205.13
_publickey.rsa
Konfiguracja firewalla po stronie routera AG241 na openwrt
8 / 20
Racoon czyli ipsec - VPN adresy statyczne szyfrowanie plain rsa
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:38
zawartość pliku /etc/config/firewall powinniśmy uzupełnić o następujące wpisy:
config rule
option src wan
option proto esp
option target ACCEPT
config rule
option src wan
option proto ah
option target ACCEPT
config rule
option src wan
option proto ipcomp
option target ACCEPT
config rule
option dest_port 500
option proto udp
option target ACCEPT
config rule
option dest_port 4500
option proto udp
option target ACCEPT
config include
option path /etc/firewall.user
9 / 20
Racoon czyli ipsec - VPN adresy statyczne szyfrowanie plain rsa
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:38
Reszta konfiguracji firewall w pliku /etc/firewall.user powinna wyglądać następująco:
#regulki dla ipsec
#...................................................
iptables -I forwarding_rule --dst 192.168.1.0/24 -j ACCEPT
iptables -t nat -I postrouting_rule -s 10.0.0.0/24 -d 192.168.1.0/24 -j ACCEPT
iptables -t nat -I postrouting_rule -p ipcomp -j ACCEPT
iptables -t nat -I postrouting_rule -p ah -j ACCEPT
iptables -t nat -I postrouting_rule -p esp -j ACCEPT
Jeśli chcemy dopuści cały z LAN Debian do LAN AG241 ruch musimy dopisać jeszcze jedną
regułkę zamiast linii wykropkowanej powyżej
iptables -I forwarding_rule --src 192.168.1.0/24 -j ACCEPT
lub tylko port np.
iptables -I forwarding_rule -p tcp --src 192.168.1.0/24 --dport 5900 -j ACCEPT
oczywiście to można zmienić wedla własnego uznania.
10 / 20
Racoon czyli ipsec - VPN adresy statyczne szyfrowanie plain rsa
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:38
Uruchomienie vpn po stronie routera AG241 na openwrt
Jeśli wszystko zrobiłeś poprawnie jak pingniesz adres z drugiegej strony tunelu łącze się
zestawi. Demon racoon pojawi się w bierzących procesach "ps ax".
Jeśli są jakieś problemy to można analizować uruchomienie poprzez:
1. ręcznie uruchom plik ./etc/racoon/setkey.conf
2. uruchom racoon jako proces nie demon: racoon -F -f /etc/racoon/racoon.conf ew. więcej
informacji uzyskasz uruchamiając:
racoon -F -v -f /etc/racoon/racoon.conf
UWAGA !!! ERRATA
W Backfire ostatnich wydania jest błąd który winien zostać poprawiony. Niestety developerzy
tak przerobili firewalla że nie da się w żaden sposób wstawić na początek głównych łańcuchów
własnych reguł iptables. Jeśli masz problemy z nawiązaniem połączenia zerknij koniecznie na
11 / 20
Racoon czyli ipsec - VPN adresy statyczne szyfrowanie plain rsa
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:38
reguły firewalla
iptables -t nat -L -v
w szczególności łańcuchów POSTROUTING. Nasze reguły dodane do firewalla MUSZĄ być
przed łańcuchami
zone_lan_nat
zone_wan_nat
inaczej nie będzie poprawnie działał tunel
Czyli jeśli masz np. taką kolejność
Chain POSTROUTING (policy ACCEPT 246 packets, 18433 bytes)
pkts bytes target prot opt in out source destination
854 61486 zone_wan_nat all -- any eth0.2 anywhere anywhere
1 84 zone_lan_nat all -- any br-lan anywhere anywhere
246 18433 postrouting_rule all -- any any anywhere anywhere
to nie będą działać wpisy w postrouting_rule. Nawet jak dodasz reguły w /etc/firewall.user do
głównego łańcucha POSTROUTING to przynajmniej na dzień dzisiejszy reguły zostaną dodane
za łańcuchami zone_lan_nat i zone_wan_nat
Jedynym rozwiązaniem jest przeniesienie naszych reguł do skryptu uruchamiającego firewall
/etc/init.d/racoon
Czyli usuwamy nasze wpisy z pliky /etc/firewall.user i wstawiamy je np. tak jak poniżej:
12 / 20
Racoon czyli ipsec - VPN adresy statyczne szyfrowanie plain rsa
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:38
Plik /etc/init.d/racoon winien zawierać:
#!/bin/sh /etc/rc.common
START=98
start() {
echo Uruchamiam tunel ipsec racoon...
if [ ! -e /var/racoon ]
then
mkdir /var/racoon
fi
setkey -f /etc/racoon/setkey.conf
racoon -f /etc/racoon/racoon.conf
#regulki dla ipsec
#...................................................
iptables -I forwarding_rule --dst 192.168.1.0/24 -j ACCEPT
iptables -t nat -I postrouting_rule -s 10.0.0.0/24 -d 192.168.1.0/24 -j ACCEPT
iptables -t nat -I postrouting_rule -p ipcomp -j ACCEPT
iptables -t nat -I postrouting_rule -p ah -j ACCEPT
iptables -t nat -I postrouting_rule -p esp -j ACCEPT
}
stop() {
killall racoon
#regulki dla ipsec
#...................................................
iptables -D forwarding_rule --dst 192.168.1.0/24 -j ACCEPT
iptables -t nat -D postrouting_rule -s 10.0.0.0/24 -d 192.168.1.0/24 -j ACCEPT
iptables -t nat -D postrouting_rule -p ipcomp -j ACCEPT
iptables -t nat -D postrouting_rule -p ah -j ACCEPT
iptables -t nat -D postrouting_rule -p esp -j ACCEPT
}
13 / 20
Racoon czyli ipsec - VPN adresy statyczne szyfrowanie plain rsa
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:38
Alternatywą w/w zmian jest uaktualnienie pakietu firewall do najnowszej wersji
opkg install http://ecco.selfip.net/backfire/packages/firewall_2-21_all.ipk
po wgraniu w/w aktualizacji reguły spokojnie mogą zostać jak w oryginalnym opisie.
Pliki konfiguracyjne po stronie Debian Lenny:
zawartość pliku /etc/ipsec-tools.conf powinniśmy uzupełnić o następujące wpisy:
#!/usr/sbin/setkey -f
## Flush the SAD and SPD
#
# flush;
# spdflush;
## Some sample SPDs for use racoon
#
spdadd 192.168.10.0/24 10.0.0.0/24 any -P out ipsec
esp/tunnel/218.97.26.22-87.205.205.13/require;
spdadd 10.0.0.0/24 192.168.10.0/24 any -P in ipsec
esp/tunnel/87.205.205.13-218.97.26.22/require;
14 / 20
Racoon czyli ipsec - VPN adresy statyczne szyfrowanie plain rsa
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:38
zawartość pliku /etc/racoon/racoon.conf powinniśmy uzupełnić o następujące wpisy:
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";
log info;
listen
{
isakmp 218.97.26.22 [500];
}
remote 87.205.205.13 {
exchange_mode main;
doi ipsec_doi;
situation_identity_only;
lifetime time 28800 sec;
certificate_type plain_rsa "218.97.26.22_privatekey.rsa";
peers_certfile plain_rsa "87.205.205.13_publickey.rsa";
my_identifier fqdn "vpn.dyndns.org";
peers_identifier fqdn "iyy99.internetdsl.tpnet.pl";
passive on;
initial_contact off;
# ike_frag=on;
proposal_check obey;
proposal {
encryption_algorithm aes,3des;
hash_algorithm sha1;
authentication_method rsasig;
dh_group 2;
}
generate_policy off;
}
15 / 20
Racoon czyli ipsec - VPN adresy statyczne szyfrowanie plain rsa
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:38
sainfo anonymous {
pfs_group 2;
lifetime time 3600 sec;
encryption_algorithm aes,3des ;
authentication_algorithm hmac_sha1 ,hmac_md5 ;
compression_algorithm deflate;
}
Generowanie Kluczy plain RSA po stronie routera Debian
Przechodzimy do katalogu /etc/racoon/certs
cd /etc/racoon/certs
i wywołujemy polecenie:
plainrsa-gen -f /etc/racoon/certs/218.97.26.22_privatekey.rsa
W wyniku utworzy nam się plik z kluczem prywatnym RSA. Teraz musimy wydzielić klucz
publiczny z tego pliku. Wykonujemy wywołując:
grep ": PUB" 218.97.26.22_privatekey.rsa | sed 's/^#//' > /etc/racoon/certs/218.97.26.22 _public
key.rsa
16 / 20
Racoon czyli ipsec - VPN adresy statyczne szyfrowanie plain rsa
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:38
Ten plik należy przekopiować do drugiego routera AG241 z openwrt do katalogu /etc/racoon/cer
ts/
218.97.26.2
2
_publicke
y.rsa
Musimy jeszcze pamiętać o firewallu:
#negowanie na INPUT vpn ikea oraz ogolnie vpn zezwolenie
/sbin/iptables -A INPUT -p udp --dport 500 -j ACCEPT
/sbin/iptables -A INPUT -p udp --dport 4500 -j ACCEPT
/sbin/iptables -A INPUT -p esp -j ACCEPT
/sbin/iptables -A INPUT -p ah -j ACCEPT
/sbin/iptables -A INPUT -p ipcomp -j ACCEPT
#..............................................................
/sbin/iptables -A FORWARD --src 192.168.1.0/24 --dst 10.0.0.0/24 -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -p esp -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -p ah -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -p ipcomp -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d 10.0.0.0/24 -j ACCEPT
17 / 20
Racoon czyli ipsec - VPN adresy statyczne szyfrowanie plain rsa
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:38
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
gdzie eth0 jest interfejsem WAN o adresie 218.97.26.22 .
Koniecznie wpisy w POSTROUTING muszą być przed MASQUERADE.
Jeśli chcemy dopuści cały z LAN AG241 do LAN w Debianie ruch musimy dopisać jeszcze
jedną regułkę zamiast linii wykropkowanej powyżej
/sbin/iptables -A FORWARD --src 10.0.0.0/24 -j ACCEPT
lub tylko port np.
/sbin/iptables -A FORWARD -p tcp --src 10.0.0.0/24 --dport 5900 -j ACCEPT
Reszty należy szukać w odpowiednich HOWTO iptablesa, racoon, ipsec, itp.
18 / 20
Racoon czyli ipsec - VPN adresy statyczne szyfrowanie plain rsa
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:38
Ps. Jeśli chciałbyś przekompilować openwrt np. do wersji 8.09 to poniższe pozycje są
potrzebne do działania VPN:
Network->ipsec-tools
Kernel modules -> Network support->kmod-gre
Kernel modules -> Network support->kmod-ipsec
Kernel modules -> Network support->kmod-ipsec4
Kernel modules -> Network support->kmod-iptunnel4
Kernel modules -> Netfilter extensions->kmod-ipt-ipsec
Kernel modules->Cryptographics API modules->kmod-crypto-aes
Kernel modules->Cryptographics API modules->kmod-crypto-authenc
Kernel modules->Cryptographics API modules->kmod-crypto-aead
Kernel modules->Cryptographics API modules->kmod-crypto-core
Kernel modules->Cryptographics API modules->kmod-crypto-des
19 / 20
Racoon czyli ipsec - VPN adresy statyczne szyfrowanie plain rsa
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:38
Kernel modules->Cryptographics API modules->kmod-crypto-hmac
Kernel modules->Cryptographics API modules->kmod-crypto-md5
Kernel modules->Cryptographics API modules->kmod-crypto-sha1
Ps2.
Przykład dotyczy debiana ale testowałem i działa z openwrt oraz Asmax BR-604G patrz opis
Trzeba sobie dostosować odpowiednio ale schemat jest ten sam
20 / 20