ZW3B :-: API Client * Contents * Docs by LAB3W.ORJ

Translate this page

Name : BETA-TESTERS

Project name : ZW3B-API-BETA-TESTERS

Authorized. - 200 - Client API Name and Origin Wildcard OK

¿Comment? 'Ou' ¿Que faire?, OS GNU/Linux, Sécurité, Howto VPN serveur : IPSec + XL2TP

Comment faire pour configurer un serveur VPN par les protocoles IPSec et XL2TP

Author : O.Romain.Jaillet-ramey

Cette documentation est obsolète -> je vous redirige vers cette solution : PostQuantum StrongSwan v6.x - doc

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
Retirer les numéros de lignes

Configuration d'IPSec

Nous allons configurer IPSec : vim /etc/ipsec.conf.

Script avec 82 lignes

001version 2.0
002config setup
003        charondebug=all
004        uniqueids=no
005    
006conn %default
007        rekeymargin=3m
008        keyingtries=3
009        keyexchange=ikev2
010        mobike=no
011        forceencaps=yes
012        fragmentation=yes
013#       eap_identity=%any
014        # phase 1
015#       ike=aes128-sha1-modp2048
016        ike=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
017        ikelifetime=36000
018        # phase 2
019#       esp=aes256gcm16-sha512-modp8192
020#       esp=aes128-sha1-modp2048
021#       esp=aes256gcm16-sha512-modp2048
022        esp=aes128-sha1-modp2048
023        lifetime=10800
024        keylife=10800
025        authby=psk
026        installpolicy=yes
027#        ike=aes-aes256-sha-modp1024,aes256-sha512-modp4096!
028#        esp=aes-aes256-sha-modp1024,aes256-sha512-modp4096!
029    
030# Pour les connexions de client IPSec sur ce server
031conn L2TP-PSK-NAT
032        rightsubnet=vhost:%priv
033        also=L2TP-PSK-noNAT
034    
035conn L2TP-PSK-noNAT
036        authby=secret
037        pfs=no
038        auto=add
039        keyingtries=3
040        rekey=no
041        keylife=24h
042        ikelifetime=6h
043        type=transport
044        left=%defaultroute
045        leftid=@sovh.lab3w.fr
046        leftprotoport=17/1701
047        right=%any
048        rightprotoport=17/%any
049        forceencaps=yes
050        dpddelay=40
051        dpdtimeout=130
052        dpdaction=clear
053    
054# Pour une connexion du client IPSec nice sur ce server
055conn nice-vpn
056        authby=secret
057        type=transport
058        left=%default
059        leftid=@sovh.lab3w.fr
060        # site 1
061        right=IP_DU_SERVER_CLIENT
062        rightid=@snice.lab3w.fr
063        auto=add
064        dpdaction=restart
065        mark=30
066    
067# Pour la connexion cliente sur le serveur GCLOUD ;)
068conn gcloud-vpn1
069        authby=secret
070        type=tunnel
071        left=158.69.126.137
072        leftid=158.69.126.137
073        leftauth=psk
074        leftsubnet=10.101.0.0/24,10.101.150.0/24
075        # google cloud
076        right=34.95.21.246
077        rightid=34.95.21.246
078        rightauth=psk
079        rightsubnet=10.162.0.0/20
080        auto=add
081        dpdaction=restart
082        mark=30
Retirer les numéros de lignes

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    
Retirer les numéros de lignes

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
Retirer les numéros de lignes

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
Retirer les numéros de lignes

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	*
Retirer les numéros de lignes

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
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-RAMEY alias Kss*
008#       Mail : orj AT lab3w DOT fr
009#       Date : 2014-05-05
010#
011#####---------------------------- INFORMATIONS --------------------------------#####
012    
013#####-----------------------------------------######
014    
015function ipsec_l2tp()
016{
017        /etc/init.d/ipsec
018        /etc/init.d/xl2tpd
019}
020    
021#####-----------------------------------------######
022    
023    
024#####-----------------------------------------######
025case "$1" in
026    
027start|restart)
028$0 stop
029echo "$0 Starting"
030        ipsec_l2tp start
031        echo "VPN ZW3B CONNECTION UP"
032;;
033    
034stop)
035echo "$0 Stop"
036    
037        ipsec_l2tp stop
038        echo "VPN ZW3B CONNECTION DOWN"
039;;
040    
041*)
042echo "usage : $0 (start|stop|restart)"
043;;
044    
045esac
046#####-----------------------------------------######
047    
Retirer les numéros de lignes

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