Cómo crear tú propio servidor VPN en Ubuntu, Debian y CentOS

4
14150

Con los cambios constante de ciudad y país que he tenido últimamente, me ha tocado utilizar mucho redes wifi libres (incluso ahora estoy conectado desde una wifi que conseguí la clave gracias a Aircrack-ng, Airmon-ng, airdump-ng, aireplay-ng los cuáles ya venían instalado en Kali Linux), el problema es que estás conexiones pueden llegar a comprometer mi información y no sabemos quién puedes estar conectado y hacer que se yo en la red. Una solución para este problema es la planteada hace tiempo por usemoslinux en Cómo navegar seguro en las redes wifi abiertas, pero también existe la posibilidad de solucionarlo utilizando una VPN, las cuáles existen muchas libres y pagas de fácil uso e instalación, cada una con sus pro y contras, pero también podemos crear nuestro propio servidor VPN en Ubuntu, Debian y Centos.

Buscando la solución a este problema y priorizando utilizar una VPN que me diera otras ventajas, logre dar con un script que nos permite construir un servidor VPN de manera automática con poca interacción con el usuario.


¿Qué es el script de configuración de servidor?

Es un script shell que permite configurar de manera automática un servidor VPN sobre IPsec en  Ubuntu, Debian y CentOS de manera rápida y fácil, además soporta los protocolos IPsec/L2TP y Cisco IPsec. El usuario sólo debe proporcionar sus propias credenciales de VPN y dejar que el script se encargue del resto.

El servidor VPN sobre IPsec encripta el tráfico de la red, para que los datos no puedan ser espiado mientras haya comunicación entre el usuario y el servidor VPN. Esto es especialmente útil cuando se utilizan redes no seguras, por ejemplo, en cafeterías, aeropuertos o habitaciones de hotel.

El script utiliza Libreswan que es una implementación de IPsec para Linux xl2tpd que es un proveedor L2TP.

El script puede ser utilizado en cualquier servidor dedicado o Virtual Private Server (VPS). Además, se puede utilizar directamente como “datos de usuario” de Amazon EC2 para el lanzamiento de una nueva instancia, esta característica lo hace ideal porque me permite tener un VPN andando en cualquier momento y me ayuda a aprovecharme de la oferta de Amazon de un año gratis de sus VPS.

Características del script de configuración de servidor VPN sobre IPsec

  • Configuración de un servidor VPN sobre IPsec totalmente automatizado, sin intervención del usuario
  • Soporta el protocolo más rapido IPsec/XAuth ("Cisco IPsec")
  • Está disponible Docker image del servidor VPN
  • Encapsula todo el trafico de la VPN en UDP – no es necesario el protocolo ESP
  • Puede ser utilizado directamente como “data de usuario” para nuevas instancias de Amazon EC2
  • Determina automáticamente la IP Pública y la IP Privada del servidor
  • Incluye reglas de IPTables básicas y permite ajustar el sysctl.conf
  • Probado en Ubuntu 16.04/14.04/12.04, Debian 8 y CentOS 6 & 7

Requisitos del script de configuración de servidor VPN sobre IPsec

Se requiere un Servidor Dedicado o  un Virtual Private Server (VPS), aunque se recomienda usar una instancia de Amazon EC2, usando uno de estos AMI:

Instalación del script de configuración de servidor VPN sobre IPsec

Instalación del script de configuración de servidor VPN sobre IPsec en Ubuntu y Debian

Lo primero que debes hacer es actualizar su sistema, para ello ejecute los siguientes comandos apt-get update && apt-get dist-upgrade y reinicie.

 Este paso no es obligatorio, pero es recomendado que se realice.

Para instalar la VPN, por favor seleccione una de las siguientes opciones:

Opción 1: Generar las credenciales VPN al azar, las cuáles podrán ser visualizadas cuando se concluya la instalación

wget https://git.io/vpnsetup -O vpnsetup.sh && sudo sh vpnsetup.sh

Opción 2: Editar el script y proporcionar sus propias credenciales VPN

wget https://git.io/vpnsetup -O vpnsetup.sh
nano -w vpnsetup.sh
[Reemplazar con sus valores: YOUR_IPSEC_PSK, YOUR_USERNAME and YOUR_PASSWORD]
sudo sh vpnsetup.sh

Option 3: Definir las credenciales VPN como variables de entorno

