Cómo instalar y configurar el servidor OpenVPN con clientes Linux y Windows en RHEL / CentOS 7
Una red privada virtual es una solución tecnológica que se utiliza para proporcionar privacidad y seguridad para las conexiones entre redes. El caso más conocido consiste en personas que se conectan a un servidor remoto con tráfico que pasa por una red pública o insegura (como Internet).
Imagine los siguientes escenarios:

En este artículo explicaremos cómo configurar un servidor VPN en una caja RHEL/CentOS 7 usando OpenVPN, una aplicación de tunelización robusta y altamente flexible que usa las características de encriptación, autenticación y certificación de la biblioteca OpenSSL. Para simplificar, solo consideraremos un caso en el que el servidor OpenVPN actúa como una puerta de enlace segura a Internet para un cliente.
Para esta configuración, hemos utilizado tres máquinas, la primera actúa como servidor OpenVPN y las otras dos (Linux y Windows) actúan como clientes para conectarse al servidor OpenVPN remoto.
Nota: Las mismas instrucciones también funcionan en sistemas RHEL/CentOS 6 y Fedora.
Instalación del servidor OpenVPN
Para instalar OpenVPN en un servidor RHEL/CentOS 7, primero deberá habilitar el repositorio EPEL y luego instalar el paquete, junto con easy-rsa, un pequeño paquete de administración de claves RSA que se utiliza principalmente para la administración de claves y también para crear certificados web.
# yum update && yum install epel-release # yum install openvpn easy-rsa
Cuando se complete la instalación, diríjase al directorio de archivos de configuración de muestra:
# cd /usr/share/doc/openvpn-*/sample/sample-config-files/
y copie el archivo server.conf en/etc/openvpn:
# cp server.conf /etc/openvpn
Ahora estamos listos para comenzar a configurar el servidor.
Generar claves y certificados
El paquete easy-rsa proporciona varios scripts como utilidades, ubicados dentro de /usr/share/easy-rsa/2.0 después de la instalación, para generar claves y certificados. Para nuestra conveniencia, vamos a copiar esos archivos en/etc/openvpn/rsa (primero debe crear este directorio). Ingrese y si se le solicita que sobrescriba los archivos existentes:
# mkdir /etc/openvpn/rsa # cp –rf /usr/share/easy-rsa/2.0/* /etc/openvpn/rsa

A continuación, usaremos los parámetros en/etc/openvpn/rsa/vars para indicar los valores de nuestras claves y certificados. Cambie los valores según sus necesidades (los campos se explican por sí mismos):
export KEY_SIZE=2048 export CA_EXPIRE=365 export KEY_EXPIRE=365 export KEY_COUNTRY=AR export KEY_PROVINCE=SL export KEY_CITY="VillaMercedes" export KEY_ORG="Tecmint.com" export KEY_EMAIL="[email protected]" export KEY_NAME="GabrielCanepa"
Y obtenga el archivo para exportar las variables y sus valores al entorno actual (los necesitará en el siguiente paso). Verá un mensaje que le informa el propósito del script de limpieza total (también presente en el mismo directorio):
# source ./vars

Ahora ejecute los siguientes scripts desde el directorio de claves, en el orden especificado.
# ./clean-all
El script build-ca creará una Autoridad de certificación (certificado + clave) en/etc/openvpn/rsa/keys. Presione Enter para aceptar los valores predeterminados:
./build-ca

A continuación, crearemos la clave y el certificado para el propio servidor. Como antes, acepte los valores predeterminados y luego presione y para confirmar la firma del certificado:
# ./build-key-server server

A continuación, genere el archivo Diffie-Hellman que se usa para el intercambio de información para complementar RSA (esto llevará bastante tiempo). Esto creará un archivo llamado dh2048.pem dentro de/etc/openvpn/rsa/keys:
./build-dh
Finalmente, cree archivos de certificado separados para cada cliente que usará su servidor VPN (cambie el nombre de cliente a su elección):
# ./build-key client
El paso anterior creará un certificado y una clave para un cliente. Siga los mismos pasos que antes para completar el proceso. Más adelante en este tutorial, descargaremos estos archivos a un cliente que los usará para conectarse al servidor VPN.
Configuración del servidor OpenVPN
Ahora profundicemos en /etc/openvpn/server.conf:
1. Especifique la longitud de los parámetros Diffie-Hellman. No utilice un valor inferior a 2048 si no desea exponerse a amenazas de seguridad:
dh /etc/openvpn/rsa/keys/dh2048.pem
2. Todo el tráfico de IP (como la navegación web y las búsquedas de DNS) debe pasar por la VPN. Asegúrese de que la siguiente línea no esté comentada:
push "redirect-gateway def1 bypass-dhcp"
3. Como consecuencia del n. ° 2, debe especificar al menos dos servidores DNS que se utilizarán para resolver nombres. Los predeterminados los proporciona opendns.org y puede usarlos o los de Google (8.8.8.8 y 8.8.4.4):
push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220"
4. Finalmente, como medida de seguridad, nos aseguraremos de que openvpn se ejecute con el mínimo de privilegios cambiando el usuario y el grupo a nadie:
user nobody group nobody
También necesitamos permitir el tráfico vpn a través del firewalld y habilitar el enmascaramiento:
# firewall-cmd --permanent --add-service=openvpn # firewall-cmd --add-service=openvpn # firewall-cmd --permanent --add-masquerade # firewall-cmd --add-masquerade
Y copie el certificado y los archivos de clave en/etc/openvpn (el siguiente comando asume que su directorio de trabajo actual es/etc/openvpn/rsa/keys):
# cp ca.crt server.crt server.key ../../
Luego habilite el servicio:
# systemctl -f enable [email protected] # systemctl start [email protected]
En este punto, es una buena idea verificar el estado del servicio.
# systemctl -l status [email protected]
Si no pudo comenzar,
# journalctl --xn
proporcionará la información de depuración necesaria para solucionar cualquier problema.