La idea de ésta entrada es procedente de nuestro grupo de Telegram, cuando unos compañeros charlaban sobre la configuración de un cliente VPN, y dije, ¿por qué no explicamos un poco cómo montar un servidor VPN con L2TP sobre IPSec? Y aquí estamos, haciendo un pequeño tutorial…

¿Qué es SoftEther?

SoftEther VPN es uno de los software VPN más potentes y fáciles de utilizar, creado por la buena gente de la Universidad de Tsukuba, Japón. Se puede ejecutar sobre cualquier plataforma, Linux, Mac, FreeBSD, Solaris o Windows. También tenemos que recalcar que se trata de un freeware opensource. Podemos utilizarlo a nivel personal o profesional sin costes.

¿Por qué es útil?

¿Te has conectado alguna vez a una Wifi pública? ¿Has querido acceder a archivos que tienes en tu pc personal desde otra localización? El uso de un software VPN es útil en ambos casos y más, cuando empleamos cifrado en la conexión. En el primer ejemplo nadie podría hacernos un MITM (ataque man in the middle) y en el segundo, podremos acceder a toda aquella información que tengamos compartida por Samba/CIF ó NFS. ¿Qué guay no? pero, ¿cómo podemos montarlo?

Crear el Servidor Virtual

En la web oficial, mencionan que el software trabaja bien sobre distribuciones Linux con un kernel 2.4 o superior, pero que es recomendable utilizarlo en CentOS, Fedora o RHEL. Aunque también funciona bien sobre Ubuntu x86 o x64 (incluso en ARM!).

Actualizar el sistema

Antes de empezar, deberemos tener toda la paquetería a punto, para ello utilizaremos los siguientes comandos:

  • Basadas en Debian: apt-get upgrade && apt-get dist-upgrade -y
  • Basadas en RHEL: yum update

Descargar SoftEther

Podemos descargar el paquete desde su página web.

Desafortunadamente, no hay una  manera de obtener las últimas versiones a través de gestores de paquetes por el momento. No obstante, podremos utilizar un navegador para descargarlo. Hay varias maneras de llevar a cabo éste proceso. Primero buscaremos en la web la configuración de nuestro equipo (OS, x86/x64, etc) para encontrar el link y poder utilizar wget para descargar dicho paquete. Alternativamente, si nos estamos moviendo en un equipo con CLI, siempre podemos utilizar Lynx, un navegador basado en consola.

No obstante, a través del siguiente enlace podremos acceder a todas las versiones que han ido publicando.

A día de la publicación de éste tutorial, se aconseja utilizar la versión “v4.29-9680-rtm-2019.02.28-tree”, por ser la última versión más estable.

Instalar y configurar SoftEther

Una vez descargado, deberemos descomprimir y compliar. La descompresión podremos hacerla haciendo uso del comando “tar xzvf softether[…].tar.gz”. Tras la extracción, encontraremos un directorio llamado vpnserver. Para poder compilarlo, deberemos tener los paquetes “make, gccbinutils (gcc), libc (glibc), zlib, openssl, readline y ncurses”. En caso de no disponerlos los instalaremos de la siguiente manera:

  • Basadas en Debian: apt-get install build-essential gcc -y
  • Basadas en RHEL: yum groupinstall “Development Tools” -y

Tras ésto, ejecutaremos un cd vpnserver && make.

Posteriormente, nos saldrán unos mensajes en pantalla, donde tendremos que pulsar 1 o 2, en las 3 ocasiones que nos salga, deberemos puslsar 1, ya que correspondería al típico “si hemos leído y aceptamos los acuerdos de la licencia”. Ahora, si no ha fallado la compilación tendremos dos ficheros ejecutables, vpnserver y vpncmd. Si el proceso ha fallado, deberemos comprobar que toda la paquetería necesaria esté instalada o que tengamos el paquete adecuado a nuestra arquitectura.

