El protocolo de túnel de capa 2 (L2TP) con IPsec se utiliza para garantizar el cifrado de extremo a extremo porque L2TP no admite funciones de seguridad. La herramienta OpenSwan se utiliza para establecer un túnel IPsec que se compilará en la distribución de Ubuntu. La función de seguridad de autenticación se implementa mediante el servidor FreeRadius. El propósito del servidor de autenticación es autenticar al usuario de L2TP VPN. Los clientes de Android y Windows admiten L2TP/IPsec PSK con CHAPv2, por lo tanto, se establecerá un canal seguro entre el teléfono inteligente y el servidor.
Paquetes requeridos
Los siguientes paquetes se instalarán usando openswan-l2tp-installation.sh guión.
Herramientas
- Servidor/Cliente Freeradius (instalación base de origen)
- xl2tpd
- Servidor emergente
- Servidor MySQL/cliente
- OpenSwan (instalación base de origen)
Paquetes de desarrollo
- Bisonte
- Flexible
- Biblioteca GMP
El contenido del script se muestra en la siguiente instantánea.
#!/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"

Ingrese la contraseña "prueba" para el usuario raíz del servidor MySql.

Configuración
Otro script "openswan-l2tp-configuration.sh " se usa para configurar el reenvío de paquetes en Ubuntu , las reglas de iptables para la subred xl2tpd, la configuración del servidor/cliente de FreeRadius para los mecanismos de autenticación y el túnel IPsec de OpenSwan. A continuación se muestran algunas instantáneas del script de configuración.





Antes de ejecutar el script de configuración, se requiere un cambio en cui.sql archivo que existe en /etc/freeradius/sql/mysql/ . Cambie la siguiente línea resaltada en el archivo sql especificado.
`lastaccounting` timestamp NOT NULL default '0000-00-00 00:00:00',
`lastaccounting` timestamp NOT NULL default '2016-10-01 00:00:00',
Ejecute el script de configuración para configurar automáticamente los paquetes instalados.

Inserte el nombre de usuario/contraseña en la base de datos de FreeRadius para el cliente L2TP de Android/Windows usando el siguiente comando.
INSERT INTO radius.radcheck (username, attribute, op, value) VALUES ('test','User-Password',':=','test123');

Ejecute el servidor FreeRadius usando el siguiente comando y también reinicie todos los servicios necesarios.
freeradius -X

Ejecute el siguiente comando en localhost para probar la configuración del servidor FreeRadius.
radtest prueba test123 host local 0 testing123

/etc/init.d/xl2tpd restart

/etc/init.d/ipsec restart

Parece que todos los servicios requeridos están correctamente configurados y funcionando. Ahora, configure L2TP/IPsec PSK VPN en clientes Windows y Android.
Configuración del cliente MS Windows 8
Haga clic en "configurar una nueva conexión o red" en "Centro de redes y recursos compartidos".

seleccione la opción "Conectarse a un lugar de trabajo" como se muestra en la siguiente instantánea.

Como se muestra abajo. seleccione la opción "usar mi Internet (VPN)" en la siguiente ventana.

Ingrese el título y la dirección de Internet (dirección IP de la máquina) en la conexión VPN y haga clic en el botón "crear".

Se creará una nueva conexión VPN y se mostrará en la lista de redes como se muestra a continuación.

Las propiedades predeterminadas de la nueva conexión VPN no funcionarán con la configuración actual del servidor FreeRadius. Por lo tanto, se requieren pocos cambios en la configuración de seguridad del cliente VPN de MS Windows.
En primer lugar, cambie el tipo de VPN (protocolo de tunelización de capa 2 sobre IPsec).

Haga clic en "Configuración avanzada" y seleccione la opción "usar una clave previamente compartida para la autenticación".

Seleccione la opción "Microsoft CHAP versión 2" en la configuración "Permitir estos protocolos".

Después de configurar la conexión VPN L2TP/IPsec, ingrese el nombre de usuario/contraseña (test/test123) como se muestra a continuación.

La VPN L2TP/IPsec se conectó con éxito al servidor y se le asignó la dirección IP como se muestra a continuación.

La siguiente instantánea muestra el estado de la conexión VPN L2TP/IPsec.
Configuración L2TP/IPsec en Android
Para conectar el cliente Android L2TP con el servidor, cree una conexión L2TP/IPsec en él. Haga clic en "configuración "

Una vez, se crea una nueva conexión VPN L2TP/IPsec. Ahora, haga clic en el nombre de la conexión VPN e ingrese el nombre de usuario/contraseña ya creado en el servidor FreeRadius.

El cliente L2TP/IPsec está conectado al servidor como se muestra a continuación.

Estado de FreeRadius
La siguiente instantánea muestra la autenticación exitosa del usuario y el tipo de autenticación es CHAP.

Estado del túnel
Como se muestra a continuación, el comando xfrm state proporciona el estado del túnel OpenSwan.
ip xfrm state

Otro comando que se proporciona en la herramienta OpenSwan es "ipsec look", que brinda información combinada del estado de xfrm, cualquier regla de iptables y enrutamiento.
ipsec look



El siguiente comando proporciona el estado automático del túnel como se muestra a continuación.
ipsec auto --status

Conclusión
En este tutorial, se crea un túnel en la capa 2 usando L2TP con OpenSwan para asegurar la comunicación entre el cliente y el servidor. El mecanismo de autenticación CHAPv2 se utiliza entre el cliente y el servidor mediante los servicios de FreeRadius. Tanto los clientes L2TP basados en Android como Windows se utilizan para demostrar la conexión de los clientes con el servidor.