Le protocole de tunnellisation de couche 2 (L2TP) avec IPsec est utilisé pour assurer le chiffrement de bout en bout car L2TP ne prend pas en charge les fonctions de sécurité. L'outil OpenSwan est utilisé pour établir un tunnel IPsec qui sera compilé sur la distribution Ubuntu. La fonction de sécurité d'authentification est implémentée à l'aide du serveur FreeRadius. Le but du serveur d'authentification est d'authentifier l'utilisateur du VPN L2TP. Les clients Android et Windows prennent en charge L2TP/IPsec PSK avec CHAPv2, par conséquent, un canal sécurisé sera établi entre le smartphone et le serveur.
Packages requis
Les packages suivants seront installés à l'aide de openswan-l2tp-installation.sh script.
Outils
- Serveur/Client Freeradius (installation de base source)
- xl2tpd
- Serveur Poptop
- MySQL Serveur/client
- OpenSwan (installation de base source)
Packages de développement
- Bison
- Flexible
- Bibliothèque GMP
Le contenu du script est affiché dans l'instantané suivant.
#!/bin/bash
##NOTE: Adding a proper date in lastaccounting filed to fix the invalid default value issue in /etc/freeradius/sql/mysql/cui.sql.
##-installation of tools-##
apt-get update
apt-get install -y mysql-server mysql-client freeradius-mysql pptpd xl2tpd build-essential libgmp3-dev bison flex
echo "Installing freeradius client --"
wget https://github.com/FreeRADIUS/freeradius-client/archive/master.zip
unzip master.zip
cd freeradius-client-master
./configure --prefix=/
make
make install
echo "Installation of OpenSwan "
wget https://download.openswan.org/openswan/openswan-latest.tar.gz
tar -xvzf openswan-latest.tar.gz
cd openswan-*
make programs
make install
echo " OpenSwan installed"

Entrez le mot de passe "test" pour l'utilisateur root du serveur MySql.

Configuration
Un autre script "openswan-l2tp-configuration.sh " est utilisé pour configurer le transfert de paquets sur Ubuntu, les règles iptables pour le sous-réseau xl2tpd, le paramètre serveur/client FreeRadius pour les mécanismes d'authentification et le tunnel IPsec d'OpenSwan. Quelques instantanés du script de configuration sont présentés ci-dessous.
1. paramètre iptables et sysctl

2. Configuration du serveur FreeRadius avec mysql

3. Paramètre client FreeRadius

4. Configuration des services pptpd et xl2tpd

5. Paramétrage du VPN OpenSwan

Avant d'exécuter le script de configuration, une modification est requise dans le fichier cui.sql fichier qui existe sous /etc/freeradius/sql/mysql/ . Modifiez la ligne suivante en surbrillance dans le fichier sql spécifié.
`lastaccounting` timestamp NOT NULL default '0000-00-00 00:00:00',
`lastaccounting` timestamp NOT NULL default '2016-10-01 00:00:00',
Exécutez le script de configuration pour définir automatiquement les packages installés.

Insérez le nom d'utilisateur/mot de passe dans la base de données FreeRadius pour le client Android/Windows L2TP à l'aide de la commande suivante.
INSERT INTO radius.radcheck (username, attribute, op, value) VALUES ('test','User-Password',':=','test123');

Exécutez le serveur FreeRadius à l'aide de la commande suivante et redémarrez également tous les services requis.
freeradius -X

Exécutez la commande suivante sur localhost pour tester la configuration du serveur FreeRadius.
radtest test test123 localhost 0 testing123

/etc/init.d/xl2tpd restart

/etc/init.d/ipsec restart

Il semble que tous les services requis soient correctement configurés et en cours d'exécution. Maintenant, configurez le VPN L2TP/IPsec PSK sur les clients Windows et Android.
Configuration du client MS Windows 8
Cliquez sur "configurer une nouvelle connexion ou un nouveau réseau" sur "Centre réseau et partage" .

sélectionnez l'option "Connexion à un lieu de travail" comme indiqué dans l'instantané suivant.

Comme indiqué ci-dessous. sélectionnez l'option "utiliser mon internet (VPN)" dans la fenêtre suivante.

Entrez le titre et l'adresse Internet (adresse IP de la machine) sur la connexion VPN et cliquez sur le bouton "créer".

Une nouvelle connexion VPN sera créée et affichée dans la liste des réseaux comme indiqué ci-dessous.

Les propriétés par défaut de la nouvelle connexion VPN ne fonctionneront pas avec la configuration actuelle du serveur FreeRadius. Par conséquent, peu de changements sont nécessaires dans les paramètres de sécurité du client VPN MS Windows.
Tout d'abord, changez le type de VPN (protocole de tunnellisation de couche 2 sur IPsec).

Cliquez sur "Paramètres avancés" et sélectionnez l'option "utiliser une clé pré-partagée pour l'authentification".

Sélectionnez l'option "Microsoft CHAP version 2" sous le paramètre "Autoriser ces protocoles".

Après la configuration de la connexion VPN L2TP/IPsec, entrez le nom d'utilisateur/mot de passe (test/test123) comme indiqué ci-dessous.

Le VPN L2TP/IPsec est correctement connecté au serveur et l'adresse IP est attribuée comme indiqué ci-dessous.

L'instantané suivant montre l'état de la connexion VPN L2TP/IPsec.
Configuration L2TP/IPsec sur Android
Pour connecter le client Android L2TP au serveur, créez une connexion L2TP/IPsec sur celui-ci. Cliquez sur "paramètres " . "Plus " et "VPN ". Maintenant "Ajouter un réseau VPN " et sélectionnez "L2TP PSK " pour la connexion VPN souhaitée.

Une fois, une nouvelle connexion VPN L2TP/IPsec est créée. Maintenant, cliquez sur le nom de la connexion VPN et entrez le nom d'utilisateur/mot de passe déjà créé sur le serveur FreeRadius.

Le client L2TP/IPsec est connecté au serveur comme indiqué ci-dessous.

Statut FreeRadius
L'instantané suivant montre l'authentification réussie de l'utilisateur et le type d'authentification est CHAP.

État des tunnels
Comme indiqué ci-dessous, la commande xfrm state donne l'état du tunnel OpenSwan.
ip xfrm state

Une autre commande fournie dans l'outil OpenSwan est "ipsec look" qui donne des informations combinées sur l'état de xfrm, toute règle iptables et le routage.
ipsec look

1. sortie d'état xfrm dans la commande ipsec
2. Sortie de stratégie xfrm dans la commande ipsec

3. Paramétrage du routage et d'iptables dans la commande ipsec

La commande suivante donne l'état automatique du tunnel comme indiqué ci-dessous.
ipsec auto --status

Conclusion
Dans ce tutoriel, un tunnel est créé au niveau 2 en utilisant L2TP avec OpenSwan pour sécuriser la communication entre le client et le serveur. Le mécanisme d'authentification CHAPv2 est utilisé entre le client et le serveur à l'aide des services FreeRadius. Les clients L2TP basés sur Android et Windows sont utilisés pour démontrer la connexion des clients avec le serveur.