Configurar un servidor OpenVPN en Debian 10

Instalar y configurar un servidor OpenVPN en Debian 10 y derivados.

Una red privada virtual, también conocida como VPN, es una conexión segura y encriptada entre dos puntos. Su uso puede parecer un poco exagerado para usuarios normales, pero te equivocas, ya que protege nuestra conexión a Internet y también nuestra privacidad en línea.

OpenVPN es una herramienta VPN gratuita y de código abierto. Implanta técnicas y reglas que crean conexiones punto a punto, de forma segura en la configuración. Es compatible con los principales sistemas operativos, pero claro… si usas linux mejor que mejor.

En el artículo de hoy, vemos como instalar y configurar un servidor OpenVPN en Debian 10 y todos sus derivados.

Servidor OpenVPN en Debian 10

Servidor OpenVPN en Debian 10

 

Configurar un servidor OpenVPN en Debian 10

Antes de comenzar la instalación de nuestro servidor, actualizamos el sistema.

sudo apt update -y

sudo apt upgrade -y

 

Instalar OpenVPN

Debian 10 incluye OpenVPN en sus repositorios oficiales, por tanto, instalarlo es tan fácil como ejecutar este comando.

sudo apt install openvpn -y

Ejemplo…

root@SoloLinux:~# sudo apt install openvpn -y
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias       
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes adicionales:
  easy-rsa libccid liblzo2-2 libpcsclite1 libpkcs11-helper1 libusb-1.0-0
  opensc opensc-pkcs11 pcscd
Paquetes sugeridos:
  pcmciautils openvpn-systemd-resolved
Se instalarán los siguientes paquetes NUEVOS:
  easy-rsa libccid liblzo2-2 libpcsclite1 libpkcs11-helper1 libusb-1.0-0
  opensc opensc-pkcs11 openvpn pcscd

 

Instalar EasyRSA

EasyRSA es una herramienta que nos facilita la tarea de crear y administrar, una CA PKI (public key infrastructure). Con esta aplicación en línea de comandos, podremos generar múltiples tipos de certificados. En OpenVPN la necesitamos para crear la autoridad de certificación raíz, también para solicitar y firmar los certificados de OpenVPN.

Descargamos la última versión de su zona oficial de Github.

wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz

Extraemos el archivo.

tar -xvzf EasyRSA-3.0.8.tgz

Ahora lo copiamos en el directorio de OpenVPN.

cp -r EasyRSA-3.0.8 /etc/openvpn/easy-rsa

 

Crear la autoridad de certificación

Si quieres configurar correctamente un servidor OpenVPN en Debian 10, estos pasos son necesarios, no te asustes… no es tan difícil.

Nos movemos al directorio de EasyRSA.

cd /etc/openvpn/easy-rsa

Ahora creamos un archivo de configuración, al cual llamaremos «vars».

nano vars

Copia y pega lo siguiente con tus datos. Ojo, no te olvides las comillas.

set_var EASYRSA                 "$PWD"
set_var EASYRSA_PKI             "$EASYRSA/pki"
set_var EASYRSA_DN              "cn_only"
set_var EASYRSA_REQ_COUNTRY     "SPAIN"     # pais
set_var EASYRSA_REQ_PROVINCE    "Huesca"    # provincia
set_var EASYRSA_REQ_CITY        "Monzon"    # localidad
set_var EASYRSA_REQ_ORG         "SOLOLINUX CERTIFICATE AUTHORITY"   # Organizacion
set_var EASYRSA_REQ_EMAIL       "admin@tuemail.com"   # Email del administrador
set_var EASYRSA_REQ_OU          "SOLOLINUX EASY CA"   # Nombre
set_var EASYRSA_KEY_SIZE        "2048"
set_var EASYRSA_ALGO            "rsa"
set_var EASYRSA_CA_EXPIRE       "7500"
set_var EASYRSA_CERT_EXPIRE     "365"
set_var EASYRSA_NS_SUPPORT      "no"
set_var EASYRSA_NS_COMMENT      "SOLOLINUX CERTIFICATE AUTHORITY"   #Comentario
set_var EASYRSA_EXT_DIR         "$EASYRSA/x509-types"
set_var EASYRSA_SSL_CONF        "$EASYRSA/openssl-easyrsa.cnf"
set_var EASYRSA_DIGEST          "sha256"

Guarda el archivo y cierra el editor. Vemos una imagen de ejemplo…

Configurar EasyRSA en servidor OpenVPN con Debian 10

Configurar EasyRSA en servidor OpenVPN con Debian 10

 

Iniciamos la infraestructura de clave pública.

./easyrsa init-pki

Obtendrás un resultado similar a…

root@SoloLinux:/etc/openvpn/easy-rsa# ./easyrsa init-pki

Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars

init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/openvpn/easy-rsa/pki

Bien, ahora creamos los archivos ca.crt y ca.key.

./easyrsa build-ca nopass

Te pedirá un nombre, puedes responder o pulsar enter para insertar la respuesta por defecto. En nuestro ejemplo insertamos la palabra «vpnserver».

