Literalmente, hay una lista de razones por las que es posible que desee utilizar una VPN, pero mantener sus datos seguros es el número 1 en nuestra lista.
Y si bien hay algunos servicios VPN de pago que son bastante fáciles de usar en su billetera …
Si está tratando de mantener sus datos seguros, ¿por qué confiaría en ellos a una empresa súper secreta que puede o no tener conexiones con las operaciones de minería de datos ?
Respuesta: no deberías.
Especialmente cuando es tan fácil y económico configurar su propia VPN rápida en su SSD Nodes VPS.
Así que hoy, le mostraremos cómo instalar OpenVPN en Debian 10 para mantener sus datos verdaderamente seguros.
Requisitos previos para instalar OpenVPN en Debian 10
Dos VPS que ejecutan Debian 10, uno para alojar el servicio OpenVPN y otro para servir como su Autoridad de certificación (CA). No se recomienda usar su servidor OpenVPN como su CA, esto abre su VPN a las vulnerabilidades de seguridad.
Una cuenta regular (no root) con privilegios de sudo. Consulte nuestro tutorial de claves SSH para obtener más información.
NOTA: Si deshabilita la autenticación de contraseña mientras configura estos servidores, puede tener dificultades al transferir archivos entre ellos más adelante en esta guía. Para resolver este problema, puede volver a habilitar la autenticación de contraseña en cada servidor. O bien, puede generar un par de claves SSH para cada servidor, luego agregar la clave SSH pública del servidor OpenVPN al archivo autorizado de claves de la máquina de CA y viceversa.
¿Cuál es la MEJOR OFERTA en el alojamiento en la nube?
Desarrolle a alta velocidad con un VPS de rendimiento de nodos SSD. DOBLAMOS la cantidad de almacenamiento NVMe increíblemente rápido en nuestro plan más popular y reforzamos la oferta de CPU en estos planes. No hay nada más parecido en el mercado, al menos no a estos precios.
¡Obtenga un VPS de rendimiento de 16GB con 160GB de almacenamiento NVMe por solo $ 89 / año por tiempo limitado!
¡Obtén ofertas por tiempo limitado! ⚡
Paso 1: Instale OpenVPN y EasyRSA
Comencemos actualizando nuestro aptcaché e instalándolo openvpn.
$ sudo apt update
$ sudo apt install openvpn
OpenVPN utiliza SSL / TLS para la autenticación y el intercambio de claves para cifrar el tráfico entre el servidor y los clientes.
Para emitir certificados de confianza, configurará su autoridad de certificación (CA) simple. Para hacer esto, descargaremos la última versión de EasyRSA, que usaremos para construir nuestra infraestructura de clave pública (PKI) de CA, desde el repositorio oficial de GitHub del proyecto .
NOTE:Se recomienda mantener el servidor de CA apagado cuando no se utilice para firmar claves como medida de precaución adicional.
Para comenzar a construir la infraestructura de CA y PKI, utilice wgetpara descargar la última versión de EasyRSA tanto en su máquina de CA como en su servidor OpenVPN .
wget -P ~/ https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.6/EasyRSA-unix-v3.0.6.tgz
Luego extrae el tarball:
cd ~
tar xvf EasyRSA-unix-v3.0.6.tgz
Ha instalado con éxito todo el software requerido en su servidor y máquina CA. Continúe para configurar las variables utilizadas por EasyRSA y para configurar un directorio de CA, desde el cual generará las claves y certificados necesarios para que su servidor y sus clientes accedan a la VPN.
Paso 2: configuración de las variables de EasyRSA y creación de la CA
EasyRSA viene instalado con un archivo de configuración que puede editar para definir una serie de variables para su CA.
En su máquina CA , navegue al directorio EasyRSA:
cd ~/EasyRSA-v3.0.6/
Podemos utilizar la plantilla haciendo una copia de un archivo existente en este directorio y renombrándolo :easy-rsavars.examplevars
cp vars.example vars
Necesitamos editar algunas de las variables que ayudan a decidir cómo crear los certificados. Use nano
, u otro editor favorito, para abrir el archivo. Vamos a editar algunas variables hacia el final del archivo.
nano vars
Encuentre la configuración que establece los valores predeterminados de campo para los nuevos certificados. Se verá algo como esto:
#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 "me@example.net"
#set_var EASYRSA_REQ_OU "My Organizational Unit"
Descomente estas líneas y actualice los valores resaltados a lo que prefiera, pero no los deje en blanco:
set_var EASYRSA_REQ_COUNTRY "MX"
set_var EASYRSA_REQ_PROVINCE "Sinaloa"
set_var EASYRSA_REQ_CITY "Mazatlan"
set_var EASYRSA_REQ_ORG "FIMaz"
set_var EASYRSA_REQ_EMAIL "dsantana@fimaz.net"
set_var EASYRSA_REQ_OU "TI"
Cuando haya terminado, guarde y cierre el archivo.
Dentro del directorio EasyRSA hay un script llamado easyrsa
que se llama para realizar una variedad de tareas relacionadas con la construcción y administración de la CA. Ejecute este script con la init-pki
opción de iniciar la infraestructura de clave pública en el servidor de CA:
./easyrsa init-pki
Output
. . .
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /home/debian/EasyRSA-v3.0.6/pki
Después de esto, easyrsa
vuelva a llamar al script, siguiéndolo con la build-ca
opción. Esto creará la CA y creará dos archivos importantes, ca.crt
y ca.key
que conforman los lados público y privado de un certificado SSL.
ca.crt
es el archivo de certificado público de la CA que, en el contexto de OpenVPN, el servidor y el cliente usan para informarse mutuamente que son parte de la misma red de confianza y no alguien que realiza un ataque de hombre en el medio. Por esta razón, su servidor y todos sus clientes necesitarán una copia delca.crt
archivo.ca.key
es la clave privada que la máquina de CA usa para firmar claves y certificados para servidores y clientes. Si un atacante obtiene acceso a su CA y, a su vez, a suca.key
archivo, podrá firmar solicitudes de certificados y acceder a su VPN, lo que impide su seguridad. Es por eso que suca.key
archivo solo debe estar en su máquina CA y que, idealmente, su máquina CA debe mantenerse fuera de línea cuando no se firman las solicitudes de certificado como medida de seguridad adicional.
Si no desea que se le solicite una contraseña cada vez que interactúa con su CA, puede ejecutar el build-ca
comando con la nopass
opción, como esta:
./easyrsa build-ca nopass
En la salida, se le pedirá que confirme el nombre común para su CA:
Output
. . .
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:
El nombre común es el nombre utilizado para referirse a esta máquina en el contexto de la autoridad de certificación. Puede ingresar cualquier cadena de caracteres para el nombre común de la CA pero, por simplicidad, presione ENTER
para aceptar el nombre predeterminado.
Con eso, su CA está en su lugar y está lista para comenzar a firmar solicitudes de certificados.
Paso 3: creación del certificado del servidor, la clave y los archivos de cifrado
Ahora que tiene una CA lista para funcionar, puede generar una clave privada y una solicitud de certificado desde su servidor y luego transferir la solicitud a su CA para que se firme, creando el certificado requerido. También es libre de crear algunos archivos adicionales utilizados durante el proceso de cifrado.
Comience navegando al directorio EasyRSA en su servidor OpenVPN :
cd EasyRSA-v3.0.6/
A partir de ahí, ejecute el easyrsa
script con la init-pki
opción. Aunque ya ejecutó este comando en la máquina de CA, es necesario ejecutarlo aquí porque su servidor y CA tendrán directorios PKI separados:
./easyrsa init-pki
Luego easyrsa
, vuelva a llamar al script, esta vez con la gen-req
opción seguida de un nombre común para la máquina. Una vez más, esto podría ser lo que quiera, pero puede ser útil para que sea algo descriptivo. A lo largo de este tutorial, el nombre común del servidor OpenVPN será simplemente «servidor». Asegúrese de incluir también la nopass
opción. De lo contrario, protegerá con contraseña el archivo de solicitud, lo que podría provocar problemas de permisos más adelante:
NOTA: Si elige un nombre que no sea «servidor» aquí, deberá ajustar algunas de las instrucciones a continuación. Por ejemplo, al copiar los archivos generados en el /etc/openvpn
directorio, deberá sustituir los nombres correctos. También tendrá que modificar el /etc/openvpn/server.conf
archivo posteriormente a punto para el correcto .crt
y .key
archivos.
./easyrsa gen-req server nopass
Esto creará una clave privada para el servidor y un archivo de solicitud de certificado llamado server.req
. Copie la clave del servidor en el directorio /etc/openvpn/
:
sudo cp ~/EasyRSA-v3.0.6/pki/private/server.key /etc/openvpn/
Usando un método seguro (como SCP, en nuestro ejemplo a continuación), transfiera el archivo vpnserver.req
a su máquina CA:
scp ~/EasyRSA-v3.0.6/pki/reqs/server.req debian@your_CA_ip:/tmp
A continuación, en su máquina CA , navegue al directorio EasyRSA:
cd EasyRSA-v3.0.6/
Utilizando easyrsa script
nuevamente, importe el archivo vpnserver.req
, siguiendo la ruta del archivo con su nombre común:
./easyrsa import-req /tmp/server.req server
Luego, firme la solicitud ejecutando el scrip easyrsa
con la opcion sign-req
, seguido del tipo de solicitud y el nombre común. El tipo de solicitud puede ser client
o server
, por lo tanto, para la solicitud de certificado del servidor OpenVPN, asegúrese de utilizar el tipo server
de solicitud:
./easyrsa sign-req server server
En la salida, se le pedirá que verifique que la solicitud proviene de una fuente confiable. Escriba yes
y presione ENTER
para confirmar esto:
You are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.
Request subject, to be signed as a server certificate for 1080 days:
subject=
commonName = server
Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
Si cifró su clave CA, se le pedirá su contraseña en este momento.
Luego, transfiera el certificado firmado a su servidor VPN utilizando un método seguro:
scp pki/issued/server.crt debian@your_server_ip:/tmp
Antes de cerrar sesión en su máquina CA, transfiera el archivo ca.crt
a su servidor también:
scp pki/ca.crt debian@your_server_ip:/tmp
Luego, vuelva a iniciar sesión en su servidor OpenVPN y copie los archivos server.crt
y ca.crt
en su directorio /etc/openvpn/
:
sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/
Luego navegue a su directorio EasyRSA:
cd EasyRSA-v3.0.6/
A partir de ahí, cree una clave fuerte de Diffie-Hellman para usar durante el intercambio de claves escribiendo:
./easyrsa gen-dh
Esto puede tardar unos minutos en completarse. Una vez que lo haga, genere una firma HMAC para fortalecer las capacidades de verificación de integridad TLS del servidor:
sudo openvpn --genkey --secret ta.key
Cuando finalice el comando, copie los dos archivos nuevos en su directorio /etc/openvpn/
:
sudo cp ~/EasyRSA-v3.0.6/ta.key /etc/openvpn/
sudo cp ~/EasyRSA-v3.0.6/pki/dh.pem /etc/openvpn/
Con eso, se han generado todos los archivos de certificados y claves que necesita su servidor. Está listo para crear los certificados y claves correspondientes que su máquina cliente utilizará para acceder a su servidor OpenVPN.
Paso 4: generar un certificado de cliente y un par de claves
Aunque puede generar una clave privada y una solicitud de certificado en su máquina cliente y luego enviarla a la CA para que la firme, esta guía describe un proceso para generar la solicitud de certificado en el servidor. El beneficio de esto es que podemos crear un script que generará automáticamente archivos de configuración del cliente que contienen todas las claves y certificados requeridos. Esto le permite evitar tener que transferir claves, certificados y archivos de configuración a los clientes y agiliza el proceso de unirse a la VPN.
Generaremos una sola clave de cliente y un par de certificados para esta guía. Si tiene más de un cliente, puede repetir este proceso para cada uno. Sin embargo, tenga en cuenta que deberá pasar un valor de nombre único al script para cada cliente. En este tutorial, se hace referencia al primer par de certificado / clave client1
.
Comience creando una estructura de directorio dentro de su directorio de inicio para almacenar el certificado del cliente y los archivos clave:
mkdir -p ~/client-configs/keys
Dado que los pares de certificado / clave de sus clientes y los archivos de configuración se almacenarán en este directorio, bloquee sus permisos como medida de seguridad:
chmod -R 700 ~/client-configs
Luego, regrese al directorio de EasyRSA y ejecute el scrip easyrsa
con las opciones gen-req
y nopass
, junto con el nombre común del cliente:
cd ~/EasyRSA-v3.0.6/
./easyrsa gen-req client1 nopass
Presione ENTER
para confirmar el nombre común. Luego, copie el archivo client1.key
en el directorio/client-configs/keys/
que creó anteriormente:
cp pki/private/client1.key ~/client-configs/keys/
Luego, transfiera el client1.req
archivo a su máquina CA utilizando un método seguro:
scp pki/reqs/client1.req debian@your_CA_ip:/tmp
Inicie sesión en su máquina de CA, navegue al directorio EasyRSA e importe la solicitud de certificado:
ssh debian@your_CA_ip
cd EasyRSA-v3.0.6/
./easyrsa import-req /tmp/client1.req client1
Luego, firme la solicitud como lo hizo para el servidor en el paso anterior. Esta vez, sin embargo, asegúrese de especificar el tipo de solicitud client
:
./easyrsa sign-req client client1
Cuando se le solicite, ingrese sí para confirmar que tiene la intención de firmar la solicitud de certificado y que proviene de una fuente confiable. obtendrías el siguiente resultado
Output
Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
Nuevamente, si cifró su clave de CA, se le solicitará su contraseña aquí.
Esto creará un archivo de certificado de cliente llamado client1.crt
. Transfiera este archivo nuevamente al servidor:
scp pki/issued/client1.crt debian@your_server_ip:/tmp
SSH de nuevo en su servidor OpenVPN y copie el certificado del cliente en el directorio /client-configs/keys/
:
cp /tmp/client1.crt ~/client-configs/keys/
A continuación, copie los archivos ca.crt
y también ta.key
en el directorio /client-configs/keys/
:
cp ~/EasyRSA-v3.0.6/ta.key ~/client-configs/keys/
sudo cp /etc/openvpn/ca.crt ~/client-configs/keys/
Con eso, los certificados y claves de su servidor y cliente se han generado y se almacenan en los directorios apropiados en su servidor. Todavía hay algunas acciones que deben realizarse con estos archivos, pero vendrán en un paso posterior. Por ahora, puede pasar a configurar OpenVPN en su servidor.
Paso 5: configuración del servicio OpenVPN
Ahora que se han generado los certificados y las claves de su cliente y servidor, puede comenzar a configurar el servicio OpenVPN para usar estas credenciales.
Comience copiando un archivo de configuración de OpenVPN de muestra en el directorio de configuración y luego extráigalo para usarlo como base para su configuración:
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
sudo gzip -d /etc/openvpn/server.conf.gz
Abra el archivo de configuración del servidor en su editor de texto preferido:
sudo nano /etc/openvpn/server.conf
Encuentre la sección HMAC buscando la directiva tls-auth
. Esta línea ya no debería estar comentada, pero si no lo está, elimine » ; «Para descomentarlo.
/etc/openvpn/server.conf
tls-auth ta.key 0 # This file is secret
A continuación, busque la sección sobre cifrados criptográficos buscando las cipher
líneas comentadas . El AES-256-CBC
cifrado ofrece un buen nivel de cifrado y está bien soportado. Una vez más, esta línea ya no debería estar comentada, pero si no lo está, simplemente elimine » ; «Precediéndolo:
/etc/openvpn/server.conf
cipher AES-256-CBC
Debajo de esto, agregue una auth
directiva para seleccionar el algoritmo de resumen de mensajes HMAC. Para esto, SHA256
es una buena opción:
/etc/openvpn/server.conf
auth SHA256
Luego, encuentre la línea que contiene una dh
directiva que define los parámetros de Diffie-Hellman. Debido a algunos cambios recientes realizados en EasyRSA, el nombre de archivo para la clave Diffie-Hellman puede ser diferente de lo que aparece en el archivo de configuración del servidor de ejemplo. Si es necesario, cambie el nombre del archivo que se muestra aquí quitando el 2048
para que se alinee con la clave que generó en el paso anterior:
/etc/openvpn/server.conf
dh dh.pem
Por último, encontrar las user
y group
los ajustes y quitar el “ ; «Al comienzo de cada una para descomentar estas líneas:
/etc/openvpn/server.conf
user nobody
group nogroup
Los cambios que ha realizado en el server.conf
archivo de muestra hasta este punto son necesarios para que OpenVPN funcione. Los cambios descritos a continuación son opcionales, aunque también son necesarios para muchos casos de uso comunes.
(Opcional) Empuje los cambios de DNS para redirigir todo el tráfico a través de la VPN
La configuración anterior creará la conexión VPN entre las dos máquinas, pero no obligará a ninguna conexión a usar el túnel. Si desea utilizar la VPN para enrutar todo su tráfico, es probable que desee enviar la configuración de DNS a las computadoras cliente.
Hay algunas directivas en el archivo server.conf
que debe cambiar para habilitar esta funcionalidad. Encuentra la seccion redirect-gateway
y elimina el punto y coma » ; «Desde el principio de la linea redirect-gateway
para descomentarla:
/etc/openvpn/server.conf
push "redirect-gateway def1 bypass-dhcp"
Justo debajo de esto, encuentre la dhcp-option
sección. Nuevamente, elimine el » ; «Desde delante de ambas líneas para descomentarlas:
/etc/openvpn/server.conf
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
Esto ayudará a los clientes a reconfigurar su configuración de DNS para usar el túnel VPN como puerta de enlace predeterminada.
(Opcional) Ajuste el puerto y el protocolo
Por defecto, el servidor OpenVPN usa el puerto 1194
y el protocolo UDP para aceptar conexiones de clientes. Si necesita usar un puerto diferente debido a los entornos de red restrictivos en los que se encuentran sus clientes, puede cambiar la port
opción. Si no está alojando contenido web en su servidor OpenVPN, el puerto 443
es una opción popular ya que generalmente se permite a través de reglas de firewall./etc/openvpn/server.conf
# Optional!
port 443
A menudo, el protocolo está restringido a ese puerto también. Si es así, cambie proto
de UDP a TCP:/etc/openvpn/server.conf
# Optional!
proto tcp
Si lo hace cambiar el protocolo de TCP, que tendrá que cambiar el explicit-exit-notify
valor de la directiva de 1
que 0
, ya que esta Directiva sólo es utilizado por UDP. Si no lo hace mientras usa TCP, se producirán errores al iniciar el servicio OpenVPN:/etc/openvpn/server.conf
# Optional!
explicit-exit-notify 0
Si no necesita usar un puerto y protocolo diferente, es mejor dejar estos dos ajustes como sus valores predeterminados.
(Opcional) Apunte a credenciales no predeterminadas
Si seleccionó un nombre diferente durante el ./build-key-server
comando anterior, modifique las líneas cert
y key
que ve para apuntar a los archivos .crt
y apropiados .key
. Si utilizó el nombre predeterminado, «servidor», esto ya está configurado correctamente:/etc/openvpn/server.conf
cert server.crt
key server.key
Cuando haya terminado, guarde y cierre el archivo.
Después de revisar y realizar los cambios necesarios en la configuración de OpenVPN de su servidor para su caso de uso específico, puede comenzar a hacer algunos cambios en la red de su servidor.
Paso 6 – Ajuste de la configuración de red del servidor
Hay algunos aspectos de la configuración de red del servidor que deben modificarse para que OpenVPN pueda enrutar correctamente el tráfico a través de la VPN. El primero de ellos es el reenvío de IP , un método para determinar dónde debe enrutarse el tráfico de IP. Esto es esencial para la funcionalidad VPN que proporcionará su servidor.
Ajuste la configuración predeterminada de reenvío de IP de su servidor modificando el /etc/sysctl.conf
archivo:
sudo nano /etc/sysctl.conf
En el interior, busque la línea comentada que se establece net.ipv4.ip_forward
. Elimine el carácter » # » del principio de la línea para descomentar esta configuración:/etc/sysctl.conf
net.ipv4.ip_forward=1
Guarde y cierre el archivo cuando haya terminado.
Para leer el archivo y ajustar los valores para la sesión actual, escriba:
sudo sysctl -p
Outputnet.ipv4.ip_forward = 1
Si siguió la guía de configuración inicial del servidor Debian 10 que figura en los requisitos previos, debe tener un firewall UFW en su lugar. Independientemente de si usa el firewall para bloquear el tráfico no deseado (lo que casi siempre debe hacer), para esta guía necesita un firewall para manipular parte del tráfico que ingresa al servidor. Algunas de las reglas del firewall deben modificarse para habilitar el enmascaramiento, un concepto de iptables que proporciona traducción dinámica de direcciones de red (NAT) sobre la marcha para enrutar correctamente las conexiones del cliente.
Antes de abrir el archivo de configuración del firewall para agregar las reglas de enmascaramiento, primero debe encontrar la interfaz de red pública de su máquina. Para hacer esto, escriba:
ip route | grep default
Su interfaz pública es la cadena que se encuentra dentro de la salida de este comando que sigue a la palabra «dev». Por ejemplo, este resultado muestra la interfaz nombrada eth0
, que se resalta a continuación:
Outputdefault via 203.0.113.1 dev eth0 proto static
Cuando tenga la interfaz asociada con su ruta predeterminada, abra el /etc/ufw/before.rules
archivo para agregar la configuración relevante:
sudo nano /etc/ufw/before.rules
Las reglas UFW generalmente se agregan usando el ufw
comando. Sin before.rules
embargo, las reglas enumeradas en el archivo se leen y se ponen en su lugar antes de cargar las reglas UFW convencionales. Hacia la parte superior del archivo, agregue las líneas resaltadas a continuación. Esto establecerá la política predeterminada para la POSTROUTING
cadena en la nat
tabla y enmascarará cualquier tráfico proveniente de la VPN. Recuerde reemplazar eth0
en la -A POSTROUTING
línea a continuación con la interfaz que encontró en el comando anterior:/etc/ufw/before.rules
#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
# ufw-before-input
# ufw-before-output
# ufw-before-forward
#
# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0 (change to the interface you discovered!)
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES
# Don't delete these required lines, otherwise there will be errors
*filter
. . .
Guarde y cierre el archivo cuando haya terminado.
A continuación, también debe indicarle a UFW que permita los paquetes reenviados de manera predeterminada. Para hacer esto, abra el /etc/default/ufw
archivo:
sudo nano /etc/default/ufw
En el interior, encuentre la DEFAULT_FORWARD_POLICY
directiva y cambie el valor de DROP
a ACCEPT
:/ etc / default / ufw
DEFAULT_FORWARD_POLICY="ACCEPT"
Guarde y cierre el archivo cuando haya terminado.
A continuación, ajuste el firewall en sí para permitir el tráfico a OpenVPN. Si no cambió el puerto y el protocolo en el /etc/openvpn/server.conf
archivo, deberá abrir el tráfico UDP al puerto 1194
. Si modificó el puerto y / o protocolo, sustituya los valores que seleccionó aquí.
Además, en caso de que no haya agregado el puerto SSH al completar el tutorial de requisitos previos, agréguelo aquí también:
sudo ufw allow 1194/udp
sudo ufw allow OpenSSH
Después de agregar esas reglas, deshabilite y vuelva a habilitar UFW para reiniciarlo y cargar los cambios de todos los archivos que ha modificado:
sudo ufw disable
sudo ufw enable
Su servidor ahora está configurado para manejar correctamente el tráfico de OpenVPN.
Paso 7: inicio y habilitación del servicio OpenVPN
Finalmente está listo para iniciar el servicio OpenVPN en su servidor. Esto se hace usando la utilidad systemd systemctl
.
Inicie el servidor OpenVPN especificando el nombre del archivo de configuración como una variable de instancia después del nombre del archivo de la unidad systemd. Se llama al archivo de configuración de su servidor , así que agréguelo al final del archivo de su unidad cuando lo llame:/etc/openvpn/server.conf
@server
sudo systemctl start openvpn@server
Vuelva a verificar que el servicio se haya iniciado correctamente escribiendo:
sudo systemctl status openvpn@server
Si todo salió bien, su salida se verá así:
Output● openvpn@server.service - OpenVPN connection to server
Loaded: loaded (/lib/systemd/system/openvpn@.service; disabled; vendor preset: enabled)
Active: active (running) since Wed 2019-07-17 03:39:24 UTC; 29s ago
Docs: man:openvpn(8)
https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
https://community.openvpn.net/openvpn/wiki/HOWTO
Main PID: 3371 (openvpn)
Status: "Initialization Sequence Completed"
Tasks: 1 (limit: 3587)
Memory: 1.2M
CGroup: /system.slice/system-openvpn.slice/openvpn@server.service
└─3371 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --config /etc/openvpn/server.conf --writepid /run/openvpn/
También puede verificar que la tun0
interfaz OpenVPN esté disponible escribiendo:
ip addr show tun0
Esto generará una interfaz configurada:
Output3: 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 peer 10.8.0.2/32 scope global tun0
valid_lft forever preferred_lft forever
inet6 fe80::dd60:3a78:b0ca:1659/64 scope link stable-privacy
valid_lft forever preferred_lft forever
Después de iniciar el servicio, habilítelo para que se inicie automáticamente en el arranque:
sudo systemctl enable openvpn@server
Su servicio OpenVPN ya está en funcionamiento. Sin embargo, antes de que pueda comenzar a usarlo, primero debe crear un archivo de configuración para la máquina cliente. Este tutorial ya explicaba cómo crear pares de certificado / clave para clientes, y en el siguiente paso demostraremos cómo crear una infraestructura que generará fácilmente archivos de configuración del cliente.
Paso 8: creación de la infraestructura de configuración del cliente
Crear archivos de configuración para clientes OpenVPN puede ser algo complicado, ya que cada cliente debe tener su propia configuración y cada uno debe alinearse con la configuración descrita en el archivo de configuración del servidor. En lugar de escribir un solo archivo de configuración que solo se puede usar en un cliente, este paso describe un proceso para construir una infraestructura de configuración del cliente que puede usar para generar archivos de configuración sobre la marcha. Primero creará un archivo de configuración «base» y luego creará un script que le permitirá generar archivos de configuración del cliente, certificados y claves únicos según sea necesario.
Comience creando un nuevo directorio donde almacenará los archivos de configuración del cliente dentro del directorio client-configs
que creó anteriormente:
mkdir -p ~/client-configs/files
A continuación, copie un archivo de configuración de cliente de ejemplo en el directorio client-configs
para usarlo como su configuración base:
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
Abra este nuevo archivo en su editor de texto:
nano ~/client-configs/base.conf
En el interior, ubique la remote
directiva. Esto señala al cliente a la dirección de su servidor OpenVPN: la dirección IP pública de su servidor OpenVPN. Si decidió cambiar el puerto en el que está escuchando el servidor OpenVPN, también deberá cambiar 1194
al puerto que seleccionó:
~ / client-configs / base.conf
. . .
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote your_server_ip 1194
. . .
Asegúrese de que el protocolo coincida con el valor que está utilizando en la configuración del servidor:
~ / client-configs / base.conf
proto udp
A continuación, descomente las directivas user
y group
eliminando el » ; «Al comienzo de cada línea:
~ / client-configs / base.conf
# Downgrade privileges after initialization (non-Windows only)
user nobody
group nogroup
Encuentra las directivas que establecen el ca
, cert
y key
. Comente estas directivas, ya que agregará los certificados y claves dentro del archivo en breve:
~ / client-configs / base.conf
# SSL/TLS parms.
# See the server config file for more
# description. It's best to use
# a separate .crt/.key file pair
# for each client. A single ca
# file can be used for all clients.
#ca ca.crt
#cert client.crt
#key client.key
Del mismo modo, comente la tls-auth
directiva, ya que agregará directamente ta.key
al archivo de configuración del cliente:
~ / client-configs / base.conf
# If a tls-auth key is used on the server
# then every client must also have the key.
#tls-auth ta.key 1
Refleje la configuración cipher
y auth
que establece en el archivo /etc/openvpn/server.conf
:
~ / client-configs / base.conf
cipher AES-256-CBC
auth SHA256
A continuación, agregue la key-direction
directiva en algún lugar del archivo. Usted debe ajustarlo a “1” para la VPN de funcionar correctamente en la máquina cliente:
~ / client-configs / base.conf
key-direction 1
Finalmente, agregue algunas líneas comentadas . Aunque puede incluir estas directivas en cada archivo de configuración del cliente, solo necesita habilitarlas para clientes Linux que se envían con un archivo /etc/openvpn/update-resolv-conf
. Este script usa la utilidad resolvconf
para actualizar la información de DNS para clientes Linux.
~ / client-configs / base.conf
# script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf
Si su cliente está ejecutando Linux y tiene un archico /etc/openvpn/update-resolv-conf
, descomente estas líneas del archivo de configuración del cliente después de que se haya generado.
Guarde y cierre el archivo cuando haya terminado.
Luego, cree una secuencia de comandos simple que compile su configuración base con los certificados, claves y archivos de cifrado relevantes y luego coloque la configuración generada en el directorio ~/client-configs/files
. Abra un nuevo archivo llamado make_config.sh
dentro del directorio ~/client-configs
:
nano ~/client-configs/make_config.sh
En el interior, agregue el siguiente contenido, asegurándose de cambiarlo debian
al de la cuenta de usuario no root de su servidor :~ / client-configs / make_config.sh
#!/bin/bash
# First argument: Client identifier
KEY_DIR=/home/debian/client-configs/keys
OUTPUT_DIR=/home/debian/client-configs/files
BASE_CONFIG=/home/debian/client-configs/base.conf
cat ${BASE_CONFIG} \
<(echo -e '<ca>') \
${KEY_DIR}/ca.crt \
<(echo -e '</ca>\n<cert>') \
${KEY_DIR}/${1}.crt \
<(echo -e '</cert>\n<key>') \
${KEY_DIR}/${1}.key \
<(echo -e '</key>\n<tls-auth>') \
${KEY_DIR}/ta.key \
<(echo -e '</tls-auth>') \
> ${OUTPUT_DIR}/${1}.ovpn
Guarde y cierre el archivo cuando haya terminado.
Antes de continuar, asegúrese de marcar este archivo como ejecutable escribiendo:
chmod 700 ~/client-configs/make_config.sh
Este script hará una copia del base.conf
archivo que creó, recopilará todos los archivos de certificados y claves que ha creado para su cliente, extraerá su contenido, los agregará a la copia del archivo de configuración base y exportará todo este contenido a un Nuevo archivo de configuración del cliente. Esto significa que, en lugar de tener que administrar la configuración del cliente, el certificado y los archivos de claves por separado, toda la información requerida se almacena en un solo lugar. El beneficio de esto es que si alguna vez necesita agregar un cliente en el futuro, simplemente puede ejecutar este script para crear rápidamente el archivo de configuración y asegurarse de que toda la información importante se almacene en una única ubicación de fácil acceso.
Tenga en cuenta que cada vez que agregue un nuevo cliente, deberá generar nuevas claves y certificados para poder ejecutar este script y generar su archivo de configuración. Aprenderá a usar este script en el siguiente paso.
Paso 9: generación de configuraciones de cliente
Si siguió la guía, creó un certificado de cliente y una clave llamada client1.crt
y client1.key
, respectivamente, en el Paso 4. Puede generar un archivo de configuración para estas credenciales moviéndose a su directorio ~/client-configs
y ejecutando el script que realizó al final del anterior paso:
cd ~/client-configs
sudo ./make_config.sh client1
Esto creará un archivo nombrado client1.ovpn
en su directorio ~/client-configs/files
:
ls ~/client-configs/files
Outputclient1.ovpn
Debe transferir este archivo al dispositivo que planea usar como cliente. Por ejemplo, esta podría ser su computadora local o un dispositivo móvil.
Si bien las aplicaciones exactas utilizadas para realizar esta transferencia dependerán del sistema operativo de su dispositivo y sus preferencias personales, un método confiable y seguro es utilizar SFTP (protocolo de transferencia de archivos SSH) o SCP (Copia segura) en el back-end. Esto transportará los archivos de autenticación VPN de su cliente a través de una conexión cifrada.
Aquí hay un ejemplo de comando SFTP que utiliza el client1.ovpn
ejemplo que puede ejecutar desde su computadora local (macOS o Linux). Coloca el .ovpn
archivo en su directorio de inicio:
sftp debian@your_server_ip:client-configs/files/client1.ovpn ~/
Aquí hay varias herramientas y tutoriales para transferir archivos de forma segura desde el servidor a una computadora local:
- WinSCP
- Cómo usar SFTP para transferir archivos de forma segura con un servidor remoto
- Cómo usar Filezilla para transferir y administrar archivos de forma segura en su VPS
Paso 10: instalación de la configuración del cliente
Esta sección cubre cómo instalar un perfil VPN de cliente en Windows, macOS, Linux, iOS y Android. Ninguna de estas instrucciones para el cliente depende la una de la otra, por lo tanto, siéntase libre de omitir la que corresponda a su dispositivo.
La conexión OpenVPN tendrá el mismo nombre que el que haya llamado el .ovpn
archivo. Con respecto a este tutorial, esto significa que se nombra la conexión client1.ovpn
, alineándose con el primer archivo de cliente que generó.
Ventanas
Instalando
Descargue la aplicación de cliente OpenVPN para Windows desde la página de descargas de OpenVPN . Elija la versión de instalador adecuada para su versión de Windows.
Nota: OpenVPN necesita privilegios administrativos para instalar.
Después de instalar OpenVPN, copie el .ovpn
archivo a:
C:\Program Files\OpenVPN\config
Cuando inicie OpenVPN, verá automáticamente el perfil y lo pondrá a disposición.
Debe ejecutar OpenVPN como administrador cada vez que se usa, incluso por cuentas administrativas. Para hacerlo sin tener que hacer clic con el botón derecho y seleccionar Ejecutar como administrador cada vez que use la VPN, debe preestablecerlo desde una cuenta administrativa. Esto también significa que los usuarios estándar necesitarán ingresar la contraseña del administrador para usar OpenVPN. Por otro lado, los usuarios estándar no pueden conectarse correctamente al servidor a menos que la aplicación OpenVPN en el cliente tenga derechos de administrador, por lo que los privilegios elevados son necesarios.
Para configurar la aplicación OpenVPN para que siempre se ejecute como administrador, haga clic con el botón derecho en su icono de acceso directo y vaya a Propiedades . En la parte inferior de la pestaña Compatibilidad , haga clic en el botón Cambiar configuración para todos los usuarios . En la nueva ventana, marque Ejecutar este programa como administrador .
Conectando
Cada vez que inicie la GUI de OpenVPN, Windows le preguntará si desea permitir que el programa realice cambios en su computadora. Haz clic en Sí . El lanzamiento de la aplicación cliente OpenVPN solo coloca el applet en la bandeja del sistema para que pueda conectar y desconectar la VPN según sea necesario; en realidad no hace la conexión VPN.
Una vez que se inicia OpenVPN, inicie una conexión entrando en el applet de la bandeja del sistema y haciendo clic derecho en el icono del applet de OpenVPN. Esto abre el menú contextual. Seleccione cliente1 en la parte superior del menú (ese es su client1.ovpn
perfil) y elija Conectar .
Se abrirá una ventana de estado que muestra la salida del registro mientras se establece la conexión, y se mostrará un mensaje una vez que el cliente esté conectado.
Desconéctese de la VPN de la misma manera: vaya al applet de la bandeja del sistema, haga clic con el botón derecho en el ícono de applet OpenVPN, seleccione el perfil del cliente y haga clic en Desconectar .
Mac OS
Instalando
Tunnelblick es un cliente OpenVPN de código abierto y gratuito para macOS. Puede descargar la última imagen de disco desde la página de descargas de Tunnelblick . Haga doble clic en el .dmg
archivo descargado y siga las instrucciones para instalar.
Hacia el final del proceso de instalación, Tunnelblick le preguntará si tiene algún archivo de configuración. Respondo Tengo archivos de configuración y dejo que Tunnelblick termine. Abra una ventana del Finder y haga doble clic client1.ovpn
. Tunnelblick instalará el perfil del cliente. Se requieren privilegios administrativos.
Conectando
Inicie Tunnelblick haciendo doble clic en el icono Tunnelblick en la carpeta Aplicaciones . Una vez que se haya lanzado Tunnelblick, habrá un icono de Tunnelblick en la barra de menú en la parte superior derecha de la pantalla para controlar las conexiones. Haga clic en el icono y luego en el elemento de menú Conectar cliente1 para iniciar la conexión VPN.
Linux
Instalando
Si está utilizando Linux, hay una variedad de herramientas que puede usar dependiendo de su distribución. Su entorno de escritorio o administrador de ventanas también puede incluir utilidades de conexión.
Sin embargo, la forma más universal de conectarse es usar el software OpenVPN.
En Debian, puede instalarlo tal como lo hizo en el servidor escribiendo:
sudo apt update
sudo apt install openvpn
En CentOS puede habilitar los repositorios EPEL y luego instalarlo escribiendo:
sudo yum install epel-release
sudo yum install openvpn
Configurando
Verifique si su distribución incluye un /etc/openvpn/update-resolv-conf
script:
ls /etc/openvpn
Outputupdate-resolv-conf
A continuación, edite el archivo de configuración del cliente OpenVPN que transfirió:
nano client1.ovpn
Si pudo encontrar un archivo update-resolv-conf
, descomente las tres líneas que agregó para ajustar la configuración de DNS:
client1.ovpn
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
Si está usando CentOS, cambie la group
directiva de nogroup
a nobody
para que coincida con los grupos disponibles de la distribución:
client1.ovpn
group nobody
Guarde y cierre el archivo.
Ahora, puede conectarse a la VPN simplemente apuntando el openvpn
comando al archivo de configuración del cliente:
sudo openvpn --config client1.ovpn
Esto debería conectarte a tu VPN.
iOS
Instalando
Desde iTunes App Store, busque e instale OpenVPN Connect , la aplicación de cliente oficial de iOS OpenVPN. Para transferir la configuración de su cliente iOS al dispositivo, conéctelo directamente a una computadora.
El proceso de completar la transferencia con iTunes se describe aquí. Abra iTunes en la computadora y haga clic en iPhone > aplicaciones . Desplácese hacia abajo hasta la sección Compartir archivos y haga clic en la aplicación OpenVPN. La ventana en blanco a la derecha, Documentos OpenVPN , es para compartir archivos. Arrastre el .ovpn
archivo a la ventana Documentos de OpenVPN.
Ahora inicie la aplicación OpenVPN en el iPhone. Recibirá una notificación de que un nuevo perfil está listo para importar. Toque el signo más verde para importarlo.
Conectando
OpenVPN ahora está listo para usar con el nuevo perfil. Inicie la conexión deslizando el botón Conectar a la posición Encendido . Desconecte deslizando el mismo botón a Apagado .
Nota: El conmutador VPN en Configuración no se puede usar para conectarse a la VPN. Si lo intentas, recibirás un aviso para conectarte solo con la aplicación OpenVPN.
Androide
Instalando
Abre Google Play Store. Busque e instale Android OpenVPN Connect , la aplicación cliente oficial de Android OpenVPN.
Puede transferir el .ovpn
perfil conectando el dispositivo Android a su computadora por USB y copiando el archivo. Alternativamente, si tiene un lector de tarjetas SD, puede quitar la tarjeta SD del dispositivo, copiar el perfil y luego insertar la tarjeta nuevamente en el dispositivo Android.
Inicie la aplicación OpenVPN y toque el menú para importar el perfil.
Luego navegue a la ubicación del perfil guardado (la captura de pantalla usa /sdcard/Download/
) y seleccione el archivo. La aplicación tomará nota de que el perfil se importó.
Conectando
Para conectarse, simplemente toque el botón Conectar . Se le preguntará si confía en la aplicación OpenVPN. Elija Aceptar para iniciar la conexión. Para desconectarse de la VPN, regrese a la aplicación OpenVPN y elija Desconectar .
Paso 11: prueba de la conexión VPN (opcional)
Nota: Este método para probar su conexión VPN solo funcionará si optó por enrutar todo su tráfico a través de la VPN en el Paso 5.
Una vez que todo está instalado, una simple comprobación confirma que todo funciona correctamente. Sin tener una conexión VPN habilitada, abra un navegador y vaya a DNSLeakTest .
El sitio le devolverá la dirección IP asignada por su proveedor de servicios de Internet y tal como aparece en el resto del mundo. Para verificar su configuración de DNS a través del mismo sitio web, haga clic en Prueba Extendida y le dirá qué servidores DNS está utilizando.
Ahora conecte el cliente OpenVPN a la VPN de su Droplet y actualice el navegador. Ahora debería aparecer una dirección IP completamente diferente (la de su servidor VPN), y así es como se le aparece al mundo. Nuevamente, la Prueba Extendida de DNSLeakTest verificará su configuración de DNS y confirmará que ahora está utilizando los solucionadores de DNS empujados por su VPN.
Paso 12: revocación de certificados de cliente
Ocasionalmente, es posible que deba revocar un certificado de cliente para evitar un mayor acceso al servidor OpenVPN.
Para hacerlo, navegue al directorio EasyRSA en su máquina CA:
cd EasyRSA-v3.0.6/
A continuación, ejecute el easyrsa
script con la revoke
opción, seguido del nombre del cliente que desea revocar:
./easyrsa revoke client2
Esto le pedirá que confirme la revocación ingresando yes
:
OutputPlease confirm you wish to revoke the certificate with the following subject:
subject=
commonName = client2
Type the word 'yes' to continue, or any other input to abort.
Continue with revocation: yes
Después de confirmar la acción, la CA revocará por completo el certificado del cliente. Sin embargo, su servidor OpenVPN actualmente no tiene forma de verificar si los certificados de algún cliente han sido revocados y el cliente aún tendrá acceso a la VPN. Para corregir esto, cree una lista de revocación de certificados (CRL) en su máquina CA:
./easyrsa gen-crl
Esto generará un archivo llamado crl.pem
. Transfiera este archivo de forma segura a su servidor OpenVPN:
scp ~/EasyRSA-v3.0.6/pki/crl.pem debian@your_server_ip:/tmp
En su servidor OpenVPN, copie este archivo en su /etc/openvpn/
directorio:
sudo cp /tmp/crl.pem /etc/openvpn
A continuación, abra el archivo de configuración del servidor OpenVPN:
sudo nano /etc/openvpn/server.conf
En la parte inferior del archivo, agregue la crl-verify
opción, que le indicará al servidor OpenVPN que verifique la lista de revocación de certificados que hemos creado cada vez que se realiza un intento de conexión:
/etc/openvpn/server.conf
crl-verify crl.pem
Guarde y cierre el archivo.
Finalmente, reinicie OpenVPN para implementar la revocación del certificado:
sudo systemctl restart openvpn@server
El cliente ya no debería poder conectarse con éxito al servidor utilizando la credencial anterior.
Para revocar clientes adicionales, siga este proceso:
- Revocar el certificado con el comando
./easyrsa revoke client_name
- Generar una nueva CRL
- Transfiera el nuevo
crl.pem
archivo a su servidor OpenVPN y cópielo en el/etc/openvpn
directorio para sobrescribir la lista anterior. - Reinicie el servicio OpenVPN.
Puede utilizar este proceso para revocar cualquier certificado que haya emitido previamente para su servidor.
Conclusión
Ahora está atravesando de forma segura Internet protegiendo su identidad, ubicación y tráfico de intrusos y censores.
Para configurar más clientes, solo necesita seguir los pasos 4 y 9-11 para cada dispositivo adicional. Para revocar el acceso a los clientes, solo siga el paso 12 .