Un client de notre entreprise de développement nous a donné accès à son VPN IPSec en nous fournissant les informations d'identification nécessaires (anonymisées) :
- Passerelle : example.fake
- Le groupe : MYGROUP
- Utilisateur : MYUSER
- Mot de passe : MYPASSWORD
- PSK : MYPSK
Ils ont également fourni les paramètres configurés de leur côté :
Phase 1
- Authentification : SHA1
- Chiffrement : AES 256
- Durée de vie de l'AS : 1 heure
- Groupe clé : Groupe Diffie Helman 2
- NAT Traversal et DPD sont activés
- Intervalle de maintien : 20 secondes
Phase 2
- Type : ESP
- Authentification : SHA1
- Chiffrement : AES 256
- Forcer l'expiration de la clé : 1 heure
Le type de connexion est IKEv1 et ils ont configuré l'accès à travers le tunnel VPN uniquement sur une IP spécifique 1.2.3.4 parce que c'est la seule machine que nous devons atteindre.
Objectif et tentative
J'essaie de comprendre comment configurer StrongSwan pour qu'il se connecte à leur VPN. J'ai besoin que cela fonctionne sur un VPS avec Ubuntu Server 16.04.
J'ai essayé de suivre un certain nombre de guides, mais certains concernaient des versions plus anciennes de StrongSwan et n'ont donc pas fonctionné. Finalement, j'ai édité /etc/ipsec.conf
avec la tentative de configuration suivante :
config setup
conn myconn
authby=xauthpsk
dpdaction=restart
esp=aes256-sha1
ike=aes256-sha1-dh2
ikelifetime=1h
keyexchange=ikev1
leftauth=psk
leftauth2=xauth
leftgroups=MYGROUP
leftid=@MYUSER
right=example.fake
rightsubnet=1.2.3.4/32
J'ai créé /etc/ipsec.secrets
:
: PSK "MYPSK"
MYUSER: XAUTH "MYPASSWORD"
État final souhaité et message d'erreur
L'état final souhaité est que notre machine se connecte au VPN du client et que nous puissions atteindre cette seule IP 1.2.3.4. Le reste du trafic doit être divisé et ne pas passer par le VPN.
Malgré le fait que myconn
est défini dans /etc/ipsec.conf
Le message d'erreur suivant s'affiche lors de la tentative de connexion :
# ipsec restart
Stopping strongSwan IPsec...
Starting strongSwan 5.3.5 IPsec [starter]...
# ipsec up myconn
no config named 'myconn'
Fichiers journaux
Ces lignes sont ajoutées à /var/log/syslog
après avoir couru ipsec restart
:
Jun 5 16:45:01 server charon: 00[DMN] signal of type SIGINT received. Shutting down
Jun 5 16:45:03 server charon: 00[DMN] Starting IKE charon daemon (strongSwan 5.3.5, Linux 4.8.0-53-generic, x86_64)
Jun 5 16:45:03 server charon: 00[CFG] disabling load-tester plugin, not configured
Jun 5 16:45:03 server charon: 00[LIB] plugin 'load-tester': failed to load - load_tester_plugin_create returned NULL
Jun 5 16:45:03 server charon: 00[CFG] dnscert plugin is disabled
Jun 5 16:45:03 server charon: 00[CFG] ipseckey plugin is disabled
Jun 5 16:45:03 server charon: 00[CFG] attr-sql plugin: database URI not set
Jun 5 16:45:03 server charon: 00[CFG] loading ca certificates from '/etc/ipsec.d/cacerts'
Jun 5 16:45:03 server charon: 00[CFG] loading aa certificates from '/etc/ipsec.d/aacerts'
Jun 5 16:45:03 server charon: 00[CFG] loading ocsp signer certificates from '/etc/ipsec.d/ocspcerts'
Jun 5 16:45:03 server charon: 00[CFG] loading attribute certificates from '/etc/ipsec.d/acerts'
Jun 5 16:45:03 server charon: 00[CFG] loading crls from '/etc/ipsec.d/crls'
Jun 5 16:45:03 server charon: 00[CFG] loading secrets from '/etc/ipsec.secrets'
Jun 5 16:45:03 server charon: 00[CFG] loaded RSA private key from '/etc/ipsec.d/private/myKey.der'
Jun 5 16:45:03 server charon: 00[CFG] sql plugin: database URI not set
Jun 5 16:45:03 server charon: 00[CFG] opening triplet file /etc/ipsec.d/triplets.dat failed: No such file or directory
Jun 5 16:45:03 server charon: 00[CFG] eap-simaka-sql database URI missing
Jun 5 16:45:03 server charon: 00[CFG] loaded 0 RADIUS server configurations
Jun 5 16:45:03 server charon: 00[CFG] no threshold configured for systime-fix, disabled
Jun 5 16:45:03 server charon: 00[CFG] coupling file path unspecified
Jun 5 16:45:03 server charon: 00[LIB] loaded plugins: charon test-vectors unbound ldap pkcs11 aes rc2 sha1 sha2 md4 md5 rdrand random nonce x509 revocation constraints acert pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey dnscert ipseckey pem openssl gcrypt af-alg fips-prf gmp agent chapoly xcbc cmac hmac ctr ccm gcm ntru bliss curl soup mysql sqlite attr kernel-netlink resolve socket-default connmark farp stroke updown eap-identity eap-sim eap-sim-pcsc eap-aka eap-aka-3gpp2 eap-simaka-pseudonym eap-simaka-reauth eap-md5 eap-gtc eap-mschapv2 eap-dynamic eap-radius eap-tls eap-ttls eap-peap eap-tnc xauth-generic xauth-eap xauth-pam xauth-noauth tnc-tnccs tnccs-20 tnccs-11 tnccs-dynamic dhcp whitelist lookip error-notify certexpire led radattr addrblock unity
Jun 5 16:45:03 server charon: 00[LIB] dropped capabilities, running as uid 0, gid 0
Jun 5 16:45:03 server charon: 00[JOB] spawning 16 worker threads
Ils sont ajoutés après l'exécution de ipsec up myconn
:
Jun 5 16:45:21 server charon: 15[CFG] received stroke: initiate 'myconn'
Jun 5 16:45:21 server charon: 15[CFG] no config named 'myconn'
Elles semblent correspondre au message d'erreur susmentionné.
クエスチョン
Pourquoi les ipsec up myconn
dire qu'une telle configuration n'existe pas ? C'est la première fois que j'essaie de gérer un VPN IPSec... est-ce que la configuration que j'ai essayé d'écrire a un sens ?
Que dois-je modifier pour que cela fonctionne ?
Mise à jour après l'ajout de auto=add
Comme suggéré dans les commentaires, j'ai ajouté auto=add
à ma configuration. J'obtiens maintenant ceci :
# ipsec up myconn
initiating Main Mode IKE_SA myconn[1] to <IP of example.fake>
configuration uses unsupported authentication
tried to check-in and delete nonexisting IKE_SA
establishing connection 'myconn' failed
Ces lignes sont ajoutées au fichier journal :
Jun 5 17:07:19 server charon: 12[CFG] received stroke: initiate 'myconn'
Jun 5 17:07:19 server charon: 14[IKE] initiating Main Mode IKE_SA myconn[2] to <IP of example.fake>
Jun 5 17:07:19 server charon: 14[CFG] configuration uses unsupported authentication
Jun 5 17:07:19 server charon: 14[MGR] tried to check-in and delete nonexisting IKE_SA
Mise à jour après suppression esp=
, ike=
y keyexchange=
Après avoir supprimé les trois lignes mentionnées ci-dessus, la tentative de connexion se déroule comme suit, à trois reprises (l'extrait ne montre que la première, les autres sont identiques) :
Jun 5 17:18:44 server charon: 06[CFG] received stroke: initiate 'myconn'
Jun 5 17:18:45 server charon: 04[IKE] initiating IKE_SA myconn[1] to <IP of example.fake>
Jun 5 17:18:45 server charon: 04[ENC] generating IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(HASH_ALG) ]
Jun 5 17:18:45 server charon: 04[NET] sending packet: from <our server IP>[500] to <IP of example.fake>[500] (1500 bytes)
Jun 5 17:18:49 server charon: 03[IKE] retransmit 1 of request with message ID 0
Jun 5 17:18:49 server charon: 03[NET] sending packet: from <our server IP>[500] to <IP of example.fake>[500] (1500 bytes)
Jun 5 17:18:56 server charon: 15[IKE] retransmit 2 of request with message ID 0
Jun 5 17:18:56 server charon: 15[NET] sending packet: from <our server IP>[500] to <IP of example.fake>[500] (1500 bytes)
Jun 5 17:19:09 server charon: 01[IKE] retransmit 3 of request with message ID 0
Jun 5 17:19:09 server charon: 01[NET] sending packet: from <our server IP>[500] to <IP of example.fake>[500] (1500 bytes)
Jun 5 17:19:32 server charon: 16[IKE] retransmit 4 of request with message ID 0
Jun 5 17:19:32 server charon: 16[NET] sending packet: from <our server IP>[500] to <IP of example.fake>[500] (1500 bytes)
Jun 5 17:20:14 server charon: 05[IKE] retransmit 5 of request with message ID 0
Jun 5 17:20:14 server charon: 05[NET] sending packet: from <our server IP>[500] to <IP of example.fake>[500] (1500 bytes)
Jun 5 17:21:30 server charon: 13[IKE] giving up after 5 retransmits
Jun 5 17:21:30 server charon: 13[IKE] peer not responding, trying again (2/3)
Mise à jour : configuration fonctionnelle pour ShrewSoft VPN
La connexion au VPN du client a été testée sur une machine de bureau au bureau, en utilisant ShrewSoft VPN, mais cela ne convient pas pour l'utiliser sur le VPS de développement. Ledit programme a exporté la configuration suivante :
n:version:4
n:network-ike-port:500
n:network-mtu-size:1380
n:client-addr-auto:1
n:network-natt-port:4500
n:network-natt-rate:15
n:network-frag-size:540
n:network-dpd-enable:1
n:network-notify-enable:1
n:client-banner-enable:1
n:client-dns-used:1
n:client-dns-auto:1
n:client-dns-suffix-auto:1
b:auth-mutual-psk:****REMOVED****
n:phase1-dhgroup:2
n:phase1-keylen:0
n:phase1-life-secs:86400
n:phase1-life-kbytes:0
n:vendor-chkpt-enable:0
n:phase2-keylen:0
n:phase2-pfsgroup:-1
n:phase2-life-secs:3600
n:phase2-life-kbytes:0
n:policy-nailed:0
n:policy-list-auto:1
s:network-host:example.fake
s:client-auto-mode:pull
s:client-iface:virtual
s:network-natt-mode:enable
s:network-frag-mode:enable
s:auth-method:mutual-psk-xauth
s:ident-client-type:keyid
s:ident-client-data:MYGROUP
s:ident-server-type:any
s:phase1-exchange:aggressive
s:phase1-cipher:auto
s:phase1-hash:auto
s:phase2-transform:auto
s:phase2-hmac:auto
s:ipcomp-transform:disabled
s:policy-level:auto
Cela suggère-t-il des changements à apporter à la ipsec.conf
pour que cela fonctionne avec StrongSwan ?