root@SoloLinux:/etc/openvpn/easy-rsa# ./easyrsa build-ca nopass

Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars
Using SSL: openssl OpenSSL 1.1.1d  10 Sep 2019
Generating RSA private key, 2048 bit long modulus (2 primes)
......................+++++
...........................................................+++++
e is 65537 (0x010001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:vpnserver  # <<------

CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/etc/openvpn/easy-rsa/pki/ca.crt

 

Generar el certificado del servidor y los archivos de claves

Continuamos con la configuración de un servidor OpenVPN en Debian 10, con el comando gen-req seguido del nombre que le dimos anteriormente, en nuestro caso vpnserver.

./easyrsa gen-req vpnserver nopass

Cuando nos pregunte, insertamos de nuevo el nombre (vpnserver). Revisa el ejemplo.

root@SoloLinux:/etc/openvpn/easy-rsa# ./easyrsa gen-req vpnserver nopass

Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars
Using SSL: openssl OpenSSL 1.1.1d  10 Sep 2019
Generating a RSA private key
.+++++
............................................+++++
writing new private key to '/etc/openvpn/easy-rsa/pki/easy-rsa-2925.3e5F9i/tmp.INJrXY'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [vpnserver]:vpnserver  #<<------

Keypair and certificate request completed. Your files are:
req: /etc/openvpn/easy-rsa/pki/reqs/vpnserver.req
key: /etc/openvpn/easy-rsa/pki/private/vpnserver.key

 

Es necesario firmar la key de vpnserver con el certificado CA.

./easyrsa sign-req server vpnserver

Solicitará confirmación, debes responder «yes» tal como se indica en la imagen de ejemplo.

Confirmar certificado en servidor OpenVPN con Debian 10

Confirmar certificado en servidor OpenVPN con Debian 10

 

Como último paso, creamos una clave Diffie-Hellman para usarla en los procesos de intercambio.

./easyrsa gen-dh

El proceso puede tomar unos minutos, sé paciente.

Generar clave Diffie Hellman en servidor OpenVPN

Generar clave Diffie-Hellman en servidor OpenVPN

 

Al concluir, verás el siguiente resultado.

DH parameters of size 2048 created at /etc/openvpn/easy-rsa/pki/dh.pem

Solo falta copiar el certificado y el archivo key al server.

cp pki/ca.crt /etc/openvpn/server/

cp pki/dh.pem /etc/openvpn/server/

cp pki/private/vpnserver.key /etc/openvpn/server/

cp pki/issued/vpnserver.crt /etc/openvpn/server/

 

Generar el certificado del cliente y los archivos de claves

En este paso debes generar un certificado y un archivo de claves, para el sistema cliente. La daremos el nombre de «vpnclient».

./easyrsa gen-req vpnclient nopass

En la pregunta, pulsa enter, por defecto tomará el nombre «vpnclient». Ejemplo…

root@SoloLinux:/etc/openvpn/easy-rsa# ./easyrsa gen-req vpnclient nopass

Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars
Using SSL: openssl OpenSSL 1.1.1d  10 Sep 2019
Generating a RSA private key
....................................................+++++
.............+++++
writing new private key to '/etc/openvpn/easy-rsa/pki/easy-rsa-3054.uWQ1NB/tmp.nZaioq'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [vpnclient]:   #<<------ vpnclient

Keypair and certificate request completed. Your files are:
req: /etc/openvpn/easy-rsa/pki/reqs/vpnclient.req
key: /etc/openvpn/easy-rsa/pki/private/vpnclient.key

Necesitas firmar la key del cliente. Responde «yes».

./easyrsa sign-req client vpnclient

Imagen de ejemplo.

Firmar la key del cliente en servidor OpenVPN

Firmar la key del cliente en servidor OpenVPN

 

Copiamos los certificados y claves al directorio del cliente.

cp pki/ca.crt /etc/openvpn/client/

cp pki/issued/vpnclient.crt /etc/openvpn/client/

cp pki/private/vpnclient.key /etc/openvpn/client/

 

Configurar el servidor OpenVPN

Bueno, ya tenemos los certificados y claves listas para funcionar. Vamos a la configuración del servidor OpenVPN propiamente dicha y, para ello necesitamos un archivo de configuración.

nano /etc/openvpn/server.conf

Copia y pega lo siguiente.

port 1194
proto udp
dev tun
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/vpnserver.crt
key /etc/openvpn/server/vpnserver.key
dh /etc/openvpn/server/dh.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1"

push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
duplicate-cn
cipher AES-256-CBC
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256
auth SHA512
auth-nocache
keepalive 20 60
persist-key
persist-tun
compress lz4
daemon
user nobody
group nogroup
log-append /var/log/openvpn.log
verb 3

Guarda el archivo y cierra el editor.

 

Por fin!!!, iniciamos y habilitamos el servicio.

systemctl start openvpn@server

systemctl enable openvpn@server

 

Habilitar el reenvío de IP

El reenvío de IP permite al sistema aceptar paquetes de red entrantes y, reenviarlos a otra red. Para habilitar el servicio debemos editar su archivo de configuración.

sudo nano /etc/sysctl.conf

Busca la línea…

#net.ipv4.ip_forward=1

Y la descomentas como en la imagen de ejemplo….

Habilitar IP Forwardingen en un servidor OpenVPN

Habilitar IP Forwardingen en un servidor OpenVPN

 

Guarda el archivo y cierra el editor, nuestro último paso es aplicar los cambios.

sysctl -p

 

La configuración de un servidor OpenVPN en Debian 10, ha concluido. En el siguiente artículo instalaremos y configuraremos un cliente externo.

 

Canales de Telegram: Canal SoloLinux – Canal SoloWordpress

Espero que este artículo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales. Configurar un servidor OpenVPN en Debian 10.

Chat de SoloLinux en Telegram

 

4 Comentarios

  1. Gelu
    17/03/2021
    • Sergio G.B.
      18/03/2021
  2. Octavio
    20/03/2021
  3. Manu
    21/03/2021

Agregar comentario

1 logo sololinux

Suscríbete a SoloLinux

Recibe todos los nuevos artículos es tu correo electrónico

You have Successfully Subscribed!

Ir al contenido