Tras ésto, deberemos mover la carpeta vpnserver a /usr/local y cambiar los permisos de los ficheros, dándole un 600 a todo y 700 a vpnserver y vpncmd:

  • cd .. && mv vpnserver /usr/local/
  • cd /usr/local/vpnserver && chmod 600 * && chmod 700 vpn*

Para finalizar, si queremos tener SoftEther como servicio del sistema, crearemos el fichero vpnserver dentro de /etc/init.d e incluiremos dentro de él lo siguiente:

#!/bin/sh
# chkconfig: 2345 99 01
# description: SoftEther VPN Server
DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/subsys/vpnserver
test -x $DAEMON || exit 0
case "$1" in
start)
$DAEMON start
touch $LOCK
;;
stop)
$DAEMON stop
rm $LOCK
;;
restart)
$DAEMON stop
sleep 3
$DAEMON start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0

Deberemos crear el directorio /var/lock/subsys si no está creado (mkdir /var/lock/subsys) y darle permisos de ejecución al fichero que hemos creado anteriormente (chmod 755 /etc/init.d/vpnserver) y para finalizar, levantaremos el servicio con /etc/init.d/vpnserver start.

Comprobación

Para comprobar de que todo está correctamente funcionando, nos deberemos situar en la ruta de instalación final del software (/usr/local/vpnserver) y ejecutaremos ./vpncmd y seleccionaremos “Use of VPN Tools” (3) y escribiremos “check”. Si todo está correcto, nos debería aparecer algo similar a lo siguiente:

Configuración

En este paso realizaremos una configuración rápida del servidor, como dijimos al principio, utilizaremos L2TP sobre IPSec, por ende, las opciones de OpenVPN no las veremos, al igual que SSTP VPN. También aclarar que aunque tengamos la posibilidad de tener autenticación remota (por radius, con certificado individual, certificado autofirmado, autenticación anónima o por dominios NT) utilizaremos la autenticación propia del servicio. Para empezar todo ésto, deberemos volver a ejecutar ./vpncmd y seleccionar la primera opción y pulsaremos enter en un par de ocasiones, pues la primera vez será para establecer a qué servidor nos vamos a conectar (por defecto es localhost) y la segunda, para conectarnos como administrador, ya que aún no se ha establecido la contraseña.

A partir de aquí os pondré todos los comandos en orden con una pequeña aclaración al lado para intentar hacerlo un poco más ameno:

  • serverpasswordset: establecer la contraseña de administrador
  • hubcreate nombreDelHub: creación de un hub virtual al que nos conectaremos
  • hub nombreDelHub: acceder al hub para configurarlo
  • securenatenable: habilitaremos las funciones de virtual nat y servidor dhcp
  • usercreate nombreDelUsuario: crearemos el usuario nombreDelUsuario
  • userpasswordset nombreDelUsuario: crearemos la contraseña del usuario nombreDelUsuario
  • ipsecenable: con ésta orden, el servidor nos preguntará las opciones L2TP que queremos habilitar:
    • Enable L2TP over IPSec Server Function: Yes
      • con esto, habilitaremos L2TP sobre IPSec con encriptación de clave precompartida, con esto activado, podremos conectarnos desde cualquier dispositivo (pc/smartphone)
    • Enable Raw L2TP Server Function: No
      • habilita L2TP para clientes sin encriptación IPSec
    • Pre Shared Key for IPSec:
      • la clave precompartida que utilizaremos para conectarnos, junto con el usuario y la contraseña del mismo
    • Default Virtual Hub: nombreDelHub
      • en caso de tener varios hubs, definiremos al que nos queremos conectar, debemos tener en cuenta, que por defecto, siguiendo éste tutorial, tendremos 2 hubs, uno creado por defecto y el que hemos creado nosotros.

Y con ésto y un bizcocho… nos leemos en futuras publicaciones.

Por i7ach1

Comparte

(Artículo visitado 2.101 veces, 1 visitas hoy)