GNU/Linux >> Tutoriales Linux >  >> Debian

Cómo configurar un servidor OpenVPN en Debian 10

Una red privada virtual (VPN) es una conexión segura y encriptada entre dos redes y usuarios individuales que protege su conexión a Internet y su privacidad en línea. OpenVPN es un protocolo VPN gratuito y de código abierto que implementa técnicas para crear un punto a punto seguro en configuraciones enrutadas. Es multiplataforma y compatible con todos los principales sistemas operativos.

En este tutorial, le mostraremos cómo instalar y configurar OpenVPN en el servidor Debian 10.

Requisitos

  • Debian 10 VPS (usaremos nuestro plan NVMe 2 VPS)
  • Acceso a la cuenta de usuario root (o acceso a una cuenta de administrador con privilegios de root)

Paso 1:Inicie sesión en el servidor y actualice los paquetes del sistema operativo del servidor

Primero, inicie sesión en su servidor Debian 10 a través de SSH como usuario root:

ssh root@IP_Address -p Port_number

Deberá reemplazar 'IP_Address' y 'Port_number' con la dirección IP y el número de puerto SSH respectivos de su servidor. Además, reemplace "root" con el nombre de usuario de la cuenta de administrador si es necesario.

Antes de comenzar, debe asegurarse de que todos los paquetes del sistema operativo Debian instalados en el servidor estén actualizados. Puede hacerlo ejecutando los siguientes comandos:

apt-get update -y
apt-get upgrade -y

Paso 2:Instalar OpenVPN y EasyRSA

De forma predeterminada, OpenVPN se incluye en el repositorio predeterminado de Debian. Puede instalarlo con el siguiente comando:

apt-get install openvpn -y

Una vez que se haya instalado el paquete OpenVPN, deberá descargar EasyRSA en su sistema.

EasyRSA es una utilidad de línea de comandos para crear y administrar una CA de PKI. Le permite generar varios tipos de certificados.
Se utiliza para crear una autoridad de certificación raíz y solicitar y firmar certificados para OpenVPN.

Puede descargar la última versión de EasyRSA desde el repositorio de Git usando el siguiente comando:

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

Una vez que se complete la descarga, extraiga el archivo descargado usando el siguiente comando:

tar -xvzf EasyRSA-3.0.8.tgz

A continuación, copie el directorio extraído en el directorio de OpenVPN:

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

En este punto, OpenVPN y EasyRSA están instalados en su servidor.

Paso 3:crear la autoridad de certificación

A continuación, deberá crear la Autoridad de certificación (CA) para OpenVPN.

Primero, cambie el directorio a EasyRSA con el siguiente comando:

cd /etc/openvpn/easy-rsa

A continuación, deberá crear un archivo vars dentro de este. Un archivo vars es un archivo simple que Easy-RSA obtendrá para la configuración.

Puedes crearlo con el siguiente comando:

nano vars

Agregue las siguientes líneas según sus necesidades:

set_var EASYRSA                 "$PWD"
set_var EASYRSA_PKI             "$EASYRSA/pki"
set_var EASYRSA_DN              "cn_only"
set_var EASYRSA_REQ_COUNTRY     "USA"
set_var EASYRSA_REQ_PROVINCE    "Newyork"
set_var EASYRSA_REQ_CITY        "Newyork"
set_var EASYRSA_REQ_ORG         "ROSE CERTIFICATE AUTHORITY"
set_var EASYRSA_REQ_EMAIL    "[email protected]"
set_var EASYRSA_REQ_OU          "ROSE EASY CA"
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    "ROSE CERTIFICATE AUTHORITY"
set_var EASYRSA_EXT_DIR         "$EASYRSA/x509-types"
set_var EASYRSA_SSL_CONF        "$EASYRSA/openssl-easyrsa.cnf"
set_var EASYRSA_DIGEST          "sha256"

Guarde y cierre el archivo cuando haya terminado.

A continuación, inicie la infraestructura de clave pública con el siguiente comando:

./easyrsa init-pki

Deberías obtener el siguiente resultado:

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

A continuación, deberá ejecutar el comando build-ca para crear el archivo ca.crt y ca.key. Puede ejecutarlo con el siguiente comando:

./easyrsa build-ca nopass

Se le harán varias preguntas como se muestra a continuación:

Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars
Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020

Enter New CA Key Passphrase: 
Re-Enter New CA Key Passphrase: 
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

Paso 4:generar certificados de servidor y archivos de claves

A continuación, deberá utilizar el comando gen-req seguido del nombre común para generar la clave del servidor.

./easyrsa gen-req vpnserver nopass

Debería ver el siguiente resultado:

Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars
Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020
Generating a RSA private key
.......................................................+++++
....+++++
writing new private key to '/etc/openvpn/easy-rsa/pki/easy-rsa-1428.Angtmh/tmp.C9prw4'
-----
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]:

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

A continuación, deberá firmar la clave del servidor vpn con su certificado de CA. Puedes hacerlo con el siguiente comando:

./easyrsa sign-req server vpnserver

Deberías obtener el siguiente resultado:

Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'vpnserver'
Certificate is to be certified until Feb  6 14:38:52 2022 GMT (365 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /etc/openvpn/easy-rsa/pki/issued/vpnserver.crt

A continuación, deberá generar una clave fuerte de Diffie-Hellman para usarla en el intercambio de claves. Puede generarlo con el siguiente comando:

./easyrsa gen-dh

Paso 5:Copiar todo el certificado y el archivo de clave

A continuación, deberá copiar todo el certificado y el archivo de clave en el directorio /etc/openvpn/server/. Puede copiar el usando el siguiente comando:

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/

Paso 6:Crear certificado de cliente y archivo de claves

A continuación, deberá generar un certificado y un archivo de clave para el sistema cliente.

Puedes crearlo con el siguiente comando:

./easyrsa gen-req vpnclient nopass

Deberías obtener el siguiente resultado:

Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars
Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020
Generating a RSA private key
....+++++
.................................+++++
writing new private key to '/etc/openvpn/easy-rsa/pki/easy-rsa-1563.TeOf5v/tmp.i4YxLz'
-----
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]:

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

