Instalar servidor OpenVPN en Debian 11/Debian 10
Ejecutar actualización del sistema
actualización apt
Instalar OpenVPN en Debian 11/Debian 10
El paquete OpenVPN está disponible en los repositorios predeterminados de Debian 11/Debian 10.
instalación apt openvpn -y
Crear infraestructura de clave pública OpenVPN
Inicialice la PKI de OpenVPN. La PKI consta de:
- una clave pública y una clave privada para el servidor y cada cliente
- un certificado maestro de la autoridad de certificación (CA) y una clave que se utiliza para firmar cada uno de los certificados de servidor y cliente.
Por lo tanto, copie el directorio de configuración de easy-rsa en una ubicación diferente para asegurarse de que las futuras actualizaciones del paquete OpenVPN no sobrescriban sus modificaciones.
cp -r /usr/share/easy-rsa /etc/
A continuación, inicialice la PKI.
cd /etc/easy-rsa/
./easyrsa init-pki
Salida de comando de muestra;
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/easy-rsa/pki
Cree el certificado y la clave de la autoridad certificadora (CA)
A continuación, genere el certificado de CA y la clave para firmar los certificados de servidor y cliente de OpenVPN.
cd /etc/easy-rsa/./easyrsa build-ca
Esto le pedirá la contraseña de la clave de CA y el nombre común del servidor.
Uso de SSL:openssl OpenSSL 1.1.1d 10 de septiembre de 2019Ingrese la nueva frase de contraseña de la clave de CA:vuelva a ingresar la nueva frase de contraseña de la clave de CA:genere la clave privada RSA, módulo de 2048 bits de longitud (2 números primos)........... ...................................+++++.......... .........................+++++e es 65537 (0x010001) No se puede cargar /etc/easy-rsa/pki/. rnd en RNG139670192284800:error:2406F079:generador de números aleatorios:RAND_load_file:No se puede abrir el archivo:../crypto/rand/randfile.c:98:Filename=/etc/easy-rsa/pki/.rndSe le pedirá que ingrese la información que se incorporará a su solicitud de certificado. Lo que está a punto de ingresar es lo que se denomina un nombre distinguido o un DN. Hay bastantes campos, pero puede dejar algunos en blanco. Para algunos campos habrá un valor predeterminado. ingrese '.', el campo se dejará en blanco.-----Nombre común (por ejemplo:su nombre de usuario, host o servidor) [Easy-RSA CA]:Kifarunix-demo CACA creación completa y ahora puede importar y firmar solicitudes de certificado. Su nuevo archivo de certificado de CA para publicación es un t:/etc/easy-rsa/pki/ca.crt
El certificado de CA se genera y almacena en /etc/easy-rsa/pki/ca.crt
.
Generar parámetros Diffie Hellman
Genere claves Diffie-Hellman utilizadas para el intercambio de claves durante el protocolo de enlace TLS entre el servidor OpenVPN y los clientes que se conectan. Este comando se ha ejecutado dentro del directorio Easy-RSA;
./easyrsa gen-dh
Los parámetros DH de tamaño 2048 se crearán en /etc/easy-rsa/pki/dh.pem
.
Generar certificado y clave de servidor OpenVPN
Para generar un certificado y una clave privada para el servidor OpenVPN, ejecute el siguiente comando;
cd /etc/easy-rsa
./easyrsa construir-servidor-servidor completo nopass
Ingrese la frase de contraseña de la clave de CA creada anteriormente para generar los certificados y las claves.
nopass
deshabilita el uso de la frase de contraseña.
Salida de muestra;
Uso de SSL:openssl OpenSSL 1.1.1d 10 de septiembre de 2019Generación de una clave privada RSA................................. ...........++++++................................... .....+++++escribiendo una nueva clave privada en '/etc/easy-rsa/pki/private/server.key.MMFHTTtpKD'-----Usando la configuración desde /etc/easy-rsa/pki/ safessl-easyrsa.cnfIngrese la frase de contraseña para /etc/easy-rsa/pki/private/ca.key:Verifique que la solicitud coincida con la firma. certificado hasta el 10 de octubre 18:23:08 2024 GMT (1080 días) Escriba la base de datos con 1 nuevas entradas Base de datos actualizada
Generar clave de código de autenticación de mensajes basado en hash (HMAC)
La clave de autenticación precompartida TLS/SSL se utiliza como una firma HMAC adicional en todos los paquetes de protocolo de enlace SSL/TLS para evitar ataques DoS e inundaciones de puertos UDP. Esto se puede generar usando el comando;
openvpn --genkey secret /etc/easy-rsa/pki/ta.key
Generar certificado de revocación de OpenVPN
Para invalidar un certificado firmado anteriormente, debe generar un certificado de revocación.
Ejecute el script dentro del directorio Easy-RSA;
./easyrsa gen-crl
El certificado de revocación se genera y almacena en /etc/easy-rsa/pki/crl.pem
.
Salida de muestra;
Uso de SSL:openssl OpenSSL 1.1.1d 10 de septiembre de 2019Uso de la configuración de /etc/easy-rsa/pki/safessl-easyrsa.cnfIngrese la frase de contraseña para /etc/easy-rsa/pki/private/ca.key :Se ha creado una CRL actualizada.Archivo CRL:/etc/easy-rsa/pki/crl.pem
Copiar certificados y claves del servidor en el directorio de configuración del servidor
Copie todos los certificados/claves de servidor generados en el directorio de configuración del servidor OpenVPN. etc/openvpn/servidor/
Generar certificados y claves de cliente de OpenVPN
Los certificados de clientes OpenVPN y las claves privadas se pueden generar de la siguiente manera
cd /etc/easy-rsa
./easyrsa build-client-full koromicha nopass
- donde
koromicha
es el nombre del cliente para el que se generan el certificado y las claves. - Utilice siempre un nombre común único para cada cliente para el que genere certificados y claves.
Salida de comando de muestra;
Uso de SSL:openssl OpenSSL 1.1.1d 10 de septiembre de 2019Generación de una clave privada RSA..................+ ++++.................................................. .................................................... ...........................+++++escribiendo una nueva clave privada en '/etc/easy-rsa/pki/private/koromicha .key.saAaE6L0tX'-----Usando la configuración de /etc/easy-rsa/pki/safessl-easyrsa.cnfIngrese la frase de contraseña para /etc/easy-rsa/pki/private/ca.key:Verifique que la solicitud coincida la firma Firma ok El nombre distinguido del sujeto es el siguiente nombre común:ASN.1 12:'koromicha' El certificado se certificará hasta el 10 de octubre 18:25:37 2024 GMT (1080 días) Escriba la base de datos con 1 entrada nueva Base de datos actualizada
Para generar para el segundo cliente,
./easyrsa build-client-full janedoe nopass
Puedes ver cómo usar easyrsa
comando con ./easyrsa --help
.
Copiar certificados y claves del cliente en el directorio del cliente
Cree directorios de clientes OpenVPN. Por ejemplo, hemos generado certificados y archivos clave para dos clientes, koromicha y janedoe, por lo que creamos directorios como;
mkdir /etc/openvpn/client/{koromicha,janedoe}
Después de eso, copie los certificados/claves generados por el cliente y el certificado de CA del servidor en el directorio de configuración del cliente OpenVPN. Puedes
cp -rp /etc/easy-rsa/pki/{ca.crt,emitido/koromicha.crt,private/koromicha.key} /etc/openvpn/client/koromicha
cp -rp /etc/easy-rsa/pki/{ca.crt,emitido/janedoe.crt,private/janedoe.key} /etc/openvpn/client/janedoe/
Configurar servidor OpenVPN en Debian 11/Debian 10
El siguiente paso es configurar el servidor OpenVPN. Copie la configuración del servidor OpenVPN de muestra en /etc/openvpn/server
directorio como se muestra a continuación;
En Debian 10;
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/
Extraiga la configuración.
cd /etc/openvpn/server/gunzip server.conf.gz
En Debian 11;
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/server/
Modifique el archivo de configuración, server.conf
, para satisfacer sus necesidades;
Así es como se ven nuestras configuraciones sin comentarios.
cp /etc/openvpn/server/server.conf{,.bak}
cat> /etc/openvpn/server/server.conf <<'EOL'port 1194proto udpdev tunca ca.crtcert emitió/server.crtkey private/server.key # Este archivo debe mantenerse en secretodh dh.pemtopology subnetserver 10.8. 0.0 255.255.255.0ifconfig-pool-persist /var/log/openvpn/ipp.txtpush "redirect-gateway def1 bypass-dhcp"push "dhcp-option DNS 208.67.222.222"push "dhcp-option DNS 8.8.8.8"client- to-clientkeepalive 10 120tls-auth ta.key 0 # Este archivo es secretcipher AES-256-CBCcomp-lzopersist-keypersist-tunstatus /var/log/openvpn/openvpn-status.loglog-append /var/log/openvpn/openvpn. logverb 3explicit-exit-notify 1auth SHA512EOL
Guarde y salga de la configuración una vez que haya terminado de editar.
Configurar el reenvío de IP de OpenVPN
Para asegurarse de que el tráfico del cliente se enruta a través de la dirección IP del servidor OpenVPN (ayuda a enmascarar la dirección IP del cliente), debe habilitar el reenvío de IP en el servidor OpenVPN.
Quite el comentario de la línea, net.ipv4.ip_forward=1
, en /etc/sysctl.conf
para habilitar el reenvío de paquetes para IPv4
sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
Aplique los cambios sin reiniciar el servidor.
sysctl -p
Permitir puerto de servicio OpenVPN a través de firewall;
ufw permitir 1194/udp
Configurar enmascaramiento de IP en UFW
Encuentre su interfaz predeterminada a través de la cual se envían sus paquetes.
ruta ip obtener 8.8.8.8
8.8.8.8 a través de 10.0.2.2 desarrollador enp0s3 src 10.0.2.15 uid 0
A continuación, actualice las reglas de UFW;
vim /etc/ufw/before.rules
Agregue las siguientes líneas resaltadas justo antes del *filter
ajustes de la mesa. Tenga en cuenta que la interfaz utilizada debe coincidir con el nombre de la interfaz anterior.
...
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.8.0.0/8 -o enp0s3 -j MASQUERADE
COMMIT
# Don't delete these required lines, otherwise there will be errors
*filter
...
Guarde y salga de la configuración.
Habilitar el reenvío de paquetes UFW;
sed -i 's/DEFAULT_FORWARD_POLICY="DROP"/DEFAULT_FORWARD_POLICY="ACCEPT"/' /etc/default/ufw
Recargar UFW;
recargar ufw
Ejecución del servidor OpenVPN en Debian 11/Debian 10
Inicie y habilite el servidor OpenVPN para que se ejecute en el arranque del sistema;
systemctl enable --now [email protected]
Comprobando el estado;
systemctl status [email protected]
● [email protected]:servicio OpenVPN para el servidor Cargado:cargado (/lib/systemd/system/[email protected]; habilitado; valor preestablecido del proveedor:habilitado) Activo:activo (en ejecución) desde el martes 2021-10- 26 15:06:18 EDT; Hace 9 segundos Documentos:man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage https://community.openvpn.net/openvpn/wiki/HOWTO PID principal:1595 (openvpn) Estado:" Secuencia de inicialización completada" Tareas:1 (límite:2359) Memoria:2,4 M CGroup:/system.slice/system-openvpn\x2dserver.slice/[email protected] └─1595 /usr/sbin/openvpn --status /run /openvpn-server/status-server.log --status-version 2 --suppress-timestamps --config server.conf 26 de octubre 15:06:18 debian systemd[1]:Iniciando el servicio OpenVPN para el servidor... 26 de octubre de 15 :06:18 debian systemd[1]:Se inició el servicio OpenVPN para el servidor.
Cuando se ejecuta el servicio OpenVPN, creará una interfaz de tunelización, tun0;
ip agregar s
...
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
link/none
inet 10.8.0.1/24 brd 10.8.0.255 scope global tun0
valid_lft forever preferred_lft forever
inet6 fe80::bf6a:bdf4:58e1:ec24/64 scope link stable-privacy
valid_lft forever preferred_lft forever
Además, asegúrese de revisar los registros;
tail /var/log/openvpn/openvpn.log
/sbin/ip link set dev tun0 up mtu 1500/sbin/ip addr add dev tun0 10.8.0.1/24 broadcast 10.8.0.255 No se pudo determinar el protocolo IPv4/IPv6. Uso de búfer AF_INETSocket:R=[212992->212992] S=[212992->212992]Enlace UDPv4 local (enlazado):[AF_INET][undef]:1194Enlace UDPv4 remoto:[AF_UNSPEC]MULTI:multi_init llamado, r=256 v =256 IFCONFIG POOL:base=10.8.0.2 size=252, ipv6=0IFCONFIG POOL LIST Secuencia de inicialización completada
El servidor OpenVPN ahora está listo para aceptar y enrutar conexiones de clientes.
Eso marca el final de nuestra guía sobre cómo instalar OpenVPN Server en Debian 11/Debian 10.
Ahora puede configurar sus clientes en consecuencia.
Tutoriales relacionados
Instale y configure el cliente OpenVPN en CentOS 8/Ubuntu 18.04
Configurar la autenticación basada en LDAP de OpenVPN
Configurar IPSEC VPN usando StrongSwan en Ubuntu 18.04