Informations :
Dates
- Publish : : Thursday 18 september 2014
- Modification : Monday 01 november 2021
- 2223 views
Share :
Je vais décrire comment configurer un serveur VPN par les protocoles IPSec et XL2TP.
Installation des paquets IPSec
Il faut installer un xSecureWAN ;) il y quelques temps çà s'appellait FreeSWAN puis OpenSWAN ;)
De nôs jours c'est :strongSWAN
!
Script avec 1 ligne
001aptitude install strongswan xl2tpd
Configuration d'IPSec
Nous allons configurer IPSec : vim /etc/ipsec.conf
.
Script avec 82 lignes
001version 2.0
002config setup
003charondebug=all
004uniqueids=no
005006
conn %default
007rekeymargin=3m
008keyingtries=3
009keyexchange=ikev2
010mobike=no
011forceencaps=yes
012fragmentation=yes
013# eap_identity=%any
014# phase 1
015# ike=aes128-sha1-modp2048
016ike=aes256gcm16-sha512-modp2048,aes256gcm16-sha512-modp3072,aes256gcm16-sha512-modp4096,aes256gcm16-sha512-modp8192,aes128-sha1-modp1024,aes128-sha1-modp2048,aes128-sha1-modp3072,aes128-sha1-modp4096,aes128-sha1-modp8192
017ikelifetime=36000
018# phase 2
019# esp=aes256gcm16-sha512-modp8192
020# esp=aes128-sha1-modp2048
021# esp=aes256gcm16-sha512-modp2048
022esp=aes128-sha1-modp2048
023lifetime=10800
024keylife=10800
025authby=psk
026installpolicy=yes
027# ike=aes-aes256-sha-modp1024,aes256-sha512-modp4096!
028# esp=aes-aes256-sha-modp1024,aes256-sha512-modp4096!
029030
# Pour les connexions de client IPSec sur ce server
031conn L2TP-PSK-NAT
032rightsubnet=vhost:%priv
033also=L2TP-PSK-noNAT
034035
conn L2TP-PSK-noNAT
036authby=secret
037pfs=no
038auto=add
039keyingtries=3
040rekey=no
041keylife=24h
042ikelifetime=6h
043type=transport
044left=%defaultroute
045leftid=@sovh.lab3w.fr
046leftprotoport=17/1701
047right=%any
048rightprotoport=17/%any
049forceencaps=yes
050dpddelay=40
051dpdtimeout=130
052dpdaction=clear
053054
# Pour une connexion du client IPSec nice sur ce server
055conn nice-vpn
056authby=secret
057type=transport
058left=%default
059leftid=@sovh.lab3w.fr
060# site 1
061right=IP_DU_SERVER_CLIENT
062rightid=@snice.lab3w.fr
063auto=add
064dpdaction=restart
065mark=30
066067
# Pour la connexion cliente sur le serveur GCLOUD ;)
068conn gcloud-vpn1
069authby=secret
070type=tunnel
071left=158.69.126.137
072leftid=158.69.126.137
073leftauth=psk
074leftsubnet=10.101.0.0/24,10.101.150.0/24
075# google cloud
076right=34.95.21.246
077rightid=34.95.21.246
078rightauth=psk
079rightsubnet=10.162.0.0/20
080auto=add
081dpdaction=restart
082mark=30
Vous vous apercevez que l'on utilise une passphrase authby=secret
, on pourait utiliser des certificats.
Puis on ajoute la passphrase dans /etc/ipsec.secrets
- par exemple :
Script avec 4 lignes
001@sovh.lab3w.fr %any : PSK "ma clef a pre-partager"
002@sovh.lab3w.fr @snice.lab3w.fr : PSK "a clef a pre-partager-nice"
00334.95.21.246 : PSK "ma_super_clef_gcloud"
004
Infos : Pour la connexion au serveur GCLOUD (pour mémoire) - j'arrive bien à me connecter et à rester connecté dessus (visible depuis l'interface gcloud ) ... mais sans trouver/comprendre comment faire pour accéder à ma machine elle-même ou à des services / IP - Ma période d'essai gratuit est terminée :/
Configuration de XL2TP
Nous allons configurer XL2TP : vim /etc/xl2tpd/xl2tpd.conf
.
Script avec 33 lignes
001[global]
002;auth file = /etc/xl2tpd/xl2tpd-secrets
003ipsec saref = yes
004;saref refinfo = 30
005;listen-addr = 0.0.0.0
006;port = 1701
007; utilse pour la conf par default(a sup si radius)
008access control = no
009rand source = dev
010;
011;debug avp = yes
012;debug network = yes
013;debug packet = no
014;debug state = yes
015;debug tunnel = yes
016;
017[lns default]
018;exclusive = no
019ip range = 172.16.5.101-172.16.5.154
020;assign ip = yes
021local ip = 172.16.5.254
022name = sovh
023hostname = sovh.lab3w.fr
024; Regles d'authentification
025require chap = yes
026refuse pap = yes
027require authentication = yes
028unix authentication = no
029ppp debug = yes
030; Fichier de configuration de PPP
031pppoptfile = /etc/ppp/options.net.l2tpd
032length bit = yes
033;challenge = yes
Configuration de PPP
Nous allons configurer PPP : vim /etc/ppp/options.net.l2tpd
.
Script avec 47 lignes
001# Do not support BSD compression.
002nobsdcomp
003passive
004lock
005 006# Allow all usernames to connect.
007name *
008#name net
009proxyarp
010#ipcp-accept-local
011#ipcp-accept-remote
012#lcp-echo-failure 10
013lcp-echo-interval 30
014nodeflate
015noccp
016 017# Do not authenticate incoming connections. This is handled by IPsec.
018#noauth
019#refuse-chap
020#refuse-mschap
021#refuse-mschap-v2
022 023# Authentification
024auth
025#noipdefault
026require-chap
027#require-mppe-128
028+mschap-v2
029+mschap
030require-mschap
031require-mschap-v2
032hide-password
033modem
034asyncmap 0
035crtscts
036#silent
037 038# DNS servers the PPP clients will use.
039#ms-dns 172.16.5.252
040ms-dns 8.4.8.4
041 042mtu 1400
043mru 1400
044 045# Options
046#defaultroute
047#nodefaultroute
Configuration du fichier des comptes clients (machines et utilisateurs)
On édite : vim /etc/ppp/chap-secrets
.
Script avec 11 lignes
001# machine avec IP fixe
002pc_1.zw3b.vpn * mot2passe4pc_1 172.16.5.10
003172.16.5.10 pc_1.zw3b.vpn mot2passe4pc_1 *
004 005# user avec IP fixe
006user_1.domaine.tld * mot2passe4user_1 172.16.5.20
007172.16.5.20 user_1.domaine.tld mot2passe4user_1 *
008 009# user avec IP aléatoire (comprise dans le ip range)
010user_2.domaine.tld * mot2passe4user_2 *
011* user_2.domaine.tld mot2passe4user_2 *
Puis vérifier bien que le fichier est lisible que pour l'utilisateur root par la commande ls -l /etc/ppp/chap-secrets
qui doit vous retourner les droits -rw-------
Script de lancement du serveur VPN : IPSEC+XL2TP
Ici simplement on démarre /etc/init.d/ipsec start
et /etc/init.d/xl2tpd start
et on attend les connexions VPN des clients.
Script avec 47 lignes
001#!/bin/bash
002003
#####---------------------------- INFORMATIONS --------------------------------#####
004#
005# Name : vpn-net-server.sh
006# Desc : Script de lancement du serveur VPN : IPSEC+XL2TP
007# Auteur : Olivier Romain JAILLET-RAMEY alias Kss*
008# Mail : orj AT lab3w DOT fr
009# Date : 2014-05-05
010#
011#####---------------------------- INFORMATIONS --------------------------------#####
012013
#####-----------------------------------------######
014015
function ipsec_l2tp()
016{
017/etc/init.d/ipsec
018/etc/init.d/xl2tpd
019}
020021
#####-----------------------------------------######
022023
024
#####-----------------------------------------######
025case "$1" in
026027
start|restart)
028$0 stop
029echo "$0 Starting"
030ipsec_l2tp start
031echo "VPN ZW3B CONNECTION UP"
032;;
033034
stop)
035echo "$0 Stop"
036037
ipsec_l2tp stop
038echo "VPN ZW3B CONNECTION DOWN"
039;;
040041
*)
042echo "usage : $0 (start|stop|restart)"
043;;
044045
esac
046#####-----------------------------------------######
047
Votre serveur VPN IPSec par XL2TP est configuré.
Il faut que vous configurez un client VPN pour essayer si la connexion fonctionne - pourquoi pas ajouter aussi le script de re-connexion automatique au serveur