LINUX

Cómo configurar OpenVPN en Ubuntu 16.04

Continuando con la serie de artículos sobre VPN, ahora instalamos OpenVPN en Ubuntu 16.04 Server. OpenVPN es un software VPN muy conocido de la empresa del mismo nombre. Es algo más difícil de configurar que otro software VPN, por lo que nos concentraremos en la configuración del lado del servidor y en la creación de archivos ovpn en este artículo. Esta guía está diseñada para ejecutarse como usuario no root. Si ha iniciado sesión como root, primero comenzamos agregando el usuario no root.

adduser newuser

Luego le damos derechos de sudo e inicia sesión como usuario

usermod -aG sudo newuser

su newuser

Puede omitir esos pasos si ya tiene usuarios no root, y lo más probable es que los tenga.

Ahora conectado como newuser o cualquier otro usuario que no sea root, instalaremos openvpn

sudo apt-get install openvpn easy-rsa

Certificados de servidor y cliente

En primer lugar, necesitamos crear dir para la autoridad de certificación y editar el archivo vars es

make-cadir ~/openvpn-ca
cd ~/openvpn-ca
nano vars

Encuentra las líneas que tienen export KEY_ en ellas y hazlas así

export KEY_COUNTRY="US"
export KEY_PROVINCE="New York State"
export KEY_CITY="New York City"
export KEY_ORG="Linoxide"
export KEY_EMAIL="newuser@example.com"
export KEY_OU="LinuxGeeks"

También hay una línea llamada KEY_NAME en el mismo archivo, por lo que solo pondremos allí servidor como nombre

export KEY_NAME="server"

Después de guardar el archivo vars, lo siguiente que escribimos es:

source vars

que debería darle la nota sobre el comando ./clean-all. Por lo tanto, escribámoslo para asegurarnos de que estamos ejecutando el entorno limpio.

./clean-all

Ahora pasamos a la parte de creación de certificados:

./build-ca

Le hará algunas preguntas, pero dado que editamos vars, los nuevos valores predeterminados deberían estar bien para que pueda presionar enter en todos los aspectos.

./build-key-server server

Ingrese nuevamente, pero no en todos los aspectos esta vez. Cuando te pida que pongas la contraseña, no la pongas y al final presiona para crear el certificado. El siguiente es diffie hellman:

./build-dh

Tomará algún tiempo, así que tenga paciencia. A continuación, necesitamos la tecla ta.key para mejorar la seguridad del servidor.

openvpn --genkey --secret keys/ta.key

Y luego copiamos todos los archivos relevantes al directorio / etc / openvpn, ya que openvpn solo lee desde allí.

cd ~/openvpn-ca/keys
sudo cp ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/openvpn

Hemos terminado con el certificado del servidor, por lo que ahora creamos un certificado para client100.

cd ~/openvpn-ca

source vars
./build-key client100

Los valores predeterminados de origen están bien nuevamente, así que simplemente presione enter yy al final.

Configuración del servidor

Para el punto de partida copiamos la configuración de muestra con el siguiente comando:

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

A continuación, necesitamos editar server.conf para que nuestro servidor funcione. Puede usar cualquier editor, pero usaremos el comando sed ahora

sudo sed -i 's/;push "redirect-gateway def1 bypass-dhcp"/push "redirect-gateway def1 bypass-dhcp"/g' /etc/openvpn/server.conf
sudo sed -i 's/;push "dhcp-option DNS 208.67.222.222"/push "dhcp-option DNS 208.67.222.222"/g' /etc/openvpn/server.conf
sudo sed -i 's/;push "dhcp-option DNS 208.67.220.220"/push "dhcp-option DNS 208.67.220.220"/g' /etc/openvpn/server.conf
sudo sed -i 's/;user nobody/user nobody/g' /etc/openvpn/server.conf
sudo sed -i 's/;group nogroup/group nogroup/g' /etc/openvpn/server.conf

sudo sed -i 's/;log-append/log-append/g' /etc/openvpn/server.conf

Cosas que hicimos aquí: configuramos todo el tráfico para que pase por OpenVPN, configuramos el grupo y el usuario en nogroup y nadie, y configuramos los registros para que vayan a /etc/openvpn/openvpn.log. A continuación, necesitamos un cambio más sobre ta.key:

