Racoon czyli ipsec - VPN adresy statyczne

Transkrypt

Racoon czyli ipsec - VPN adresy statyczne
Racoon czyli ipsec - VPN adresy statyczne
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:36
Racoon czyli ipsec - VPN adresy statyczne szyfrowanie pre shared key - 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.
1 / 19
Racoon czyli ipsec - VPN adresy statyczne
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:36
Założenia
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 ze stałym kluczem/hasłem
Instalacja
Musimy zainstalować Racoon oraz potrzebne moduły.
2 / 19
Racoon czyli ipsec - VPN adresy statyczne
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:36
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ć:
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
3 / 19
Racoon czyli ipsec - VPN adresy statyczne
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:36
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
touch /etc/racoon/psk.txt
touch /etc/racoon/racoon.conf
touch /etc/racoon/setkey.conf
touch /etc/init.d/racoon
4 / 19
Racoon czyli ipsec - VPN adresy statyczne
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:36
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
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;
5 / 19
Racoon czyli ipsec - VPN adresy statyczne
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:36
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];
isakmp_natt 87.205.205.13 [4500];
strict_address;
}
remote 218.97.26.22 {
exchange_mode main;
doi ipsec_doi;
situation_identity_only;
lifetime time 28800 sec;
my_identifier address;
passive off;
initial_contact on;
# ike_frag=on;
proposal_check obey;
proposal {
encryption_algorithm 3des;
hash_algorithm md5;
authentication_method pre_shared_key;
dh_group 2;
}
generate_policy on;
}
sainfo anonymous {
pfs_group 2;
lifetime time 3600 sec;
encryption_algorithm 3des ;
authentication_algorithm hmac_sha1, hmac_md5 ;
compression_algorithm deflate;
}
6 / 19
Racoon czyli ipsec - VPN adresy statyczne
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:36
wiersz "isakmp_natt 87.205.205.13 [4500];" nie jest wymagany można go usunąć.
Zawartość pliku psk.key powinna wyglądać następująco:
218.97.26.22 twoje_tajne_haslo
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 / 19
Racoon czyli ipsec - VPN adresy statyczne
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:36
a następnie wykonać
/etc/init.d/racoon enable
/etc/init.d/racoon start
Konfiguracja firewalla po stronie routera AG241 na openwrt
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
8 / 19
Racoon czyli ipsec - VPN adresy statyczne
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:36
config rule
option dest_port 4500
option proto udp
option target ACCEPT
config include
option path /etc/firewall.user
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
9 / 19
Racoon czyli ipsec - VPN adresy statyczne
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:36
iptables -I forwarding_rule -p tcp --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.
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 bieżą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
10 / 19
Racoon czyli ipsec - VPN adresy statyczne
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:36
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
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ść
11 / 19
Racoon czyli ipsec - VPN adresy statyczne
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:36
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:
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
12 / 19
Racoon czyli ipsec - VPN adresy statyczne
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:36
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
}
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:
13 / 19
Racoon czyli ipsec - VPN adresy statyczne
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:36
#!/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;
zawartość pliku /etc/racoon/psk.key powinniśmy uzupełnić o następujące wpisy:
87.205.205.13 twoje_tajne_haslo
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
14 / 19
Racoon czyli ipsec - VPN adresy statyczne
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:36
{
isakmp 218.97.26.22 [500];
isakmp_natt 218.97.26.22 [4500];
strict_address;
}
remote 87.205.205.13 {
exchange_mode main;
doi ipsec_doi;
situation_identity_only;
lifetime time 28800 sec;
my_identifier address;
passive on;
initial_contact off;
# ike_frag=on;
proposal_check obey;
proposal {
encryption_algorithm 3des;
hash_algorithm md5;
authentication_method pre_shared_key;
dh_group 2;
}
generate_policy off;
}
sainfo anonymous {
pfs_group 2;
lifetime time 3600 sec;
encryption_algorithm 3des ;
authentication_algorithm hmac_sha1 ,hmac_md5 ;
compression_algorithm deflate;
}
15 / 19
Racoon czyli ipsec - VPN adresy statyczne
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:36
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
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
gdzie eth0 jest interfejsem WAN o adresie 218.97.26.22 .
16 / 19
Racoon czyli ipsec - VPN adresy statyczne
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:36
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 -p tcp --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.
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
17 / 19
Racoon czyli ipsec - VPN adresy statyczne
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:36
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
Kernel modules->Cryptographics API modules->kmod-crypto-hmac
18 / 19
Racoon czyli ipsec - VPN adresy statyczne
Wpisany przez rpc
poniedziałek, 12 października 2009 06:45 - Poprawiony piątek, 18 lutego 2011 17:36
Kernel modules->Cryptographics API modules->kmod-crypto-md5
Kernel modules->Cryptographics API modules->kmod-crypto-sha1
19 / 19

Podobne dokumenty