VPN IPSec entre Pfsense et openswan
-
Bonjour à tous,
Je suis actuellement sur un épineux problème que je ne parvient pas à résoudre.
Avant toute chose, je suis étudiant en informatique, au vu de certaines discutions houleuses sur le forum, je préfère vous en avertir :P
Je rentre dans le vif du sujet, je souhaiterais simplement mettre en place un VPN entre un serveur distant et un pfsense :
L'adresse coté WAN sur PFsense est variable (ligne dsl), idem pour les clients
La configuration sur le serveur distant est fonctionnel, je peux me connecter en l2tp/ipsec avec windows.
Le détail de cette configuration est :
ipsec whack --status 000 using kernel interface: netkey 000 interface lo/lo ::1 000 interface lo/lo 127.0.0.1 000 interface lo/lo 127.0.0.1 000 interface eth0/eth0 123.123.123.123 000 interface eth0/eth0 123.123.123.123 000 %myid = (none) 000 debug none 000 000 virtual_private (%priv): 000 - allowed 6 subnets: 10.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 25.0.0.0/8, fd00::/8, fe80::/10 000 - disallowed 0 subnets: 000 WARNING: Disallowed subnets in virtual_private= is empty. If you have 000 private address space in internal use, it should be excluded! 000 000 algorithm ESP encrypt: id=2, name=ESP_DES, ivlen=8, keysizemin=64, keysizemax=64 000 algorithm ESP encrypt: id=3, name=ESP_3DES, ivlen=8, keysizemin=192, keysizemax=192 000 algorithm ESP encrypt: id=6, name=ESP_CAST, ivlen=8, keysizemin=40, keysizemax=128 000 algorithm ESP encrypt: id=7, name=ESP_BLOWFISH, ivlen=8, keysizemin=40, keysizemax=448 000 algorithm ESP encrypt: id=11, name=ESP_NULL, ivlen=0, keysizemin=0, keysizemax=0 000 algorithm ESP encrypt: id=12, name=ESP_AES, ivlen=8, keysizemin=128, keysizemax=256 000 algorithm ESP encrypt: id=13, name=ESP_AES_CTR, ivlen=8, keysizemin=160, keysizemax=288 000 algorithm ESP encrypt: id=14, name=ESP_AES_CCM_A, ivlen=8, keysizemin=128, keysizemax=256 000 algorithm ESP encrypt: id=15, name=ESP_AES_CCM_B, ivlen=8, keysizemin=128, keysizemax=256 000 algorithm ESP encrypt: id=16, name=ESP_AES_CCM_C, ivlen=8, keysizemin=128, keysizemax=256 000 algorithm ESP encrypt: id=18, name=ESP_AES_GCM_A, ivlen=8, keysizemin=128, keysizemax=256 000 algorithm ESP encrypt: id=19, name=ESP_AES_GCM_B, ivlen=8, keysizemin=128, keysizemax=256 000 algorithm ESP encrypt: id=20, name=ESP_AES_GCM_C, ivlen=8, keysizemin=128, keysizemax=256 000 algorithm ESP encrypt: id=22, name=ESP_CAMELLIA, ivlen=8, keysizemin=128, keysizemax=256 000 algorithm ESP encrypt: id=252, name=ESP_SERPENT, ivlen=8, keysizemin=128, keysizemax=256 000 algorithm ESP encrypt: id=253, name=ESP_TWOFISH, ivlen=8, keysizemin=128, keysizemax=256 000 algorithm ESP auth attr: id=1, name=AUTH_ALGORITHM_HMAC_MD5, keysizemin=128, keysizemax=128 000 algorithm ESP auth attr: id=2, name=AUTH_ALGORITHM_HMAC_SHA1, keysizemin=160, keysizemax=160 000 algorithm ESP auth attr: id=5, name=AUTH_ALGORITHM_HMAC_SHA2_256, keysizemin=256, keysizemax=256 000 algorithm ESP auth attr: id=6, name=AUTH_ALGORITHM_HMAC_SHA2_384, keysizemin=384, keysizemax=384 000 algorithm ESP auth attr: id=7, name=AUTH_ALGORITHM_HMAC_SHA2_512, keysizemin=512, keysizemax=512 000 algorithm ESP auth attr: id=8, name=AUTH_ALGORITHM_HMAC_RIPEMD, keysizemin=160, keysizemax=160 000 algorithm ESP auth attr: id=9, name=AUTH_ALGORITHM_AES_CBC, keysizemin=128, keysizemax=128 000 algorithm ESP auth attr: id=251, name=(null), keysizemin=0, keysizemax=0 000 000 algorithm IKE encrypt: id=0, name=(null), blocksize=16, keydeflen=131 000 algorithm IKE encrypt: id=5, name=OAKLEY_3DES_CBC, blocksize=8, keydeflen=192 000 algorithm IKE encrypt: id=7, name=OAKLEY_AES_CBC, blocksize=16, keydeflen=128 000 algorithm IKE hash: id=1, name=OAKLEY_MD5, hashsize=16 000 algorithm IKE hash: id=2, name=OAKLEY_SHA1, hashsize=20 000 algorithm IKE dh group: id=2, name=OAKLEY_GROUP_MODP1024, bits=1024 000 algorithm IKE dh group: id=5, name=OAKLEY_GROUP_MODP1536, bits=1536 000 algorithm IKE dh group: id=14, name=OAKLEY_GROUP_MODP2048, bits=2048 000 algorithm IKE dh group: id=15, name=OAKLEY_GROUP_MODP3072, bits=3072 000 algorithm IKE dh group: id=16, name=OAKLEY_GROUP_MODP4096, bits=4096 000 algorithm IKE dh group: id=17, name=OAKLEY_GROUP_MODP6144, bits=6144 000 algorithm IKE dh group: id=18, name=OAKLEY_GROUP_MODP8192, bits=8192 000 algorithm IKE dh group: id=22, name=OAKLEY_GROUP_DH22, bits=1024 000 algorithm IKE dh group: id=23, name=OAKLEY_GROUP_DH23, bits=2048 000 algorithm IKE dh group: id=24, name=OAKLEY_GROUP_DH24, bits=2048 000 000 stats db_ops: {curr_cnt, total_cnt, maxsz} :context={0,0,0} trans={0,0,0} attrs={0,0,0} 000 000 "l2tp-psk": 123.123.123.123<123.123.123.123>[+S=C]:17/1701...%virtual[+S=C]:17/%any===?; unrouted; eroute owner: #0 000 "l2tp-psk": myip=unset; hisip=unset; 000 "l2tp-psk": ike_life: 3600s; ipsec_life: 28800s; rekey_margin: 540s; rekey_fuzz: 100%; keyingtries: 0 000 "l2tp-psk": policy: PSK+ENCRYPT+TUNNEL+DONTREKEY+IKEv2ALLOW+SAREFTRACK+lKOD+rKOD; prio: 32,32; interface: eth0; 000 "l2tp-psk": newest ISAKMP SA: #0; newest IPsec SA: #0; 000 "l2tp-psk"[13]: 123.123.123.123<123.123.123.123>[+S=C]:17/1701...85.68.223.142[192.168.1.100,+S=C]:17/1701===192.168.1.100/32; erouted; eroute owner: #22 000 "l2tp-psk"[13]: myip=unset; hisip=unset; 000 "l2tp-psk"[13]: ike_life: 3600s; ipsec_life: 28800s; rekey_margin: 540s; rekey_fuzz: 100%; keyingtries: 0 000 "l2tp-psk"[13]: policy: PSK+ENCRYPT+TUNNEL+DONTREKEY+IKEv2ALLOW+SAREFTRACK+lKOD+rKOD; prio: 32,32; interface: eth0; 000 "l2tp-psk"[13]: newest ISAKMP SA: #19; newest IPsec SA: #22; 000 "l2tp-psk"[13]: IKE algorithm newest: AES_CBC_256-SHA1-MODP2048 000 000 #22: "l2tp-psk"[13] 85.68.223.142:4500 STATE_QUICK_R2 (IPsec SA established); EVENT_SA_EXPIRE in 2615s; newest IPSEC; eroute owner; isakmp#19; idle; import:not set 000 #22: "l2tp-psk"[13] 85.68.223.142 esp.8c30d2f4@85.68.223.142 esp.b0ccab72@123.123.123.123 ref=0 refhim=4294901761 000 #19: "l2tp-psk"[13] 85.68.223.142:4500 STATE_MAIN_R3 (sent MR3, ISAKMP SA established); EVENT_SA_EXPIRE in 20975s; newest ISAKMP; nodpd; idle; import:not set 000
Mon fichier /etc/ipsec.conf :
version 2.0 config setup dumpdir=/var/run/pluto/ nat_traversal=yes virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:25.0.0.0/8,%v6:fd00::/8,%v6:fe80::/10 oe=off protostack=netkey conn l2tp-psk authby=secret pfs=no auto=add rekey=no type=tunnel left=123.123.123.123 leftprotoport=17/1701 right=%any rightprotoport=17/%any rightsubnet=vhost:%priv,%no
Mon fichier /etc/xl2tpd/xl2tpd.conf
[global] ; Global parameters: port = 1701 ; * Bind to port 1701 listen-addr = 123.123.123.123 [lns default] ; Our fallthrough LNS definition ip range = 10.0.0.10-10.0.0.50 ; * Allocate from this IP range local ip = 10.0.0.254 ; * Our local IP to use require chap = yes ; * Require CHAP auth. by peer refuse pap = yes ; * Refuse PAP authentication
PFsense :
Les erreurs que je rencontre (log pfsense) :Mar 4 17:38:48 racoon: INFO: @(#)ipsec-tools 0.8.1 (http://ipsec-tools.sourceforge.net) Mar 4 17:38:48 racoon: INFO: @(#)This product linked OpenSSL 1.0.1e 11 Feb 2013 (http://www.openssl.org/) Mar 4 17:38:48 racoon: INFO: Reading configuration from "/var/etc/ipsec/racoon.conf" Mar 4 17:38:48 racoon: DEBUG: call pfkey_send_register for AH Mar 4 17:38:48 racoon: DEBUG: call pfkey_send_register for ESP Mar 4 17:38:48 racoon: DEBUG: call pfkey_send_register for IPCOMP Mar 4 17:38:48 racoon: DEBUG: reading config file /var/etc/ipsec/racoon.conf Mar 4 17:38:48 racoon: DEBUG: no check of compression algorithm; not supported in sadb message. Mar 4 17:38:48 racoon: DEBUG: getsainfo params: loc='10.0.0.15' rmt='10.0.0.0/8' peer='NULL' client='NULL' id=1 Mar 4 17:38:48 racoon: DEBUG: open /var/db/racoon/racoon.sock as racoon management. Mar 4 17:38:48 racoon: [Self]: INFO: 192.168.1.30[4500] used for NAT-T Mar 4 17:38:48 racoon: [Self]: INFO: 192.168.1.30[4500] used as isakmp port (fd=9) Mar 4 17:38:48 racoon: [Self]: INFO: 192.168.1.30[500] used for NAT-T Mar 4 17:38:48 racoon: [Self]: INFO: 192.168.1.30[500] used as isakmp port (fd=10) Mar 4 17:38:48 racoon: DEBUG: pk_recv: retry[0] recv() Mar 4 17:38:48 racoon: DEBUG: got pfkey X_SPDDUMP message Mar 4 17:38:48 racoon: DEBUG: pfkey X_SPDDUMP failed: No such file or directory Mar 4 17:38:48 racoon: DEBUG: pk_recv: retry[0] recv() Mar 4 17:38:48 racoon: DEBUG: got pfkey REGISTER message Mar 4 17:38:48 racoon: INFO: unsupported PF_KEY message REGISTER Mar 4 17:38:48 racoon: DEBUG: pk_recv: retry[0] recv() Mar 4 17:38:48 racoon: DEBUG: got pfkey X_SPDADD message Mar 4 17:38:48 racoon: DEBUG: pk_recv: retry[0] recv() Mar 4 17:38:48 racoon: DEBUG: got pfkey X_SPDADD message Mar 4 17:38:48 racoon: DEBUG: sub:0xbfbfe724: 192.168.254.0/24[0] 192.168.254.254/32[0] proto=any dir=in Mar 4 17:38:48 racoon: DEBUG: db :0x28501288: 192.168.254.254/32[0] 192.168.254.0/24[0] proto=any dir=out Mar 4 17:38:48 racoon: DEBUG: pk_recv: retry[0] recv() Mar 4 17:38:48 racoon: DEBUG: got pfkey X_SPDADD message Mar 4 17:38:48 racoon: DEBUG: sub:0xbfbfe724: 10.0.0.15/32[0] 10.0.0.0/8[0] proto=any dir=out Mar 4 17:38:48 racoon: DEBUG: db :0x28501288: 192.168.254.254/32[0] 192.168.254.0/24[0] proto=any dir=out Mar 4 17:38:48 racoon: DEBUG: sub:0xbfbfe724: 10.0.0.15/32[0] 10.0.0.0/8[0] proto=any dir=out Mar 4 17:38:48 racoon: DEBUG: db :0x285013c8: 192.168.254.0/24[0] 192.168.254.254/32[0] proto=any dir=in Mar 4 17:38:48 racoon: DEBUG: pk_recv: retry[0] recv() Mar 4 17:38:48 racoon: DEBUG: got pfkey X_SPDADD message Mar 4 17:38:48 racoon: DEBUG: sub:0xbfbfe724: 10.0.0.0/8[0] 10.0.0.15/32[0] proto=any dir=in Mar 4 17:38:48 racoon: DEBUG: db :0x28501288: 192.168.254.254/32[0] 192.168.254.0/24[0] proto=any dir=out Mar 4 17:38:48 racoon: DEBUG: sub:0xbfbfe724: 10.0.0.0/8[0] 10.0.0.15/32[0] proto=any dir=in Mar 4 17:38:48 racoon: DEBUG: db :0x285013c8: 192.168.254.0/24[0] 192.168.254.254/32[0] proto=any dir=in Mar 4 17:38:48 racoon: DEBUG: sub:0xbfbfe724: 10.0.0.0/8[0] 10.0.0.15/32[0] proto=any dir=in Mar 4 17:38:48 racoon: DEBUG: db :0x28501508: 10.0.0.15/32[0] 10.0.0.0/8[0] proto=any dir=out
Et la configuration de pfsense :
Ressources utilisés :
Livres :
Les VPN - Fonctionnement, mise en oeuvre et maintenance - Edition ENI
pfsense - The definitive Guide - Edition Reed Media ServicesDocumentations :
https://github.com/xelerance/Openswan/wiki
https://github.com/xelerance/Openswan/wiki/L2tp-ipsec-configuration-using-openswan-and-xl2tpd
http://www.nta-monitor.com/wiki/index.php/OpenSwan
https://doc.pfsense.org/index.php/Routing_internet_traffic_through_a_site-to-site_IPsec_tunnel
https://doc.pfsense.org/index.php/IPsec_TroubleshootingProblèmes similaires :
https://forum.pfsense.org/index.php?topic=65312.0
https://forum.pfsense.org/index.php?topic=4957.0
http://marc.info/?l=pfsense-support&m=123365753708608J'ai un doute concernant la configuration phase 2 sur mon pfsense,
EDIT :
La connexion fonctionnel sous windows :
Je vous remercie par avance, de votre soutient,
Cordialement,
-
D'où viennent les erreurs que vous avez posté ? Pfsense, Openswan ? Et à quel moment ? Pas le temps de chercher je préfère vous poser la question.
-
Merci de l'intérêt que vous portez à mon problème,
Les erreurs postés, proviennent des logs de pfsense.
-
J'ai l'impression que vous configurez pfSense par Ipsec et que vos clients utilisent L2TP.
La logique serait plutôt de configurer un VPN L2TP sur pfSense face à des clients L2TP.NB : Microsoft indique que L2TP utilise Ipsec mais je n'entends pas que cela signifie qu'on peut se connecter à un serveur Ipsec "pur".
(Je ne vais pas dire plus que ce post … parce que j'ai tenté une seule fois de configurer le serveur VPN L2TP sans aucun succès, alors que j'ai plusieurs pfSense en serveur VPN OpenVPN qui sont immédiats ainsi que des pfSense en serveur VPN Ipsec site à site presque immédiats aussi !)
-
J'ai l'impression que vous configurez pfSense par Ipsec et que vos clients utilisent L2TP.
Oui, mais clients utilisent L2TP, je suis en accord avec vous, cela m'as d'ailleurs un peu perturbé en lisant les documentations, sur le site technet de microsoft, mais du coup par rapport à vos propros, j'ai l'impression de ne pas avoir compris quelques choses :P
Il me semblait qu'IPSec n'est pas un VPN, mais bien une un outils qui permet d'ajouter une couche cryptographique, a l'instar de SSL/TLS sur OpenVPN, du moins les documentations vont dans ce sens…
Car ce que j'avais compris c'était que L2TP était un "mélange" de PPTP de microsoft et L2F de cisco, qu'il fonctionnait sur la couche 2 du modèle OSI, mais que a proprement parlé, nous pouvions faire du VPN avec seulement du PPTP, car lui aussi avait sa couche de sécurité, désaprouvé aujourd'hui. Es-ce que je me trompe, ou es-ce que j'ai mélangé des informations ?
La logique serait plutôt de configurer un VPN L2TP sur pfSense face à des clients L2TP.
En fait, le serveur nommé "serveur distant" a plusieurs clients et des ressources disponibles pour ces clients. Ce serveur est un serveur dédié avec une bande passante up/down et une disponibilité bien plus accrus que mon pfsense. En outre, il dispose d'une IP fixe. C'est pour cette raison que j'aimerais configurer mon pfsense en tant que client L2TP/IPSec.
Cordialement,
-
Il y a deux grandes familles de vpn : Ipsec (pas forcément tous interopérables entre eux) et d'autre part les vpn SSL (Open vpn pr exemple). Je parle de vpn qui offre des garanties de sécurité, je laisse de côté ceux qui sont peu sûrs (pptp) et ceux, beaucoup plus spécifiques, mis en ouvre sur les réseaux des opérateurs, comme MPLS.
Pfsense sait faire du vpn ssl et du vpn Ipsec.
On a tendance à considérer Ipsec comme plus sûr que la solution SSL. C'est tout relatif et question de mise en œuvre.
Ipsec est souvent plus utilisé dans les vpn pour l'interconnexion de sites et SSL pour les utilisateurs nomades. Il y a de multiples raisons, mais en pratique il n'existe pas de bon client ipsec open source mais le client Openvpn est remarquablement fiable. D' où le choix d'Openvpn pour les nomades. L'interopérabilité est souvent plus évident avec Openvpn, même si le client Cisco Ipsec fonctionne très bien avec Pfsense, encore faut il disposer des licences.Une autre différence porte sur le fonctionnement du vpn lui même. Dans ipsec la totalité du paquet ip d'irigine est encapsulé (et chiffré) dans un autre paquet ip sur le réseau publique. De ce fait les entêtes ip et tcp des réseaux internes sont protégées (et conservées). Avec le vpn SSL seul la partie data du paquet est chiffrée. Cela peut convenir ou non selon les cas. Il n'y a pas de réponse toute faite. On peut noter que le surcharge protocolaire est plus importante en ipsec et que les nat peut poser problème lors de la vérification de l'intégrité des paquets. L2TP est le pire de ce point de vue : http://wallu.pagesperso-orange.fr/pag-l.htm par exemple.
En dehors de tout cela et dans votre cas ipsec semble un bonne solution. Vous devez vous assurer que les paramètres cryptographiques sont rigoureusement identique à chaque extrémité.
-
C'est bien ce qui m'avait semblé, merci de ces informations ccnet :)
Concernant la mise en place de ma solution, là où je suis un peu dubitatif, c'est que je n'ai rien dans les logs côté serveur distant, pas une seule tentative de quoi que ce soit, alors que lorsque je me connecte (que cela échoue ou non) avec un client nomade, j'ai une tartine de lignes supplémentaires qui s'ajoute à mon syslog…
-
Il faudrait activer spécifiquement des logs sur le serveur distant, ou monitorer le trafic sur le site distant pour vérifier qu'en effet un flux arrive.
-
Vous avez supprimé du post initial les images avec ipsec.
Il serait bon que vous indiquiez où vous en êtes : si client L2TP alors serveur L2TP