OpenVPN crea un túnel encriptado entre dos puntos, evitando que un tercero acceda a su tráfico de red. Al configurar su servidor de red privada virtual (VPN), se convierte en su propio proveedor de VPN. Muchos servicios populares de VPN ya usan OpenVPN, entonces, ¿por qué vincular su conexión a un proveedor específico cuando puede tener el control total?
El primer artículo de esta serie demostró cómo instalar y configurar una PC con Linux para que funcione como su servidor OpenVPN. También discutió cómo configurar su enrutador para que pueda acceder a su servidor VPN desde una red externa.
Este segundo artículo demuestra cómo instalar el software del servidor OpenVPN siguiendo los pasos personalizados de la wiki de OpenVPN.
Instalar OpenVPN
Primero, instale OpenVPN y easy-rsa
aplicación (para ayudarlo a configurar la autenticación en su servidor) usando su administrador de paquetes. Este ejemplo usa Fedora Linux; si ha elegido algo diferente, use el comando apropiado para su distribución:
$ sudo dnf install openvpn easy-rsa
Esto crea algunos directorios vacíos:
/etc/openvpn
/etc/openvpn/client
/etc/openvpn/server
Si no se crean durante la instalación, créelos manualmente.
Configurar autenticación
OpenVPN depende del easy-rsa
guiones y debe tener su propia copia de ellos. Copie el easy-rsa
guiones y archivos:
$ sudo mkdir /etc/openvpn/easy-rsa
$ sudo cp -rai /usr/share/easy-rsa/3/* \
/etc/openvpn/easy-rsa/
Más recursos de Linux
- Hoja de trucos de los comandos de Linux
- Hoja de trucos de comandos avanzados de Linux
- Curso en línea gratuito:Descripción general técnica de RHEL
- Hoja de trucos de red de Linux
- Hoja de trucos de SELinux
- Hoja de trucos de los comandos comunes de Linux
- ¿Qué son los contenedores de Linux?
- Nuestros últimos artículos sobre Linux
La autenticación es importante y OpenVPN se la toma muy en serio. La teoría es que si Alice necesita acceder a información privada dentro de la empresa de Bob, es vital que Bob se asegure de que Alice realmente es Alice. Asimismo, Alice debe asegurarse de que Bob sea realmente Bob. A esto lo llamamos autenticación mutua.
Las mejores prácticas de hoy verifican un atributo a partir de dos de tres factores posibles:
- Algo que tienes
- Algo que sabes
- Algo que eres
Hay muchas opciones. Esta configuración de OpenVPN utiliza:
- Certificados: Algo que tienen tanto el cliente como el servidor
- Contraseña del certificado: Algo que la gente sabe
Alice y Bob necesitan ayuda para autenticarse mutuamente. Dado que ambos confían en Cathy, Cathy asume un rol llamado autoridad certificadora (CALIFORNIA). Cathy da fe de que tanto Alice como Bob son quienes dicen ser. Debido a que tanto Alice como Bob confían en Cathy, ahora también confían el uno en el otro.
Pero, ¿qué convence a Cathy de que Alice y Bob realmente son Alice y Bob? La reputación de Cathy en la comunidad depende de hacer esto bien, por lo que si quiere que Danielle, Evan, Fiona, Greg y otros también confíen en ella, probará rigurosamente las afirmaciones de Alice y Bob. Después de que Alice y Bob convencen a Cathy de que realmente son Alice y Bob, Cathy firma certificados para que los compartan entre ellos y con el mundo.
¿Cómo saben Alice y Bob que Cathy, y no alguien que se hace pasar por ella, firmó los certificados? Usan una tecnología llamada criptografía de clave pública:
- Encuentre un algoritmo criptográfico que cifre con una clave y descifre con otra.
- Declare una clave privada y comparta la otra clave con el público.
- Cathy comparte su clave pública y una copia en texto claro de su firma con el mundo.
- Cathy cifra su firma con su clave privada. Cualquiera puede descifrarlo con su clave pública.
- Si la firma descifrada de Cathy coincide con la copia de texto claro, Alice y Bob pueden confiar en que Cathy realmente la firmó.
Utiliza esta misma tecnología cada vez que compra bienes y servicios en línea.
Implementar autenticación
La documentación de OpenVPN sugiere configurar una CA en un sistema separado o al menos en un directorio separado en el servidor OpenVPN. La documentación también sugiere generar certificados de servidor y cliente desde el servidor y los clientes. Debido a que esta es una configuración simple, puede usar el servidor OpenVPN como su propia CA y colocar los certificados y claves en directorios específicos en el servidor.
Genere certificados desde el servidor y cópielos en cada cliente como parte de la configuración del cliente.
Esta implementación utiliza certificados autofirmados. Esto funciona porque el servidor confía en sí mismo y los clientes confían en el servidor. Por lo tanto, el servidor es la mejor CA para firmar certificados.
Desde el servidor OpenVPN, configure la CA:
$ sudo mkdir /etc/openvpn/ca
$ cd /etc/openvpn/ca
$ sudo /etc/openvpn/easy-rsa/easyrsa init-pki
$ sudo /etc/openvpn/easy-rsa/easyrsa build-ca
Utilice una frase de contraseña fácil de recordar pero difícil de adivinar.
Configure el par de claves del servidor y la solicitud de certificado:
$ cd /etc/openvpn/server
$ sudo /etc/openvpn/easy-rsa/easyrsa init-pki
$ sudo /etc/openvpn/easy-rsa/easyrsa gen-req OVPNserver2020 nopass
En este ejemplo, OVPNServer2020
es el nombre de host que le asignó a su servidor OpenVPN en el primer artículo de esta serie.
Generar y firmar certificados
Ahora debe enviar una solicitud de servidor a la CA y generar y firmar el certificado del servidor.
Este paso esencialmente copia el archivo de solicitud de /etc/openvpn/server/pki/reqs/OVPNserver2020.req
a /etc/openvpn/ca/pki/reqs/OVPNserver2020.req
para prepararlo para su revisión y firma:
$ cd /etc/openvpn/ca
$ sudo /etc/openvpn/easy-rsa/easyrsa \
import-req /etc/openvpn/server/pki/reqs/OVPNserver2020.req OVPNserver2020
Revisar y firmar la solicitud
Ha generado una solicitud, por lo que ahora debe revisar y firmar los certificados:
$ cd /etc/openvpn/ca
$ sudo /etc/openvpn/easy-rsa/easyrsa \
show-req OVPNserver2020
Regístrate como el servidor:
$ cd /etc/openvpn/ca
$ sudo /etc/openvpn/easy-rsa/easyrsa \
sign-req server OVPNserver2020
Coloque una copia del servidor y los certificados de CA donde pertenecen para que el archivo de configuración los recoja:
$ sudo cp /etc/openvpn/ca/pki/issued/OVPNserver2020.crt \
/etc/openvpn/server/pki/
$ sudo cp /etc/openvpn/ca/pki/ca.crt \
/etc/openvpn/server/pki/
A continuación, genere parámetros Diffie-Hellman para que los clientes y el servidor puedan intercambiar claves de sesión:
$ cd /etc/openvpn/server
$ sudo /etc/openvpn/easy-rsa/easyrsa gen-dh
Casi allí
El siguiente artículo de esta serie demostrará cómo configurar e iniciar el servidor OpenVPN que acaba de crear.
Este artículo se basa en el blog de D. Greg Scott y se reutiliza con permiso.