# Todos los valores deben ser colocados en el interior entre 'comillas simples'
# No use estos caracteres dentro de los valores:  \ " '
wget https://git.io/vpnsetup -O vpnsetup.sh && sudo \
VPN_IPSEC_PSK='your_ipsec_pre_shared_key' \
VPN_USER='your_vpn_username' \
VPN_PASSWORD='your_vpn_password' sh vpnsetup.sh

Instalación del script de configuración de servidor VPN sobre IPsec en Centos

Lo primero que debes hacer es actualizar su sistema, para ello ejecute los siguientes comandos yum update  y reinicie.

 Este paso no es obligatorio, pero es recomendado que se realice.

Siga los mismos pasos que en ubuntu y Debian, pero sustituyendo https://git.io/vpnsetup por https://git.io/vpnsetup-centos.

Conclusiones sobre el script de configuración de servidor VPN sobre IPsec

Bueno una vez tengamos instalado nuestra VPN debemos conectarnos a ella mediante algún cliente VPN yo recomiendo que usemos OpenVPN, el cuál podemos instalar con el gestor de paquetes de nuestra distribución. Que en el caso de Debian y derivados podemos hacerlo de la siguiente manera:

sudo apt-get install openvpn

Está es una solución bastante elegante para conectarnos al internet de una manera segura y tener nuestro propio VPN el cuál tambien nos puede servir para

  • Acceder a una red de trabajo o del hogar cuando se está de viaje.
  • Esconde los datos de navegación.
  • Entrar en sitios con bloqueo geográfico.
  • Y muchos otros usos

Y esto es todo chicos espero que lo disfruten y lo pongan en marcha

 

4 COMENTARIOS

  1. […] -Contra eso, conocimos a Jean Yang-Jeeves, De becaria en Google y Facebook a crear un lenguaje que protege la privacidad, y la próxima semana, a partir del día 29, dará comienzo la importante cita Navaja Negra, en Albacete, España, un congreso de seguridad informática para 600 participantes. Y también Cómo crear tú propio servidor VPN en Ubuntu, Debian y CentOS. […]

  2. Hola amigo, he logrado instalar el VPN en una instancia de Amazon con ubuntu, pero ahora lo que no puedo hacer conectarme a la VPN instalada, creo que falta añadir los puertos en la instancia de momento he conseguido que son estos: Para PPTP hay que abrir el puerto TCP 1723 y abrir tambien el protocolo con el Id. 47 (GRE).
    Para L2TP hay que abrir el puerto TCP 1701; si se va a utilizar ademas IPSec, se debe abir el puerto UDP 500 y los protocolos de Id. 50 (IPSec ESP) y 51 (IPSec AH), una vez que los he añadido verifico con netstat -ntpl en la instancia pero no se ven que esten activos, ¿me podrías echar una mano por favor?

    • Para los servidores con un cortafuegos externo (por ejemplo EC2), debes abrir los puertos UDP 500 y 4500, y el puerto TCP 22 (para SSH).

      Para abrir puertos adicionales en el servidor, editar /etc/iptables.rulesy / o /etc/iptables/rules.v4(Ubuntu / Debian), o /etc/sysconfig/iptables(CentOS). Y reinicie el Servidor, aunque EC2, lo conveniente es con el cortafuegos externo.

  3. Gracias por el Script tan bueno.
    He conseguido instalarlo y funciona con Iphone y Android, pero no se como utilizar openVPN en linux como cliente.

    El servidor lo he instalado en Ubuntu 16.04 terminal.

    Ayuda porfi

  4. Buenas, mi nombre es Oscar, he instalado este servidor VPN en mi servidor Linux en un VPS, y mi estudio de seguridad tras 24 horas, es que realiza ataques, Smurf, realiza escaneos de la conexion e intenta interceptar datos, unicametne paraece poder intervenir todas las claves que usan protocolos no seguros, osea cualquier conexion que no use encriptación, inmediatamente de haberme percatado, he cerrado mi conexion VPN y reseteado el VPS, ya que cree un punto de restauracion antes de iniciar este proceso.
    Expongo todo esto para que el autor y/o lector de este articulo que se leea estos comentarios sea precabido al instalar este servidor VPN, lo digo todo de buena fé, y agradezco al autor que se haya tomado su tiempo en redactar este articulo.

    Un Saludo.

Dejar una respuesta