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