noticias
Serverspace Tecnologías en los Emiratos Árabes Unidos: lanzamiento de Falconcloud
WB
14 de mayo de 2020
Actualizado agosto 1, 2023

Configurando OpenVPN on Ubuntu

Linux Redes Ubuntu VPN

Se considera que las redes públicas (abiertas) no están asegurando al nivel necesario. Existen riesgos potenciales de captura (intercepción) de tráfico por parte de usuarios malintencionados en dichas redes:
en cafeterías, estaciones de tren o autobús, centros comerciales, etc. El tráfico capturado podría convertirse en una fuente de información para piratería de cuentas, robo de datos confidenciales y otros problemas críticos de seguridad.

VPN (red privada virtual) es un método para organizar una red privada (personal) que envía datos cifrados a través de redes públicas.

Los clientes y organizaciones comunes (sin importar la forma o el tamaño) están usando VPN regularmente.

Ciertos usuarios solo pueden acceder a una red privada (empleando varios tipos de autenticaciones) con encriptación de conexiones obligatorias, por lo que en la mayoría de los casos la interceptación del tráfico no tiene sentido para acceder a datos valiosos (útiles).

En general, el funcionamiento de una red privada depende de una implementación particular.

El cliEl modelo de servidor de entrada se aplica con mayor frecuencia cuando la comunicación entre los nodos de la red es proporcionada por VPN servidor. Un servidor puede representarse como un host físico/virtual que ejecuta un sistema operativo de servidor (por cierto, el sistema operativo de escritorio es una opción) y como dispositivos de red especializados con capacidad de VPN tecnología.

Modos de comunicación accesibles: interacción punto a punto (el host se comunica con un solo host) o agrupación de subredes completas para implementar una más grande (con modificaciones de enrutamiento complejas).
OpenVPN es ampliamente utilizado VPN implementación y el nombre del protocolo.

Es un software multiplataforma que se ejecuta en muchos sistemas operativos.

La licencia GNU GPL permite el uso por parte de organizaciones comerciales.

La publicación tiene como objetivo demostrar la instalación y configuración sencillas OpenVPN en host con Ubuntu usando papárametros suficientes para un uso seguro.



Algunas explicacionesnationes antes de continuar

OpenVPN depende en gran medida del trabajo correcto de PKI: su objetivo principal es producir claves y emitir/firmar/revocar certificados. Para simplificar estos procesos, la secuencia de comandos "easyrsa" si se aplica a menudo, es un enfoque para preparar la Autoridad de certificación (CA).

Se supone que el cifrado está en modo asimétrico donde las claves privadas (para cifrar los paquetes transmitidos) y públicas (para el descifrado) se colocan en cada host.

Los hosts se reconocen (autentican) entre sí antes de interactuar, se deben proporcionar pruebas de significado para confirmar que cada host puede comunicarse. Compartir claves públicas permite asegurar el reconocimiento.

De esta manera también se supone que un solo host debe recibir la clave pública de todos los hosts que residen en la red para la autenticación (además del intercambio seguro de paquetes, por supuesto).

Solo imagine una red realmente grande con cientos de hosts y aparentemente bastante difícil de mantener el intercambio de claves públicas (teniendo en cuenta que un usuario malintencionado puede proporcionar una clave falsa).
En cambio, CA como otra parte participa en la interacción donde otros hosts confían en ella.

El rol de la CA es manejar las solicitudes de certificados; su propósito es procesar la solicitud de emisión de certificados para cada clave pública. El procesamiento significa que la CA emite y firma el certificado del host con la aplicación de su propio certificado. Los hosts obtienen el certificado de CA con la configuración, por eso confían en él.

Basado en explicaciónnatSe requieren iones por encima de estas entidades:

  1. Certificado y clave privada de CA;
  2. Clave del servidor, certificado de una clave pública firmado por CA;
  3. Cliclave de ent, certificado de una clave pública firmado por CA;
  4. Archivo separado generado de acuerdo con el protocolo Diffie-Hellman. La aplicación de dicho archivo dificulta que un intruso descifre los paquetes que logró interceptar al comprometer la clave privada;
  5. Clave especial HMAC como opción de seguridad avanzada. Su propósito es la protección contra varios tipos de ataques.

Instalación

Maneras de OpenVPN instalando:

  1. Del código fuente;
  2. Desde Ubuntu repositorio;
  3. Del repositorio de desarrolladores (Community Edition).

Se recomienda actualizar el software mediante el administrador de paquetes, por lo que la instalación desde el código fuente no es la mejor opción.

Ubuntu al repositorio le falta una versión nueva del software.

OpenVPN los desarrolladores mantienen un repositorio dedicado con nuevas versiones y actualizaciones, por lo que lo consideran más adecuado.

Agregando el repositorio de desarrolladores (todos los comandos son ejecutados por root):

    1. Importar clave GPG:
curl -fsSL https://swupdate.openvpn.net/repos/repo-public.gpg | gpg --dearmor -o /usr/share/keyrings/openvpn-public.gpg
    1. Coloque una nueva fuente para el administrador de paquetes apt:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/openvpn-public.gpg] https://build.openvpn.net/debian/openvpn/stable jammy main" > /etc/apt/sources.list.d/openvpn-repo.list
    1. Instale el software con sus dependencias:
apt update && apt install easy-rsa openvpn

preparación CA

    1. Cree un subdirectorio con contenido de CA relacionado:
make-cadir /etc/openvpn/ca && cd /etc/openvpn/ca && ./easy-rsa init-pki