sudo nano /etc/openvpn/server.conf

Y encuentra esta linea

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

Eso es todo para server.conf, a continuación, debemos habilitar el reenvío de paquetes para nuestro servidor Ubuntu

sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
sudo sysctl -p

Las reglas de ufw también deben cambiarse para permitir el enmascaramiento, así que agregue esto al principio, antes de * filter
sección

sudo nano /etc/ufw/before.rules
# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES

Tenga en cuenta que es muy probable que tenga que cambiar la parte eth0 para reflejar el nombre real de su interfaz de red orientada a Internet, así que lo resalté. A continuación, habilitamos el reenvío en ufw como lo hicimos en sysctl:

sudo sed -i 's/DEFAULT_FORWARD_POLICY="DROP"/DEFAULT_FORWARD_POLICY="ACCEPT"/g' /etc/default/ufw

Configuramos el firewall

sudo ufw allow 1194/udp
sudo ufw disable

sudo ufw enable
sudo systemctl start openvpn@server
sudo systemctl status -l openvpn

openvpn-status

Si todo salió bien, habilite el inicio de openvpn en el arranque

sudo systemctl enable openvpn@server

Configuración del cliente

Con la parte de configuración del cliente, usamos certificados que ya hicimos, por ejemplo, client100. También necesitamos archivos de configuración del cliente

mkdir -p ~/client-configs/files
chmod 700 ~/client-configs/files
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf

El archivo que copiamos es de configuración básica, por lo tanto, debe editarse.

nano ~/client-configs/base.conf

Y luego busque una línea que diga remoto. Cámbielo también y apunte a la dirección IP de su servidor de FQDN.

remote your.serv.ipor.fqdn 1194

Guárdelo, ya que el resto de la edición lo haremos con los comandos sed y echo:

sudo sed -i 's/;user nobody/user nobody/g' ~/client-configs/base.conf
sudo sed -i 's/;group nogroup/group nogroup/g' ~/client-configs/base.conf

sudo sed -i 's/ca ca.crt/#ca ca.crt/g' ~/client-configs/base.conf
sudo sed -i 's/cert client.crt/#cert client.crt/g' ~/client-configs/base.conf
sudo sed -i 's/key client.key/#key client.key/g' ~/client-configs/base.conf

sudo echo key-direction 1 >> ~/client-configs/base.conf

Entonces, ¿qué hicimos aquí? Primero configuramos usuario y grupo en nadie y no grupo. Luego comentamos las rutas de certificados, ya que integraremos certificados en línea en el archivo .ovpn. Luego agregamos el parámetro key-direction 1.

Script para hacer configuraciones de cliente

Para incrustar la configuración del cliente, las claves y los certificados en un solo archivo .ovpn para facilitar la transferencia a los clientes remotos, usaremos un script simple. Hagamos

nano ~/client-configs/make_config.sh

Y luego pegar este pastebin allí. Después de guardar esto, necesitamos agregar el bit ejecutable, así que ejecute este comando:

chmod +x ~/client-configs/make_config.sh

Entonces podemos crear fácilmente archivos de configuración

cd ~/client-configs
./make_config.sh client100
ls ~/client-configs/files

La sintaxis del comando es fácil, debe estar dentro del directorio client-configs y ejecutar el comando con el argumento que dice el nombre del cliente que creó anteriormente. Si necesita más clientes, cree más certificados de cliente con otro nombre y vuelva a ejecutar este comando. Si todo salió bien, en el directorio client-configs / files debería haber archivo (s) ovpn. Debe transferirlos a su cliente o clientes y conectarse. Lo haré con scp, desde mi computadora portátil Fedora hice un comando así

 scp newuser@ip.of.my.srvr:/home/newuser/client-configs/files/client100.ovpn /home/miki/Documents/

Desde allí, puede cargarlo en un teléfono Android con un cable USB o AirDroid, o en Windows VM o en una Mac. Para el administrador de red de Linux, necesitaría desensamblar el archivo

Conclusión

Se trata de la configuración del servidor, a continuación tendríamos que conectarnos desde varios clientes. Para Android podemos usar OpenVPN Connect, para Mac Tunnelblick, para Windows hay OpenVPN del sitio oficial y para Linux hay un administrador de red. En algunos de los siguientes artículos cubriremos todo esto.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar