Das Layer-2-Tunneling-Protokoll (L2TP) mit IPsec wird verwendet, um eine Ende-zu-Ende-Verschlüsselung sicherzustellen, da L2TP keine Sicherheitsfunktionen unterstützt. Das OpenSwan-Tool wird verwendet, um einen IPsec-Tunnel einzurichten, der auf der Ubuntu-Distribution kompiliert wird. Die Authentifizierungssicherheitsfunktion wird mithilfe des FreeRadius-Servers implementiert. Der Zweck des Authentifizierungsservers besteht darin, den Benutzer von L2TP VPN zu authentifizieren. Die Android- und Windows-Clients unterstützen L2TP/IPsec PSK mit CHAPv2, daher wird ein sicherer Kanal zwischen Smartphone und Server aufgebaut.
Erforderliche Pakete
Die folgenden Pakete werden mit openswan-l2tp-installation.sh installiert Skript.
Werkzeuge
- Freeradius Server/Client (Quellbasisinstallation)
- xl2tpd
- Poptop-Server
- MySQL-Server/Client
- OpenSwan (Quellbasisinstallation)
Entwicklungspakete
- Bison
- Flex
- GMP-Bibliothek
Der Inhalt des Skripts wird im folgenden Schnappschuss gezeigt.
#!/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"

Geben Sie das Passwort „test“ für den Root-Benutzer des MySql-Servers ein.

Konfiguration
Ein weiteres Skript "openswan-l2tp-configuration.sh " wird verwendet, um die Paketweiterleitung auf Ubuntu, die iptables-Regeln für das xl2tpd-Subnetz, die FreeRadius-Server/Client-Einstellung für die Authentifizierungsmechanismen und den IPsec-Tunnel von OpenSwan zu konfigurieren. Einige Schnappschüsse des Konfigurationsskripts sind unten gezeigt.
1. iptables &sysctl-Einstellung

2. FreeRadius-Servereinstellung mit mysql

3. FreeRadius-Client-Einstellung

4. Konfiguration für pptpd- und xl2tpd-Dienste

5. OpenSwan VPN-Konfiguration

Vor dem Ausführen des Konfigurationsskripts ist eine Änderung in cui.sql erforderlich Datei, die unter /etc/freeradius/sql/mysql/ existiert . Ändern Sie die hervorgehobene folgende Zeile in der angegebenen SQL-Datei.
`lastaccounting` timestamp NOT NULL default '0000-00-00 00:00:00',
`lastaccounting` timestamp NOT NULL default '2016-10-01 00:00:00',
Führen Sie das Konfigurationsskript zum automatischen Setzen installierter Pakete aus.

Fügen Sie den Benutzernamen/das Passwort in die FreeRadius-Datenbank für den Android/Windows L2TP-Client ein, indem Sie den folgenden Befehl verwenden.
INSERT INTO radius.radcheck (username, attribute, op, value) VALUES ('test','User-Password',':=','test123');

Führen Sie den FreeRadius-Server mit dem folgenden Befehl aus und starten Sie auch alle erforderlichen Dienste neu.
freeradius -X

Führen Sie den folgenden Befehl auf localhost aus, um die Konfiguration des FreeRadius-Servers zu testen.
radtest test test123 localhost 0 testing123

/etc/init.d/xl2tpd restart

/etc/init.d/ipsec restart

Es scheint, dass alle erforderlichen Dienste ordnungsgemäß konfiguriert sind und ausgeführt werden. Konfigurieren Sie jetzt L2TP/IPsec PSK VPN auf Windows- und Android-Clients.
MS Windows 8 Clientkonfiguration
Klicken Sie im „Netzwerk- und Freigabecenter“ auf „Neue Verbindung oder neues Netzwerk einrichten“.

Wählen Sie die Option „Mit einem Arbeitsplatz verbinden“, wie im folgenden Schnappschuss gezeigt.

Wie nachfolgend dargestellt. Wählen Sie im nächsten Fenster die Option "Mein Internet (VPN) verwenden".

Geben Sie den Titel und die Internetadresse (Computer-IP-Adresse) der VPN-Verbindung ein und klicken Sie auf die Schaltfläche „Erstellen“.

Eine neue VPN-Verbindung wird erstellt und wie unten gezeigt in der Netzwerkliste angezeigt.

Die Standardeigenschaften der neuen VPN-Verbindung funktionieren nicht mit der aktuellen Konfiguration des FreeRadius-Servers. Daher sind nur wenige Änderungen in den Sicherheitseinstellungen des MS Windows VPN-Clients erforderlich.
Ändern Sie zunächst den VPN-Typ (Layer-2-Tunneling-Protokoll über IPsec).

Klicken Sie auf „Erweiterte Einstellungen“ und wählen Sie die Option „Vorinstallierten Schlüssel zur Authentifizierung verwenden“ aus.

Wählen Sie unter der Einstellung „Diese Protokolle zulassen“ die Option „Microsoft CHAP Version 2“.

Geben Sie nach der Konfiguration der L2TP/IPsec-VPN-Verbindung Benutzername/Passwort (test/test123) wie unten gezeigt ein.

L2TP/IPsec VPN wurde erfolgreich mit dem Server verbunden und die IP-Adresse wird wie unten gezeigt zugewiesen.

Der folgende Schnappschuss zeigt den Status der L2TP/IPsec-VPN-Verbindung.
L2TP/IPsec-Konfiguration auf Android
Um den Android-L2TP-Client mit dem Server zu verbinden, erstellen Sie darauf eine L2TP/IPsec-Verbindung. Klicken Sie auf "Einstellungen". " . "Mehr " und "VPN " Optionen. Jetzt "VPN-Netzwerk hinzufügen " und wählen Sie "L2TP PSK aus " Option für die gewünschte VPN-Verbindung.

Einmal wird eine neue L2TP/IPsec-VPN-Verbindung erstellt. Klicken Sie nun auf den VPN-Verbindungsnamen und geben Sie den bereits erstellten Benutzernamen/Passwort auf dem FreeRadius-Server ein.

Der L2TP/IPsec-Client ist wie unten gezeigt mit dem Server verbunden.

FreeRadius-Status
Der folgende Schnappschuss zeigt die erfolgreiche Authentifizierung des Benutzers und der Authentifizierungstyp ist CHAP.

Tunnelstatus
Wie unten gezeigt, gibt der Befehl xfrm state den Status des OpenSwan-Tunnels an.
ip xfrm state

Ein weiterer Befehl, der im OpenSwan-Tool bereitgestellt wird, ist "ipsec look", der kombinierte Informationen über den xfrm-Status, alle iptables-Regeln und das Routing liefert.
ipsec look

1. xfrm-Statusausgabe im ipsec-Befehl
2. xfrm-Richtlinienausgabe im ipsec-Befehl

3. Routing- und iptables-Einstellung im ipsec-Befehl

Der folgende Befehl gibt den automatischen Status des Tunnels wie unten gezeigt aus.
ipsec auto --status

Schlussfolgerung
In diesem Tutorial wird ein Tunnel auf Layer 2 unter Verwendung von L2TP mit OpenSwan erstellt, um die Kommunikation zwischen Client und Server zu sichern. Der CHAPv2-Authentifizierungsmechanismus wird zwischen Client und Server unter Verwendung von FreeRadius-Diensten verwendet. Sowohl Android- als auch Windows-basierte L2TP-Clients werden verwendet, um die Verbindung von Clients mit dem Server zu demonstrieren.