Introducción
Una Red Privada Virtual (VPN) encripta todo el tráfico de la red, enmascarando a los usuarios y protegiéndolos de redes no confiables. Puede proporcionar una conexión segura a la red de una empresa, eludir las restricciones geográficas y permitirle navegar por la web utilizando redes Wi-Fi públicas manteniendo la privacidad de sus datos.
OpenVPN es una solución VPN de capa de sockets seguros (SSL) de código abierto y con todas las funciones.
En este tutorial, aprenderá cómo configurar OpenVPN en un servidor CentOS 7 y conectarse a OpenVPN desde una máquina cliente.
Requisitos previos
- Un servidor CentOS 7 o CentOS 8
- Una cuenta de usuario con acceso raíz (sudo)
- Acceso a la línea de comandos/ventana de terminal
- Un dominio o subdominio que se resuelve en su servidor
- Una máquina cliente desde la cual se conectará al servidor OpenVPN
Paso 1:Instalar OpenVPN
1. Actualice los repositorios y paquetes de CentOS ejecutando:
yum update -y
2. No puede descargar el paquete OpenVPN de los repositorios predeterminados de CentOS. Sin embargo, OpenVPN está disponible en el repositorio Extra Packages for Enterprise Linux (EPEL). Para habilitar el repositorio EPEL, ejecute el comando:
yum install epel-release -y
3. Actualice los repositorios nuevamente:
yum update -y
4. Ahora puede instalar OpenVPN con el comando:
yum install -y openvpn
Paso 2:Instale Easy RSA
El siguiente paso es construir una infraestructura de clave pública (PKI). Para hacer esto, necesita instalar easy RSA , una utilidad CLI para crear y administrar una autoridad de certificación (CA) de PKI.
Easy RSA lo ayuda a configurar una autoridad de certificación interna (CA) y generar pares de claves SSL para asegurar las conexiones VPN.
1. Para descargar el paquete Easy RSA, utilice wget
dominio. Si no tiene wget en su sistema CenOS, instálelo ejecutando:
yum install -y wget
2. Al momento de escribir, la última versión de la utilidad CLI es 3.0.8, que descargaremos. Para usar otra versión, consulte la página de lanzamiento de Easy RSA en GitHub.
wget https://github.com/OpenVPN/easy-rsa/archive/v3.0.8.tar.gz
3. A continuación, extraiga el archivo descargado:
tar -xf v3.0.8.tar.gz
4. Cree y muévase a un nuevo openvpn directorio:
cd /etc/openvpn/
5. Luego, cree un subdirectorio easy-rsa
en la ruta /etc/openvpn
:
mkdir /etc/openvpn/easy-rsa
6. Mueva el directorio extraído a /etc/openvpn/easy-rsa:
mv /root/easy-rsa-3.0.8 /etc/openvpn/easy-rsa
Para verificar si ha movido correctamente todo desde easy-rsa-3.0.8 directorio, acceda a easy-rsa con cd /etc/openvpn/easy-rsa
y enumere el contenido con ls
. Debería ver una lista de archivos y carpetas, como en la imagen a continuación.
Paso 3:configurar OpenVPN
Una vez que haya instalado OpenVPN y Easy RSA, puede continuar con la configuración del servidor OpenVPN.
Las instrucciones de esta sección le ayudarán a establecer la configuración básica. Puede modificarlo según sus necesidades.
Antes de ejecutar cualquiera de los comandos, asegúrese de volver al directorio raíz. Para hacerlo, escriba cd
en la ventana de la terminal y pulsa Intro .
1. El primer paso es copiar el ejemplo server.conf archivo del directorio de documentación de OpenVPN:
cp /usr/share/doc/openvpn-2.4.9/sample/sample-config-files/server.conf /etc/openvpn
Si no puede encontrar el archivo de configuración de muestra de OpenVPN, busque su ubicación mediante find
comando:
find / -name server.conf
2. Luego, abra el archivo de configuración copiado con un editor de texto de su elección:
vi etc/openvpn/server.conf
El comando abre el archivo de configuración de muestra de OpenVPN. Los comentarios en el archivo comienzan con un hashtag # o un punto y coma ;
.
3. Para establecer la configuración básica, debe quitar el comentario las siguientes líneas eliminando los puntos y comas.
topology subnet
(hace que la instalación de OpenVPN funcione como una subred)push "redirect-gateway def1 bypass-dhcp"
(le indica al cliente que redirija el tráfico a través del servidor OpenVPN)push "dhcp-option DNS 208.67.222.222"
(usa un sistema de resolución de OpenDNS para conectarse a OpenVPN)push "dhcp-option DNS 208.67.220.220"
(usa un sistema de resolución de OpenDNS para conectarse a OpenVPN)user nobody
(ejecuta OpenVPN sin privilegios)group nobody
(ejecuta OpenVPN sin privilegios)
4. Luego, genere una clave de cifrado estática para habilitar la autenticación TLS. Para hacer eso, busque la línea tls-auth ta.key 0
y comentarlo agregando ;
en frente de eso. Luego, agrega una nueva línea debajo:
tls-crypt myvpn.tlsauth
5. Guarde y salga del archivo de configuración.
6. Finalmente, genere la clave de cifrado estática especificada en el archivo con el comando:
openvpn --genkey --secret /etc/openvpn/myvpn.tlsauth
Paso 4:generar claves y certificados
1. Crea un vars archivo de configuración usando vars.example almacenado en el /easy-rsa/easyrsa3 directorio. Mover al directorio mencionado con:
cd /etc/openvpn/easy-rsa/easyrsa3
2. Puede listar los contenidos usando ls
comando para verificar si tiene el vars.example archivo.
3. Copie el archivo de muestra vars.example bajo el nombre vars :
cp vars.example vars
Si vuelve a enumerar los archivos en el directorio, debería tener un vars separado archivo que puede usar para configurar Easy RSA.
4. Abra las vars archivo en un editor de texto de su elección:
vi vars
5. Desplácese por el archivo y busque las líneas que se enumeran a continuación.
#set_var EASYRSA_REQ_COUNTRY "US"
#set_var EASYRSA_REQ_PROVINCE "California"
#set_var EASYRSA_REQ_CITY "San Francisco"
#set_var EASYRSA_REQ_ORG "Copyleft Certificate Co"
#set_var EASYRSA_REQ_EMAIL "[email protected]"
#set_var EASYRSA_REQ_OU "My Organizational Unit"
6. Descomente las líneas eliminando #
y reemplace los valores predeterminados con su información.
7. Luego, busque la línea que especifica el KEY_NAME y cámbielo a "server"
:
export KEY_NAME="server"
8. Finalmente, cambie KEY_CN al dominio o subdominio que se resuelve en su servidor.
export KEY_CN=openvpn.yourdomain.com
9. Guarde y cierre el archivo.
10. Limpie las claves anteriores y genere la autoridad de certificación:
./easyrsa clean-all
11. Ahora, puede continuar con la creación de la autoridad de certificación con build-ca
texto. Ejecute el comando:
./easyrsa build-ca
Se le pedirá que establezca una frase de contraseña de clave de CA y un nombre común para su CA.
12. Cree una clave y un certificado para el servidor:
./easyrsa build-server-full server
13. A continuación, genere un archivo de intercambio de claves Diffie-Hellman ejecutando:
./easyrsa gen-dh
14. También necesita un certificado para cada cliente. Génelos en el servidor y luego cópielos en la máquina cliente.
Con el siguiente comando, creamos un certificado y una clave para client1 . Puede modificar el comando usando un nombre de su elección.
./easyrsa build-client-full client1
15. Una vez que haya generado las claves y certificados, cópielos desde pki en openvpn directorio. Para hacerlo, vaya a pki directorio ejecutando:
cd /etc/openvpn/easy-rsa/easyrsa3/pki
Necesitas copiar cuatro archivos en total:
- ca.crt
- dh.pem
- ca.clave
- servidor.clave
Los primeros dos archivos (ca.crt y dh.pem ) se almacenan en el pki directorio, mientras que ca.key y servidor.clave están en un subdirectorio pki/private .
Por lo tanto, copie ca.crt y dh.pem en openvpn directorio primero:
cp ca.crt dh.pem /etc/openvpn
Luego, vaya al subdirectorio privado y copie ca.key y servidor.clave ejecutando:
cd private
cp ca.key server.key/etc/openvpn
Paso 5:Configuración de enrutamiento y cortafuegos
Establecer reglas de cortafuegos
1. Comience por verificar su zona de firewall activa:
firewall-cmd --get-active-zones
La salida mostrará su zona cortafuegos. En el siguiente ejemplo, es público .
2. Agrega el openvpn service a la lista de servicios que firewalld permite dentro de la zona activa. La zona activa en nuestro ejemplo es public . Si su zona activa es de confianza, modifique el comando en consecuencia.
firewall-cmd --zone=public --add-service openvpn
3. A continuación, haga que la configuración anterior sea permanente ejecutando el comando:
firewall-cmd --zone=public --add-service openvpn --permanent
4. Para verificar si se agregó el servicio openvpn, use:
firewall-cmd --list-services --zone=public
5. Luego, agregue una máscara a la instancia de tiempo de ejecución:
firewall-cmd --add-masquerade
6. Y hazlo permanente:
firewall-cmd --add-masquerade --permanent
7. Verifique que se agregó el enmascaramiento ejecutando:
firewall-cmd --query-masquerade
La salida debe responder con yes
.
Enrutamiento de la configuración
Una vez que haya completado los pasos anteriores, continúe con el enrutamiento a su subred OpenVPN.
1. Cree una variable que represente la interfaz de red principal utilizada por su servidor. En el siguiente comando, la variable se llama VAR
. Sin embargo, puede crear una variable con el nombre que desee.
VAR=$(ip route get 208.67.222.222 | awk 'NR==1 {print $(NF-2)}')
2. A continuación, agregue permanentemente la regla de enrutamiento utilizando la variable creada anteriormente:
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o $VAR -j MASQUERADE
3. Vuelva a cargar firewalld para que se realicen los cambios:
firewall-cmd --reload
4. Pase a enrutar todo el tráfico web desde el cliente a la dirección IP del servidor habilitando el reenvío de IP. Abra el sysctl.conf archivo:
vi /etc/sysctl.conf
5. Agregue la siguiente línea en la parte superior del archivo:
net.ipv4.ip_forward = 1
6. Finalmente, reinicie el servicio:
systemctl restart network.service
Paso 6:Inicie OpenVPN
1. Para iniciar el servicio OpenVPN, ejecute el comando:
systemctl -f start [email protected]
2. Luego, habilítelo para que se inicie en el arranque ejecutando:
systemctl -f enable [email protected]
3. Verifica que el servicio esté activo con:
systemctl status [email protected]
El resultado debe responder que el servicio OpenVPN para el servidor está activo (ejecutándose) .
Paso 7:configurar un cliente OpenVPN
Con todo configurado en el servidor OpenVPN, puede configurar su máquina cliente y conectarla al servidor.
Como se mencionó en el Paso 4, cada máquina cliente debe tener copias locales del certificado CA, la clave del cliente, el certificado SSL y la clave de cifrado.
1. Busque y copie los siguientes archivos del servidor a la máquina cliente:
- /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt
- /etc/openvpn/easy-rsa/easyrsa3/pki/client.crt
- /etc/openvpn/easy-rsa/easyrsa3/pki/private/client.key
- /etc/openvpn/myvpn.tlsauth
2. Luego, cree un archivo de configuración para el cliente OpenVPN con el nombre client.ovpn en la máquina cliente:
vi client.ovpn
3. Agregue el siguiente contenido al archivo:
client
tls-client
ca /path/to/ca.crt
cert /path/to/client.crt
key /path/to/client.key
tls-crypt /path/to/myvpn.tlsauth
remote-cert-eku "TLS Web Client Authentication"
proto udp
remote your_server_ip 1194 udp
dev tun
topology subnet
pull
user nobody
group nobody
Asegúrese de reemplazar las partes en negrita con sus valores respetados.
4. Guarde y cierre el archivo.
Paso 8:Conectar un cliente a OpenVPN
Las instrucciones sobre cómo conectarse a OpenVPN difieren según el sistema operativo de su máquina cliente.
Para usuarios de Linux
Para conectarse a OpenVPN, ejecute el comando:
openvpn --config /path/to/client.ovpn
Para usuarios de Windows
1. Primero, copia el client.ovpn archivo de configuración en C:Program FilesOpenVPNconfig directorio.
2. Descargue e instale la aplicación OpenVPN. Puede encontrar la versión más reciente en la página de descargas de la comunidad de OpenVPN. Una vez que haya instalado la aplicación, inicie OpenVPN.
3. Haga clic con el botón derecho en el icono de la bandeja del sistema de OpenVPN y seleccione Conectar . Para realizar esta tarea, necesita privilegios administrativos.
Para usuarios de macOS
Puede conectarse a OpenVPN desde un sistema macOS mediante Tunnelblick (una interfaz gráfica de usuario de código abierto para OpenVPN en OS X y macOS).
Antes de iniciar Tunnelblick, asegúrese de almacenar el client.ovpn archivo de configuración en el directorio ~/Library/Application Support/Tunnelblick/Configurations .