l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na

Transkrypt

l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na
l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach
Wpisany przez rpc
poniedziałek, 02 listopada 2009 11:11 - Poprawiony środa, 30 grudnia 2009 07:38
l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach x509
Jako, że windows wspiera natywnie protokół tunelowania l2tp postanowiłem przedstawić opis
dotyczący zestawienia tunelu szyfrowanego za pomocą tenże protokołu l2tp przy użyciu
programu
xl2tpd po stronie
serwera linux
Debian
lenny oraz clientów windows i client linux. Całe łącze będzie szyfrowane za pomocą
ipsec
wykorzystując
Racoon
po stronie linux i windows. Wszystko to opierać będzie się na certyfikatach x509.
Ja konfiguracje oparłem o Debiana ale myśle, że nie będzie problemu na każdym innym linuxie.
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 ip dns i wins w naszej sieci LAN : 192.168.1.1
1 / 14
l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach
Wpisany przez rpc
poniedziałek, 02 listopada 2009 11:11 - Poprawiony środa, 30 grudnia 2009 07:38
Adres Publiczny clienta VPN l2tp : 0.0.0.0/0 - adres nieznany
(0.0.0.0)Windows <=============> (218.97.26.22)Debian(192.168.1.0/24)
Nazwa DNS od strony Debian: l2tp.vpn.dyndns.org
Nazwa DNS od strony clienta : laptop.vpn.dyndns.org
Najlepiej aby były to adresy dns.
Szyfrowanie przy wykorzystaniu certyfikatów x509 w trybie transportowym ipsec
Aby nie było problemów z komunikacją z za nat dla clienta windows został użyty protokuł vpn
traversal_nat, który potrafi przebić się z za routerów natujących. Aby było to możliwe
przeważnie trzeba zostawić załączone opcje np. w asmax BR-604G:
Enable IPsec pass through on VPN connection
Enable L2TP pass through on VPN connection
2 / 14
l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach
Wpisany przez rpc
poniedziałek, 02 listopada 2009 11:11 - Poprawiony środa, 30 grudnia 2009 07:38
Instalacja
Instalujemy pakiety xl2tpd i racoon
apt-get install xl2tpd racoon openssl
Konfiguracja po stronie Debian Lenny pakietu xl2tdp
Pliki konfiguracyjne są umiesczone w następujących katalogach
/etc/xl2tpd/xl2tpd.conf
/etc/xl2tpd/l2tp-secrets
/etc/ppp/options.xl2tpd
/etc/ppp/chap-secrets
3 / 14
l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach
Wpisany przez rpc
poniedziałek, 02 listopada 2009 11:11 - Poprawiony środa, 30 grudnia 2009 07:38
Zawartość pliku /etc/xl2tpd/xl2tpd.conf:
[global] port = 1701 ;
[lns default] ip range = 192.168.222.10-192.168.222.100 local ip = 192.168.222.1 length bit = yes require chap = yes refuse pap = yes require authentication = yes name = VPN l2tp for Formaplan ppp debug = yes pppoptfile = /etc/ppp/options.xl2tpd Adresy ip 192.168.222. są potrzebne do zestawienia połączenia ppp gdzie:
192.168.222.1 - jest to adres ip na serwerze, który zostanie utworzony w czasie startu xl2tpdmoże to być interfjes ppp0
192.168.222.10-192.168.222.100 - zakres adresów przydzielany clientom
Adresy muszą być inne jak te które wykorzystujemy we własnej sieci tak aby nie było kolizji.
4 / 14
l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach
Wpisany przez rpc
poniedziałek, 02 listopada 2009 11:11 - Poprawiony środa, 30 grudnia 2009 07:38
Zawartość pliku /etc/xl2tpd/l2tp-secrets:
Tego pliku nie wykorzustujemy
Zawartość pliku /etc/ppp/options.xl2tpd:
auth
idle 1800
mtu 1460
mru 1460
debug
proxyarp
+mschap-v2
ms-dns 192.168.1.1
ms-wins 192.168.1.1
logfd 2
logfile /var/log/xl2tpd.log
ipcp-accept-local
ipcp-accept-remote
#noccp
nodefaultroute
lock
crtscts
connect-delay 5000
Zawartość pliku /etc/ppp/chap-secrets:
5 / 14
l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach
Wpisany przez rpc
poniedziałek, 02 listopada 2009 11:11 - Poprawiony środa, 30 grudnia 2009 07:38
# Secrets for authentication using CHAP
# client server secret IP addresses
username_vpn * password_vpn 192.168.222.10
Troszkę wyjaśnienia w/w wpisu
Otóż adres ip przy wpisie danego usera oznacza, że ten user zawsze będzie dostawał adres ip
192.168.222.10
Przyda się do kontroli reguł firewalla
Jeśli nie chcemy konkretnych ip możemy wpisać gwiazdkę zamiast adresu ip. i wtedy wiersz
będzie wyglądał następująco:
# Secrets for authentication using CHAP
# client server secret IP addresses
username_vpn * password_vpn *
Hasło podajemy otwartym tekstem.
Jeśli wykorzystujemy Domenę to hasło winno wyglądac wedle shematu:
6 / 14
l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach
Wpisany przez rpc
poniedziałek, 02 listopada 2009 11:11 - Poprawiony środa, 30 grudnia 2009 07:38
# Secrets for authentication using CHAP
# client server secret IP addresses
DOMENAusername_vpn * password_vpn *
Konfiguracja firewalla na Debian Lenny:
Potrzebujemy uzupełnić firewall o następujące reguły:
iptables -I INPUT -m policy --dir in --pol ipsec -p udp --dport 1701 -j ACCEPT
iptables -I FORWARD -i ppp+ -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD -i ppp+ --src 192.168.222.10 -j ACCEPT
iptables -I INPUT -i ppp+ -p tcp --dport 53 -j ACCEPT
iptables -I INPUT -i ppp+ -p udp --dport 53 -j ACCEPT
Teraz nasz client o adresie ip. 192.168.222.10 będzie miał dostęp do naszej sieci LAN po vpn.
Jeśli chcemy puścić wszystkie komputery do LAn możemy wykorzystać regułkę:
7 / 14
l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach
Wpisany przez rpc
poniedziałek, 02 listopada 2009 11:11 - Poprawiony środa, 30 grudnia 2009 07:38
iptables -I FORWARD -i ppp+ --src 192.168.222.0/24 -j ACCEPT
Konfiguracja Racoon na Debian Lenny:
Plik konfiguracyjny /etc/racoon/racoon.conf winien wyglądać następująco:
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";
log info;
listen
{
isakmp 218.97.26.22 [500];
isakmp_natt 218.97.26.22 [4500];
strict_address;
}
timer
{
natt_keepalive 10sec;
}
remote anonymous {
exchange_mode main;
doi ipsec_doi;
generate_policy on;
situation_identity_only;
lifetime time 28800 sec;
8 / 14
l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach
Wpisany przez rpc
poniedziałek, 02 listopada 2009 11:11 - Poprawiony środa, 30 grudnia 2009 07:38
my_identifier asn1dn;
peers_identifier asn1dn;
verify_identifier on;
verify_cert on;
ca_type x509 "/etc/ssl/cacert.pem";
certificate_type x509 "218.97.26.22_publickey.rsa" "218.97.26.22_privatekey.rsa";
passive on;
initial_contact off;
nat_traversal on;
#ike_frag=on;
proposal_check obey;
proposal {
encryption_algorithm 3des;
hash_algorithm sha1;
authentication_method rsasig;
dh_group 2;
}
}
sainfo anonymous {
pfs_group 2;
lifetime time 3600 sec;
encryption_algorithm aes,3des ;
authentication_algorithm hmac_sha1,hmac_md5 ;
compression_algorithm deflate;
}
Plik /etc/ipsec-tools.conf winien wyglądać:
spdadd 218.97.26.22[1701] 0.0.0.0/0 udp -P out ipsec
esp/transport//require;
spdadd 0.0.0.0/0 218.97.26.22[1701] udp -P in ipsec
esp/transport//require;
9 / 14
l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach
Wpisany przez rpc
poniedziałek, 02 listopada 2009 11:11 - Poprawiony środa, 30 grudnia 2009 07:38
Więcej o wierszu peers_identifier asn1dn; zobacz na końcu artykułu .
Do katalogu /etc/racoon/certs wrzucamy nasz certyfikat publiczny i prywatny serwera patrz
artykuł generowanie certyfikatów
Przypominam tylko, iż w czasie generowania certyfikatów powstają nam pliki:
newcert.pem - certyfikat publiczny - czyli to to samo co wyżej 218.97.26.22_publickey.rsa
newkey.pem - klucz prywatny certyfikatu - czyli to to samo co wyżej 218.97.26.22_privatekey.r
sa
newreq.pem - request
to nasze wygenerowane pliki certyfikatu
Jeśli chcemy mieć weryfikację certyfikatów poprzez listy crl (zakładam że CA już masz)
wykonujemy w katalogu
/usr/lib/ssl/misc
openssl ca -gencrl -out demoCA/crl/crl.pem
openssl crl -in demoCA/crl/crl.pem -outform der -out demoCA/crl/cert.crl
oraz ca to musimy zrobić linki symboliczne z utworzonych plików do :
10 / 14
l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach
Wpisany przez rpc
poniedziałek, 02 listopada 2009 11:11 - Poprawiony środa, 30 grudnia 2009 07:38
# ln -s /usr/lib/ssl/misc/demoCA/crl/crl.pem `openssl x509 -hash -noout -in
/usr/lib/ssl/misc/demoCA/cacert.pem`.r0
#ln -s /usr/lib/ssl/misc/demoCA/cacert.pem `openssl x509 -hash -noout -in
/usr/lib/ssl/misc/demoCA/cacert.pem`.0
Od strony Debian lenny to już wszystko. Już nic więcej nie musimy robić.
jakby były jakieś problemy z certyfikatami obejrzyj sobie przykładowe wygenerowane przeze
mnie certyfikaty Punkt.9
11 / 14
l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach
Wpisany przez rpc
poniedziałek, 02 listopada 2009 11:11 - Poprawiony środa, 30 grudnia 2009 07:38
Konfiguracja clienta l2tp+ipsec dla linux jest opisana przeze mnie dla OpenWrt. Jednak Pliki
konfiguracyjne powinny być identyczne dla Debiana. Trzeba przepisać tylko na iptables firewala
bo jest przedstawione jak dla OpenWrt:
#vpn zezwolenie
iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT
iptables -A INPUT -p esp -j ACCEPT
iptables -A INPUT -p ah -j ACCEPT
iptables -A INPUT -p ipcomp -j ACCEPT
iptables -I INPUT -m policy --dir in --pol ipsec -p udp --dport 1701 -j ACCEPT
iptables -I FORWARD -i ppp+ -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD -i ppp+ --src 192.168.222.1 -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 -o eth0 -j MASQUERADE
l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - OpenWrt
8.09.1
12 / 14
l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach
Wpisany przez rpc
poniedziałek, 02 listopada 2009 11:11 - Poprawiony środa, 30 grudnia 2009 07:38
Konfiguracja clientów windows
Masz tu odpowiednie filmy jak to skonfigurować:
Windows XP Sp3 - AVI - youtube
{youtube}gaLgUXu0drU{/youtube}
Windows Vista Sp2 - AVI - youtube
{youtube}7CjZ8HHqXPk{/youtube}
Windows 7 RC - AVI - youtube
{youtube}2tCpk7TjwCA{/youtube}
13 / 14
l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach
Wpisany przez rpc
poniedziałek, 02 listopada 2009 11:11 - Poprawiony środa, 30 grudnia 2009 07:38
Jeszcze mała uwaga. Plik "newcert pkcs12.p12" użyty w filmie to tak naprawdę plik newcert.p12
wygenerowany komendą ./CA.pl -pkcs12 patrz opis generowania certyfikatów punkt.3. W pliku
tym oprócz certyfikatu prywatnego jest umieszczony również certyfikat Głównego Urzędu
Certyfikacji ROOT CA. Jeżeli nie masz w jednym pliku certyfikatu CA musisz go zaimportować
do zakładki Główny Urząd Certyfikacji w mmc.exe.
Do komunikacji możesz wykorzstać dowolny certyfikat( komputera,imienny). Byle był podpisany
przez ten sam Główny Urząd Certyfikacji ROOT CA.
14 / 14