Informations :
Dates
- Publish : : Thursday 18 september 2014
- Modification : Thursday 15 december 2016
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 34 lignes
001version 2.0 002config setup 003# plutodebug=all 004 klipsdebug=none 005# interfaces="ipsec0=eth0" 006 nat_traversal=yes 007# virtual_private=%v4:10.0.0.0/8 008 oe=off 009 nhelpers=0 010 protostack=netkey 011 uniqueids=no 012 013conn L2TP-PSK-NAT 014 rightsubnet=vhost:%priv 015 also=L2TP-PSK-noNAT 016 017conn L2TP-PSK-noNAT 018 authby=secret 019 pfs=no 020 auto=add 021 keyingtries=3 022 rekey=no 023 keylife=24h 024 ikelifetime=6h 025 type=transport 026 left=%defaultroute 027 leftid=@net.zw3b.vpn 028 leftprotoport=17/1701 029 right=%any 030 rightprotoport=17/%any 031 forceencaps=yes 032 dpddelay=40 033 dpdtimeout=130 034 dpdaction=clear
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
Script avec 1 ligne
001@net.zw3b.vpn %any : PSK "ma clef a partager"
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 = net 023hostname = net.zw3b.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'utilsateur 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émare xl2tpd
et xl2tpd
et on attend les connexions VPN des clients.
Script avec 46 lignes
001#!/bin/bash 002 003#####---------------------------- INFORMATIONS --------------------------------##### 004# 005# Name : vpn-net-server.sh 006# Desc : Script de lancement du serveur VPN : IPSEC+XL2TP 007# Auteur : Olivier Romain JAILLET alias Kss* 008# Mail : orj AT lab3w DOT fr 009# Date : 2014-05-05 010# 011#####---------------------------- INFORMATIONS --------------------------------##### 012 013 014#####--------------------------------------------------------------------------##### 015 016function ipsec_l2tp() 017{ 018 /etc/init.d/ipsec 019 /etc/init.d/xl2tpd 020} 021 022#####--------------------------------------------------------------------------##### 023 024 025#####--------------------------------------------------------------------------##### 026case "" in 027 028start|restart) 029{content_text} stop 030echo "{content_text} Starting" 031 ipsec_l2tp start 032 echo "VPN ZW3B CONNECTION UP" 033;; 034 035stop) 036echo "{content_text} Stop" 037 ipsec_l2tp stop 038 echo "VPN ZW3B CONNECTION DOWN" 039;; 040 041*) 042echo "usage : {content_text} (start|stop|restart)" 043;; 044 045esac 046#####--------------------------------------------------------------------------#####