GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo configurar OpenVPN en Ubuntu 16.04

Continuando con la serie de artículos de VPN, ahora instalamos OpenVPN en el servidor Ubuntu 16.04. OpenVPN es un software VPN bien conocido de la compañía del mismo nombre. Es un poco 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 ingresado como usuario nuevo o cualquier otro usuario no root, instalaremos openvpn

sudo apt-get install openvpn easy-rsa

Certificados de servidor y cliente

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

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="[email protected]"
export KEY_OU="LinuxGeeks"

También hay una línea llamada KEY_NAME en el mismo archivo, por lo que simplemente pondremos el 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, escribamos 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 Intro en todos los aspectos.

./build-key-server server

Vuelva a entrar, pero no en todos los aspectos esta vez. Cuando te pida poner contraseña, no la pongas, y al final presiona y para crear certificado. El siguiente es Diffie Hellman:

./build-dh

Tomará algún tiempo, así que sea paciente. A continuación, necesitamos la 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 vuelven a estar bien, así que solo presione enter y y al final.

Configuración del servidor

Como 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, debemos editar server.conf para que nuestro servidor funcione. Puede usar cualquier editor, pero ahora usaremos el comando sed

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 pasar por OpenVPN, configuramos el grupo y el usuario en ningún grupo y nadie, y configuramos los registros para que vayan a /etc/openvpn/openvpn.log. Después de eso, necesitamos un cambio más sobre ta.key:

sudo nano /etc/openvpn/server.conf

Y encuentra esta línea

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

Eso es todo para server.conf, luego necesitamos 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 lo más probable es que deba cambiar la parte eth0 para reflejar el nombre real de su interfaz de red orientada a Internet, por lo 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 cortafuegos

sudo ufw allow 1194/udp
sudo ufw disable

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

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 una configuración básica, por lo que debe editarse.

nano ~/client-configs/base.conf

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

remote your.serv.ipor.fqdn 1194

Guarde eso, 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 el usuario y el grupo como nadie y sin grupo. Luego, comentamos las rutas de los certificados, ya que integraremos los certificados en línea en el archivo .ovpn. Luego, agregamos el parámetro de dirección clave 1.

Script para realizar configuraciones de clientes

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

nano ~/client-configs/make_config.sh

Y luego pegue 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 de configuración del cliente 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 archivos ovpn. Debe transferirlos a su cliente o clientes y conectarse. Lo haré con scp, desde mi laptop Fedora hice un comando así

 scp [email protected]:/home/newuser/client-configs/files/client100.ovpn /home/miki/Documents/

Desde allí, puede cargarlo en un teléfono Android con un cable USB o a través de AirDroid, en una máquina virtual de Windows o en una Mac. Para el administrador de red de Linux, deberá desensamblar el archivo

Conclusión

Esto es todo acerca de la configuración del servidor, luego necesitaríamos conectarnos desde varios clientes. Para Android podemos usar OpenVPN Connect, para Mac Tunnelblick, para Windows hay OpenVPN del sitio oficial, y para Linux hay administrador de red. En algunos de los siguientes artículos cubriremos todo esto.


Ubuntu
  1. Cómo instalar y configurar el servidor de acceso OpenVPN

  2. Cómo configurar un servidor OpenVPN en Ubuntu 20.04

  3. Cómo instalar y configurar el servidor DHCP en Ubuntu 20.04

  4. Cómo instalar y configurar el servidor Redis en Ubuntu

  5. Cómo instalar OpenVPN en Ubuntu 18.04

Cómo configurar OSSEC en Ubuntu - Parte 2

Cómo instalar y configurar DHCP en Ubuntu 18.04

Cómo configurar el servidor DNS en Ubuntu 18.04 / Ubuntu 16.04

Cómo configurar OpenVPN en Ubuntu Server

Cómo instalar y configurar un servidor OpenVPN en Ubuntu 22.04

Cómo instalar el servidor OpenVPN en Ubuntu 20.04 LTS