¿Qué es OPENVPN?

¿Desea acceder a Internet de forma segura desde su teléfono inteligente o computadora portátil cuando está conectado a una red que no es de confianza, como el WiFi de un hotel o cafetería? Una red privada virtual (VPN) le permite atravesar redes no confiables de forma privada y segura como si estuviera en una red privada. El tráfico surge del servidor VPN y continúa su viaje hacia el destino. Cuando se combina con conexiones HTTPS, esta configuración le permite asegurar sus conexiones y transacciones inalámbricas. Puede eludir las restricciones geográficas y la censura, y proteger su ubicación y cualquier tráfico HTTP no cifrado de la red no confiable. OpenVPN es una solución VPN de Secure Socket Layer (SSL) con todas las funciones que ofrece una amplia gama de configuraciones. En este tutorial, configurará un servidor OpenVPN en un servidor Debian 9 y luego configurará el acceso a él desde Windows, macOS, iOS y / o Android. Este tutorial mantendrá los pasos de instalación y configuración tan simples como sea posible para cada una de estas configuraciones. 

INSTALACIÓN

apt-get install openvpn easy-rsa

PROCESO:

make-cadir ~/openvpn-ca

cd ~/openvpn-ca

Ahora editamos: 

nano vars

Y vamos cambiar lo siguiente 

export KEY_ORG=”Fort-Funston”

cambia 

export KEY_ORG=”CreadPag”

Siguiente: 

export KEY_EMAIL=”[email protected]

export KEY_EMAIL=”[email protected]

cambia 

export KEY_OU=”MyOrganizationalUnit”

export KEY_OU=”CreadPag”

Cambia el nombre del server 

export KEY_NAME=”EasyRSA”

export KEY_NAME=”server”

Creamos un archivos 

ln -s openssl-1.0.0.cnf openssl.cnf

Luego 

./clean-all

Ejecutamos vars 

./build-ca

/var/folders/p5/1zkcqttx5t738_ys3m0tnqx00000gp/T/com.microsoft.Word/WebArchiveCopyPasteTempFiles/Screenshot_2018-11-16_20-35-17.png

Ahora creamos la KEY con el nombre que hemos escrito en el vars 

./build-key-server server

/var/folders/p5/1zkcqttx5t738_ys3m0tnqx00000gp/T/com.microsoft.Word/WebArchiveCopyPasteTempFiles/Screenshot_2018-11-16_20-47-33.png

Ahora usaremos el siguiente comando: 

./build-dh

Este proceso demora y ten mucha paciencia. 

/var/folders/p5/1zkcqttx5t738_ys3m0tnqx00000gp/T/com.microsoft.Word/WebArchiveCopyPasteTempFiles/Screenshot_2018-11-16_21-14-51.png

Una vez que lo haga, genere una firma HMAC para fortalecer las capacidades de verificación de integridad TLS del servidor: 

openvpn –genkey –secret keys/ta.key

Ahora vamos a crear otra key del cliente. 

./build-key freddy1

/var/folders/p5/1zkcqttx5t738_ys3m0tnqx00000gp/T/com.microsoft.Word/WebArchiveCopyPasteTempFiles/Screenshot_2018-11-16_21-49-22.png

cd keys/

Ahora pasamos nuestras Key a /etc/openvpn 

cp ca.crt server.crt server.key ta.key dh2048.pem /etc/openvpn/

cd /etc/openvpn

Ahora que sus claves y certificados de cliente y servidor se han generado, puede comenzar a configurar el servicio OpenVPN para usar estas credenciales. Comience copiando un archivo de configuración de OpenVPN de muestra en el directorio de configuración y luego extráigalo para usarlo como base para su configuración: 

gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz  | tee server.cnf

nano server.cnf

Ahora des comentamos con borrando “;” 

push “redirect-gateway def1 bypass-dhcp”

push “dhcp-option DNS 208.67.222.222”

push “dhcp-option DNS 208.67.220.220”

También podes agregar y des comentar en el siguiente archivo: 

tls-auth ta.key 0 # This file is secret

key-direction 0

También con lo siguiente: 

cipher AES-256-CBC

auth SHA256

Finalmente, encuentre la configuración de usuario y grupo y elimine “;” Al comienzo de cada uno descomprime estas líneas: 

user nobody

group nogroup

También podemos cambiar el puerto 1194 o puedes cambiar a tcp. Si cambia el protocolo a TCP, deberá cambiar el valor de la directiva de notificación de salida explícita de 1 a 0, ya que esta directiva solo la utiliza UDP. No hacerlo mientras se usa TCP causará errores cuando inicie el servicio OpenVPN: 

# Optional!

explicit-exit-notify 0

Hay algunos aspectos de la configuración de red del servidor que se deben modificar para que OpenVPN pueda enrutar correctamente el tráfico a través de la VPN. El primero de ellos es el reenvío de IP, un método para determinar dónde se debe enrutar el tráfico de IP. Esto es esencial para la funcionalidad VPN que proporcionará su servidor. Ajuste la configuración de reenvío de IP predeterminada de su servidor modificando el archivo /etc/sysctl.conf: 

nano /etc/sysctl.conf

En el interior, busque la línea comentada que establece net.ipv4.ip_forward. Elimine el carácter “#” del principio de la línea para descomentar esta configuración: 

net.ipv4.ip_forward=1

Ahora configurar firewall 

iptables -I FORWARD -i tun0 -o wlan0 -s 10.8.0.0/24 -m conntrack –ctstate NEW -j ACCEPT

iptables -I FORWARD -m conntrack –ctstate RELATED,ESTABLISHED -j ACCEPT

iptables -t nat -I POSTROUTING -o wlan0 -s 10.8.0.0/24 -j MASQUERADE

apt-get install iptables-persistent

iptables-save > /etc/iptables/rules.v4

ip6tables-save > /etc/iptables/rules.v6

iptables-apply /etc/iptables/rules.v4

Ahora vamos a cambiar el server.cnf a server.conf 

mv /etc/openvpn/server.cnf /etc/openvpn/server.conf

Ahora activamos la VPN 

systemctl start [email protected]

Para ver el estado 

systemctl status [email protected]

Luego vamos a crear una carpeta para crear la VPN para el cliente. 

mkdir -p ~/client-configs/files

Dar permisos 

chmod 700 client-configs/ -R

cd client-configs/

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ./base.conf

Ahora editar base.conf 

nano base.conf

Comentar: 

#ca ca.crt

#cert client.crt

#key client.key

Comenta y agrega: 

#tls-auth ta.key 1

key-direction 1

Agregar 

cipher AES-256-CBC

auth SHA256

Des comentar 

user nobody

group nogroup

Editar con un dominio o con una IP 

remote your_server_ip 1194

Después crear un script, ejemplo “creadpag.sh” Podes descargar el script aquí
Luego podemos ejecutar el comando para crear la VPN para su cliente.
  

chmod +x creadpag.sh

chmod 700 creadpag.sh

./creadpag.sh freddy1

Ahora abrimos nuestro puerto con la IP del servidor y con la IP publica conectara la VPN 

/var/folders/p5/1zkcqttx5t738_ys3m0tnqx00000gp/T/com.microsoft.Word/WebArchiveCopyPasteTempFiles/Screenshot_2018-11-17_00-20-16.png

Y así verificamos que nuestra VPN funciona correctamente. 

/var/folders/p5/1zkcqttx5t738_ys3m0tnqx00000gp/T/com.microsoft.Word/WebArchiveCopyPasteTempFiles/Screenshot_2018-11-17_00-24-49.png