Posteriormente, las claves privadas “.key” aparecen en el directorio “pki/private”, los certificados emitidos “.crt” en “pki/emitido”.

    1. Antes de comenzar, el script "easyrsa" lee el archivo llamado "vars": almacena los nombres de las variables necesarias con sus valores predeterminados. Usted es libre de cambiar los valores habiendo descomentado previamente la entrada correspondiente.

Ejemplo de modificación:
variables in vars file

La variable EASYRSA_CA_EXPIRE define cuántos días la clave de CA es válida; el valor predeterminado es 3650 días (o 10 años). Proporcione aquí un nuevo valor si es necesario.

De manera similar, EASYRSA_CERT_EXPIRE define el período de validez del certificado de CA.

El archivo también contiene explicaciónnationes para cada variable como comentarios.

    1. Obtenga la clave privada y el certificado de CA generados:
./easy-rsa build-ca

Recomendación importante: configure una frase de contraseña compleja cuando aparezca la solicitud adecuada; la frase de contraseña agrega dificultad para usar la clave cuando está comprometida.

"Nombre común": presione Entrar (significa continuar con lo sugerido entre corchetes), o proporcione el nombre deseado.

Resultado de la ejecución del script: clave de CA privada guardada como "ca.key", certificado de CA: "ca.crt". ¡Nunca envíe la llave a nadie, guárdela en un lugar seguro!

    1. Genere el archivo Diffie-Hellman (este proceso puede requerir dos o tres minutos):
./easyrsa gen-dh
    1. Generar clave HMAC:
openvpn --genkey secret pki/ta.key

Clave y certificado para el servidor

    1. Generar clave privada:
./easyrsa gen-req serverspace nopass

“nopass” permite obtener una clave sin frase de contraseña. De lo contrario, systemd solicitará una frase de contraseña antes de que comience cada servicio. No escriba "nopass" en caso de que su política de seguridad exija una frase de contraseña.

Proporcione el nombre deseado una vez que aparezca la solicitud de "Nombre común", por ejemplo, Serverspace.

Resultado — clave privada “serverspace.key”, solicitud de emisión de certificado “serverspace.requisito”.

    1. Emitir y firmar el certificado:
./easyrsa sign-req server serverspace

Antes de firmar, el sistema solicita la confirmación de los datos proporcionados "Confirmar los detalles de la solicitud:" — confírmelo con la palabra "sí", inmediatamente después — proporcione la frase de contraseña para la clave privada de CA.
Resultado — certificado “serverspace.crt”.

    1. Combine los archivos en un directorio:
cp pki/private/serverspace.key pki/issued/serverspace.crt pki/dh.pem pki/ca.crt pki/ta.key /etc/openvpn/server/

Preparación de la configuración del servidor

Crear nuevo archivo /etc/openvpn/server/server.conf y coloque allí:

port 1194
proto udp
dev tun
mode server
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0
server 172.16.61.0 255.255.255.0
push "redirect gateway def1"
push "dhcp-option DNS 8.8.8.8"
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
log openvpn.log
log-append openvpn.log

El puerto sale por defecto: 1194, tráfico udp (tcp se puede usar en situaciones específicas), subred y DNS están definidos, la compresión está habilitada.
Hay otros paramHay medidores disponibles; su uso depende de los términos de la tarea.

Inicio OpenVPN servidor

    1. Habilite e inicie el servicio systemd:
systemctl enable openvpn-server@server.service --now

Inmediatamente después de iniciar, debe aparecer la interfaz de red adicional "tun0". Comando “ip a | grep tun0” puede comprobar si es así. Si "tun0" está activo, el servicio se está ejecutando correctamente. [/ código]

    1. Permitir el envío de paquetes entre interfaces:
sysctl -w net.ipv4.ip_forward = 1 >> /etc/sysctl.conf
sysctl -p
    1. Agregue una nueva entrada en IPTables para emplear NAT:
iptables -t nat -A POSTROUTING -s 172.16.61.0/24 -o enp0s5 -j MASQUERADE

Proporcione el nombre de la interfaz que se supone que debe recibir cliconexiones ent en lugar de enp0s5.
Esta entrada desaparecerá después de reiniciar el sistema operativo.
Para que sea persistente, se puede iniciar un ejecutable pequeño justo después de que la red esté activa. Cree un archivo llamado 50-ifup en /etc/networkd-dispatcher/routable.d/ y agregue:

#!/usr/bin/env bash
if [[ "$IFACE" == "enp0s5" ]];
then
iptables -t nat -A POSTROUTING -s 172.16.61.0/24 -o enp0s5 -j MASQUERADE
fi

Hacer el archivo 50-ifup ejecutable (permisos 755).

Cliclave y certificado de ent

    1. Generar clave para un client:
./easy-rsa gen-req myclient1
    1. Emitir y firmar el certificado:
./easyrsa sign-req myclient1

El script solicitará confirmación: escriba "sí" para confirmar, luego proporcione también la frase de contraseña para la clave privada de CA.
Nuevo clicertificado del ent — “miclient1.crt”, clave — “miclient1.clave”.

Los archivos mencionados a continuación son necesarios en un dispositivo donde clise supone que se crea la conexión ent:

  • ca.crt;
  • myclient1.clave;
  • myclient1.crt;
  • ta.llave.



Votar:
4 de 5
Calificación promedio: 4.2
Calificado por: 5
1101 CT Ámsterdam Países Bajos, Herikerbergweg 292
+31 20 262-58-98
700 300
ITGLOBAL.COM NL
700 300
Utilizamos cookies para hacer que su experiencia en el Serverspace mejor. Al continuar navegando en nuestro sitio web, usted acepta nuestros
Uso de Cookies y Política de Privacidad.