A continuación, firme la clave del cliente con el siguiente comando:

./easyrsa sign-req client vpnclient

Deberías obtener el siguiente resultado:

Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'vpnclient'
Certificate is to be certified until Feb  6 14:43:18 2022 GMT (365 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /etc/openvpn/easy-rsa/pki/issued/vpnclient.crt

A continuación, copie todos los certificados y claves del cliente en el directorio /etc/openvpn/client/.

cp pki/ca.crt /etc/openvpn/client/
cp pki/issued/vpnclient.crt /etc/openvpn/client/
cp pki/private/vpnclient.key /etc/openvpn/client/

Paso 7:configurar el servidor OpenVPN

En este punto, tanto el certificado como la clave del servidor y del cliente están listos. Ahora, deberá crear un archivo de configuración de OpenVPN y definir todos los certificados y claves.

nano /etc/openvpn/server.conf

Agregue las siguientes líneas:

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

Guarde y cierre el archivo, luego inicie el servicio OpenVPN y habilítelo para que se inicie al reiniciar el sistema:

systemctl start openvpn@server
systemctl enable openvpn@server

Si todo está bien, se creará una nueva interfaz. Puede verificarlo usando el siguiente comando:

ip a show tun0

Deberías obtener el siguiente resultado:

4: tun0:  mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
    link/none 
    inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::153d:f29:39a2:571a/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever

Paso 8:habilitar el reenvío de IP

El reenvío de IP permite que su sistema operativo acepte los paquetes de red entrantes y los reenvíe a la otra red. Puede habilitarlo con el siguiente comando:

nano /etc/sysctl.conf

Descomente o agregue la siguiente línea:

net.ipv4.ip_forward = 1

Guarde el archivo y luego aplique los cambios de configuración con el siguiente comando:

sysctl -p

Paso 9:Instalar y configurar el cliente OpenVPN

A continuación, deberá instalar el cliente OpenVPN en otro sistema y conectarse al servidor OpenVPN.

Primero, instale OpenVPN con el siguiente comando:

apt-get install openvpn -y

Una vez instalado, copie todo el certificado y la clave del Cliente del servidor OpenVPN a la máquina del Cliente. Puedes hacerlo con el siguiente comando:

scp -r root@vpn-server-ip:/etc/openvpn/client .

A continuación, cambie el directorio a cliente y cree un archivo de configuración de cliente:

cd client
nano client.ovpn

Agregue las siguientes líneas:

client
dev tun
proto udp
remote vpn-server-ip 1194
ca ca.crt
cert vpnclient.crt
key vpnclient.key
cipher AES-256-CBC
auth SHA512
auth-nocache
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
resolv-retry infinite
compress lz4
nobind
persist-key
persist-tun
mute-replay-warnings
verb 3

Guarde y cierre el archivo, luego conéctese a su servidor OpenVPN con el siguiente comando:

openvpn --config client.ovpn

Una vez que se haya establecido la conexión, debería obtener el siguiente resultado:

Sat Feb  6 14:53:50 2021 SENT CONTROL [vpnserver]: 'PUSH_REQUEST' (status=1)
Sat Feb  6 14:53:50 2021 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1,dhcp-option DNS 208.67.222.222,dhcp-option DNS 208.67.220.220,route 10.8.0.1,topology net30,ping 20,ping-restart 60,ifconfig 10.8.0.6 10.8.0.5,peer-id 0,cipher AES-256-GCM'
Sat Feb  6 14:53:50 2021 OPTIONS IMPORT: timers and/or timeouts modified
Sat Feb  6 14:53:50 2021 OPTIONS IMPORT: --ifconfig/up options modified
Sat Feb  6 14:53:50 2021 OPTIONS IMPORT: route options modified

Puede verificar la interfaz OpenVPN en la máquina cliente con el siguiente comando:

ip a show tun0

Deberías obtener el siguiente resultado:

4: tun0:  mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none 
    inet 10.8.0.6 peer 10.8.0.5/32 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::9206:94d7:8fb2:6b21/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever

Por supuesto, no es necesario que instale OpenVPN si utiliza uno de nuestros servicios de alojamiento administrado de OpenVPN, en cuyo caso simplemente puede solicitar a nuestros administradores expertos de Linux que lo instalen por usted. Están disponibles las 24 horas del día, los 7 días de la semana y atenderán su solicitud de inmediato.

PD . Si le gustó esta publicación sobre cómo instalar OpenVPN en Ubuntu, compártala con sus amigos en las redes sociales usando los botones a la izquierda o simplemente deje una respuesta a continuación. Gracias.


Debian
  1. Cómo configurar un servidor Samba en Debian 10 Buster

  2. Cómo configurar un servidor LAMP en Debian 10 Buster

  3. Cómo instalar y configurar OpenVPN Server en Debian 10

  4. Establecer una IP estática en Debian 11 - ¿Cómo hacerlo?

  5. Cómo configurar un servidor SFTP en Debian 11 Server

Cómo configurar un servidor de correo con PostfixAdmin en Debian 11

Cómo configurar un servidor de correo con Modoboa en Debian 10

Cómo establecer una IP estática en Debian 11

Cómo configurar el servidor Rsyslog Debian 10/11

Cómo configurar el servidor y el cliente NTP en Debian 11

Cómo instalar el servidor OpenVPN en Debian 11