vpn remote access en utilisant Strongswan
Introduction
Un réseau privé virtuel, ou VPN, permet de crypter de manière sécurisée le trafic lors de son acheminement à travers des réseaux non fiables, tels que ceux du café, d'une conférence ou d'un aéroport.
IKEv2, ou Internet Key Exchange v2, est un protocole qui permet un tunneling IPSec direct entre le serveur et le client. Dans les implémentations VPN IKEv2, IPSec fournit un chiffrement pour le trafic réseau. IKEv2 est pris en charge de manière native sur les nouvelles plateformes (OS X 10.11+, iOS 9.1+ et Windows 10) sans nécessiter d'applications supplémentaires, et il gère les problèmes des clients de manière relativement fluide.
Dans cet article, nous allons configurer un serveur VPN IKEv2 à l'aide de StrongSwan sur un serveur Ubuntu 16.04 et vous y connecter à partir de clients Windows, iOS et macOS.
StrongSwan est une implémentation du protocole IPSEC.
Prérequis :
Avoir un dns fonctionnel
#apt-get install bind9 bind9utils
#vim /etc/bind/named.conf.default-zones
#vim /etc/bind/db.kachou
#vim /etc/resolv.conf
Test
- 1.Architecture
2. Installation StrongSwan
#apt-get install strongswan strongswan-plugin-eap-mschapv2 moreutils iptables-persistent
3. Creation du fichier d’autorité de certification
#mkdir vpn-certs
#cd vpn-certs
#ipsec pki --gen --type rsa --size 4096 --outform pem > server-root-key.pem
#chmod 600 server-root-key.pem
#ipsec pki --self --ca --lifetime 3650 --in server-root-key.pem --type rsa --dn "C=SN, O=kachou, CN=vpn.kachou.sn" --outform pem > server-root-ca.pem
4. Generation du certificat pour le serveur vpn
# ipsec pki --gen --type rsa --size 4096 --outform pem > vpn-server-key.pem
# ipsec pki --pub --in vpn-server-key.pem --type rsa | ipsec pki --issue --lifetime 1825 --cacert server-root-ca.pem --cakey server-root-key.pem --dn "C=SN, O=kachou, CN= vpn.kachou.sn" --san vpn.kachou.sn ip --flag serverAuth --flag ikeIntermediate --outform pem > vpn-server-cert.pem
# sudo cp ./vpn-server-cert.pem /etc/ipsec.d/certs/vpn-server-cert.pem
# sudo cp ./vpn-server-key.pem /etc/ipsec.d/private/vpn-server-key.pem
# sudo chown root /etc/ipsec.d/private/vpn-server-key.pem
# sudo chgrp root /etc/ipsec.d/private/vpn-server-key.pem
# sudo chmod 600 /etc/ipsec.d/private/vpn-server-key.pem
Dans cette étape, nous avons créé une paire de certificats qui serait utilisée pour sécuriser
les communications entre le client et le serveur. Nous avons également signé les certificats
avec notre clé racine, afin que le client puisse vérifier l'authenticité du serveur VPN.
Maintenant que tous les certificats sont prêts, nous allons passer à la configuration du
strongSwan.
5. Configuration du strongSwan
# cp /etc/ipsec.conf /etc/ipsec.conf.old
Vider le contenu du fichier ipsec.conf
# echo '' | sudo tee /etc/ipsec.conf
Configuration global
# vim /etc/ipsec.conf
config setup
charondebug="ike 1, knl 1, cfg 0"
uniqueids=no
conn ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
ike=aes256-sha1-modp1024,3des-sha1-modp1024!
esp=aes256-sha1,3des-sha1!
dpdaction=clear
dpddelay=300s
rekey=no
left=%any
leftid=
@vpn.kachou.sn
leftcert=/etc/ipsec.d/certs/vpn-server-cert.pem
leftsendcert=always
leftsubnet=
0.0.0.0/0
right=%any
rightid=%any
rightauth=eap-mschapv2
rightdns=
8.8.8.8,8.8.4.4
rightsourceip=
10.10.10.0/24
rightsendcert=never
eap_identity=%identity
6. Création des comptes clients pour l’authentification par vpn
# vim /etc/ipsec.secrets
vpn.kachou.sn : RSA
"/etc/ipsec.d/private/vpn-server-key.pem"
kachou %any% : EAP
"passer"
akhibou %any% : EAP
"passer"
7. Chargement des configurations
# ipsec reload
# ipsec restart
# cp vpn-certs/server-root-ca.pem vpn-certs/vpn_root_certificate.pem
copie le certificat vers la machine client par ftp ou scp
pour notre cas on a copié par scp
# scp vpn-certs/vpn_root_certificate.pem kachou@10.0.117.34:/tmp
# ipsec reload
# ipsec restart
# cp vpn-certs/server-root-ca.pem vpn-certs/vpn_root_certificate.pem
copie le certificat vers la machine client par ftp ou scp
pour notre cas on a copié par scp
# scp vpn-certs/vpn_root_certificate.pem kachou@10.0.117.34:/tmp
8. Test sur mac OS (10.13.6)
a. Importation du certificat dans le magasin de certificat.
Double cliquer sur le certificat.
Puis entrer son mot de passe
Selection Toujours Approuver au niveau de Securité IP(IPsec)
Valider avec son mot de passe
Maintenant que le certificat est important et fiable, configurons la connexion VPN avec les étapes suivantes :
b. Aller dans préferences système
Double cliquer sur Réseau
Changer son dns avec votre adresse dns server pour mon cas 10.0.117.43 (vpn.kachou.sn)
Pour se faire cliquer sur Avancé. puis DNS
c. Creation de la connexion VPN
Cliquer sur + puis selection VPN
Cliquer sur Crée.
Remplir avec les identifiants Puis cliquer sur Réglages d’authentification.Choisir l’option Nom d’utilisateur.
Et entrez le nom d’utilisateur et le mot passe crée dans le fichier ipsec.secrets.
On valider et on clique sur se connecter puis on vérifie l’état
de la connectivité.
On constate que l'utilisateur est connecté par VPN
On constate que l’utilisateur kachou s’est bien connecté
On verifie son adresse avec ifconfig
Conclusion
En somme, cet article nous a permis de mettre en place VPN avec strongswan pour le respect des trois éléments a savoir :
- la confidentialité;
- l'intégrité ;
- la disponibilité.