Cómo crear su propio servidor VPN IPsec en Linux


Hay tantos beneficios de usar una VPN (red privada virtual), algunos de los cuales incluyen mantenerlo seguro en Internet al cifrar su tráfico y ayudarlo a acceder a contenido/sitios/aplicaciones web bloqueados desde cualquier lugar. Sin mencionar que VPN también te ayuda a navegar por Internet de forma anónima.

En este artículo, aprenderá a configurar rápida y automáticamente su propio servidor VPN IPsec/L2TP en distribuciones CentOS/RHEL, Ubuntu y Debian Linux.

  1. A fresh CentOS/RHEL or Ubuntu/Debian VPS (Virtual Private Server) from any provider such as Linode.

Configuración del servidor VPN IPsec / L2TP en Linux

Para configurar el servidor VPN, utilizaremos una maravillosa colección de scripts de shell creados por Lin Song, que instala Libreswan como servidor IPsec y xl2tpd como proveedor L2TP. La oferta también incluye scripts para agregar o eliminar usuarios de VPN, actualizar la instalación de VPN y mucho más.

Primero, inicie sesión en su VPS a través de SSH, luego ejecute los comandos apropiados para su distribución para configurar el servidor VPN. De forma predeterminada, el script generará credenciales VPN aleatorias (clave previamente compartida, nombre de usuario VPN y contraseña) y las mostrará al final de la instalación.

Sin embargo, si desea utilizar sus propias credenciales, primero debe generar una contraseña segura y una PSK como se muestra.

# openssl rand -base64 10
# openssl rand -base64 16

A continuación, configure estos valores generados como se describe en el siguiente comando. Todos los valores DEBEN colocarse entre "comillas simples" como se muestra.

  • VPN_IPSEC_PSK – Your IPsec pre-shared key.
  • VPN_USER – Your VPN username.
  • VPN_PASSWORD – Your VPN password.
---------------- On CentOS/RHEL ---------------- 
# wget https://git.io/vpnsetup-centos -O vpnsetup.sh && VPN_IPSEC_PSK='KvLjedUkNzo5gBH72SqkOA==' VPN_USER='tecmint' VPN_PASSWORD='8DbDiPpGbcr4wQ==' sh vpnsetup.sh

---------------- On Debian and Ubuntu ----------------
# wget https://git.io/vpnsetup -O vpnsetup.sh && VPN_IPSEC_PSK='KvLjedUkNzo5gBH72SqkOA==' VPN_USER='tecmint' VPN_PASSWORD='8DbDiPpGbcr4wQ==' sudo sh vpnsetup.sh

Los principales paquetes que se instalarán son bind-utils, net-tools, bison, flex, gcc, libcap-ng-devel, libcurl-devel, libselinux-devel, nspr-devel, nss-devel, pam-devel, xl2tpd, iptables-services, systemd-devel, fipscheck-devel, libevent-devel y fail2ban (para proteger SSH) y sus respectivas dependencias. Luego descarga, compila e instala Libreswan desde la fuente, habilita e inicia los servicios necesarios.

Una vez que se complete la instalación, los detalles de la VPN se mostrarán como se muestra en la siguiente captura de pantalla.

A continuación, debe configurar un cliente VPN, para computadoras de escritorio o portátiles con una interfaz gráfica de usuario, consulte esta guía: Cómo configurar un cliente VPN L2TP/Ipsec en Linux.

Para agregar la conexión VPN en un dispositivo móvil como un teléfono Android, vaya a Configuración -> Red e Internet (o Conexiones inalámbricas y redes -> Más) -> Avanzado -> VPN. Seleccione la opción para agregar una nueva VPN. El tipo de VPN debe establecerse en IPSec Xauth PSK, luego use la puerta de enlace VPN y las credenciales anteriores.

Cómo agregar o eliminar un usuario de VPN en Linux

Para crear un nuevo usuario de VPN o actualizar un usuario de VPN existente con una nueva contraseña, descargue y use el script add_vpn_user.sh usando el siguiente comando wget.

$ wget -O add_vpn_user.sh https://raw.githubusercontent.com/hwdsl2/setup-ipsec-vpn/master/extras/add_vpn_user.sh
$ sudo sh add_vpn_user.sh 'username_to_add' 'user_password'

Para eliminar un usuario de VPN, descargue y use el script del_vpn_user.sh.

$ wget -O del_vpn_user.sh https://raw.githubusercontent.com/hwdsl2/setup-ipsec-vpn/master/extras/del_vpn_user.sh
$ sudo sh del_vpn_user.sh 'username_to_delete'

Cómo actualizar la instalación de Libreswan en Linux

Puede actualizar la instalación de Libreswan utilizando el script vpnupgrade.sh o vpnupgrade_centos.sh. Asegúrese de editar la variable SWAN_VER a la versión que desea instalar, dentro del script.

---------------- On CentOS/RHEL ---------------- 
# wget https://git.io/vpnupgrade-centos -O vpnupgrade.sh && sh vpnupgrade.sh

---------------- On Debian and Ubuntu ----------------
# wget https://git.io/vpnupgrade -O vpnupgrade.sh && sudo sh  vpnupgrade.sh

Cómo desinstalar el servidor VPN en Linux

Para desinstalar la instalación de VPN, haga lo siguiente.

# yum remove xl2tpd

Luego abra el archivo de configuración/etc/sysconfig/iptables y elimine las reglas innecesarias y edite el archivo /etc/sysctl.conf y /etc/rc.local, y elimine las líneas después del comentario # Agregado por el script hwdsl2 VPN, en ambos archivos.

$ sudo apt-get purge xl2tpd

A continuación, edite el archivo de configuración /etc/iptables.rules y elimine las reglas innecesarias. Además, edite /etc/iptables/rules.v4 si existe.

Luego edite los archivos /etc/sysctl.conf y /etc/rc.local, elimine las líneas después del comentario # Agregado por el script hwdsl2 VPN, en ambos archivos. No elimine la salida 0 si existe.

Opcionalmente, puede eliminar ciertos archivos y directorios que se crearon durante la configuración de la VPN.

# rm -f /etc/ipsec.conf* /etc/ipsec.secrets* /etc/ppp/chap-secrets* /etc/ppp/options.xl2tpd* /etc/pam.d/pluto /etc/sysconfig/pluto /etc/default/pluto 
# rm -rf /etc/ipsec.d /etc/xl2tpd

Para configurar una VPN basada en IPSec de sitio a sitio con Strongswan, consulte nuestras guías:

  1. How to Setup IPSec-based VPN with Strongswan on Debian and Ubuntu
  2. How to Setup IPSec-based VPN with Strongswan on CentOS/RHEL 8

Referencia: https://github.com/hwdsl2/setup-ipsec-vpn

En este punto, su propio servidor VPN está en funcionamiento. Puede compartir cualquier consulta o darnos su opinión utilizando el formulario de comentarios a continuación.