Introducción
¿Desea acceder a Internet de manera segura desde su teléfono inteligente o computadora portátil cuando está conectado a una red no confiable como el WiFi de un hotel o cafetería? UNA Red privada virtual (VPN) le permite atravesar redes no confiables de forma privada y segura como si estuviera en una red privada. El tráfico emerge del servidor VPN y continúa su viaje hacia el destino.
Cuando se combina con Conexiones HTTPS, esta configuración le permite proteger sus inicios de sesión y transacciones inalámbricas. Puede eludir las restricciones geográficas y la censura, y proteger su ubicación y cualquier tráfico HTTP no cifrado de la red no confiable.
OpenVPN es una solución VPN SSL (Secure Socket Layer) de código abierto con todas las funciones que se adapta a una amplia gama de configuraciones. En este tutorial, configurará un servidor OpenVPN en un servidor Debian 9 y luego configurará el acceso a él desde Windows, macOS, iOS y / o Android. Este tutorial mantendrá los pasos de instalación y configuración lo más simple posible para cada una de estas configuraciones.
Nota: Si planea configurar un servidor OpenVPN en una gota de DigitalOcean, tenga en cuenta que, como muchos proveedores de alojamiento, cobramos por los excesos de ancho de banda. Por este motivo, tenga en cuenta la cantidad de tráfico que maneja su servidor.
Para más información, mira esta página.
Prerrequisitos
Para completar este tutorial, necesitará acceso a un servidor Debian 9 para alojar su servicio OpenVPN. Deberá configurar unraíz usuario con sudo
privilegios antes de comenzar esta guía. Puede seguir nuestra guía de configuración inicial del servidor Debian 9 para configurar un usuario con los permisos adecuados. El tutorial vinculado también configurará un cortafuegos, que se supone que está en su lugar a lo largo de esta guía.
Además, necesitará una máquina separada para servir como su autoridad de certificación (CA). Si bien es técnicamente posible usar su servidor OpenVPN o su máquina local como su CA, esto no se recomienda ya que abre su VPN a algunas vulnerabilidades de seguridad. Por la documentación oficial de OpenVPN, debe colocar su CA en una máquina independiente dedicada a importar y firmar solicitudes de certificados. Por esta razón, esta guía asume que su CA está en un servidor Debian 9 separado que también tiene unraíz usuario con sudo
privilegios y un firewall básico.
Tenga en cuenta que si deshabilita la autenticación de contraseña mientras configura estos servidores, puede encontrar 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. Alternativamente, puede generar un par de claves SSH para cada servidor, luego agregar la clave SSH pública del servidor OpenVPN a la máquina de CA authorized_keys
archivo y viceversa. Consulte Cómo configurar claves SSH en Debian 9 para obtener instrucciones sobre cómo realizar cualquiera de estas soluciones.
Cuando tenga estos requisitos previos, puede pasar al Paso 1 de este tutorial.
Paso 1 – Instalación de OpenVPN y EasyRSA
Para comenzar, actualice su Servidor VPN Indice el paquete e instale OpenVPN. OpenVPN está disponible en los repositorios predeterminados de Debian, por lo que puede usar apt
para la instalación:
- sudo apt update
- sudo apt install openvpn
OpenVPN es una VPN TLS / SSL. Esto significa que utiliza certificados para cifrar el tráfico entre el servidor y los clientes. Para emitir certificados de confianza, configurará su propia 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.
Como se menciona en los requisitos previos, crearemos la CA en un servidor independiente. La razón de este enfoque es que, si un atacante pudiera infiltrarse en su servidor, podría acceder a su clave privada de CA y usarla para firmar nuevos certificados, dándole acceso a su VPN. En consecuencia, administrar la CA desde una máquina independiente ayuda a evitar que usuarios no autorizados accedan a su VPN. Tenga en cuenta también que se recomienda que mantenga 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, use wget
para descargar la última versión de EasyRSA en tanto su máquina CA como su servidor OpenVPN. Para obtener la última versión, vaya a Lanzamientos página en el proyecto oficial EasyRSA GitHub, copie el enlace de descarga del archivo que termina en .tgz
, y luego péguelo en el siguiente comando:
- wget -P ~/ https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.4/EasyRSA-3.0.4.tgz
Luego extrae el tarball:
- cd ~
- tar xvf EasyRSA-3.0.4.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 tu Máquina de CA, navegue al directorio EasyRSA:
Dentro de este directorio hay un archivo llamado vars.example
. Haga una copia de este archivo y asigne un nombre a la copia. vars
sin una extensión de archivo:
Abra este nuevo archivo usando su editor de texto preferido:
Encuentre la configuración que establece los valores predeterminados de campo para los nuevos certificados. Se verá algo como esto:
~ / EasyRSA-3.0.4 / vars
. . .
#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"
. . .
Elimine el comentario de estas líneas y actualice los valores resaltados a lo que prefiera, pero no los deje en blanco:
~ / EasyRSA-3.0.4 / vars
. . .
set_var EASYRSA_REQ_COUNTRY "US"
set_var EASYRSA_REQ_PROVINCE "NewYork"
set_var EASYRSA_REQ_CITY "New York City"
set_var EASYRSA_REQ_ORG "DigitalOcean"
set_var EASYRSA_REQ_EMAIL "admin@example.com"
set_var EASYRSA_REQ_OU "Community"
. . .
Cuando haya terminado, guarde y cierre el archivo.
Dentro del directorio EasyRSA hay un script llamado easyrsa
que está llamado a realizar una variedad de tareas relacionadas con la construcción y administración de la CA. Ejecute este script con el init-pki
opción para iniciar la infraestructura de clave pública en el servidor de CA:
Output
. . .
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /home/sammy/EasyRSA-3.0.4/pki
Después de esto, llame al easyrsa
guión de nuevo, siguiendo con el build-ca
opción. Esto creará la CA y creará dos archivos importantes: ca.crt
y ca.key
– que conforman los lados públicos y privados 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, suca.key
archivo, podrán firmar solicitudes de certificados y obtener acceso a su VPN, lo que impide su seguridad. Por eso tuca.key
archivo debe solamente 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 el 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 puede crear algunos archivos adicionales utilizados durante el proceso de cifrado.
Comience navegando al directorio EasyRSA en su Servidor OpenVPN:
A partir de ahí, ejecute el easyrsa
guión con el 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:
Entonces llama al easyrsa
guión de nuevo, esta vez con el 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 el nopass
opción tambié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 a /etc/openvpn
directorio, deberá sustituir los nombres correctos. También tendrá que modificar el /etc/openvpn/server.conf
archivo más tarde para señalar a la correcta .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 /etc/openvpn/
directorio:
- sudo cp ~/EasyRSA-3.0.4/pki/private/server.key /etc/openvpn/
Usando un método seguro (como SCP, en nuestro ejemplo a continuación), transfiera el server.req
presentar a su máquina CA:
- scp ~/EasyRSA-3.0.4/pki/reqs/server.req sammy@your_CA_ip:/tmp
Siguiente su máquina CA, navegue al directorio EasyRSA:
Utilizando el easyrsa
script nuevamente, importe el server.req
archivo, siguiendo la ruta del archivo con su nombre común:
- ./easyrsa import-req /tmp/server.req server
Luego firme la solicitud ejecutando el easyrsa
guión con el sign-req
opción, seguida de la tipo de solicitud y el nombre común El tipo de solicitud puede ser client
o server
, así que para la solicitud de certificado del servidor OpenVPN, asegúrese de utilizar el server
tipo de solicitud:
- ./easyrsa sign-req server server
En la salida, se le pedirá que verifique que la solicitud proviene de una fuente confiable. Tipo yes
entonces 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 3650 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 solicitará 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 sammy@your_server_ip:/tmp
Antes de cerrar sesión en su máquina CA, transfiera ca.crt
archivo a su servidor también:
- scp pki/ca.crt sammy@your_server_ip:/tmp
A continuación, vuelva a iniciar sesión en su servidor OpenVPN y copie el server.crt
y ca.crt
archivos en su /etc/openvpn/
directorio:
- sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/
Luego navegue a su directorio EasyRSA:
A partir de ahí, cree una clave fuerte de Diffie-Hellman para usar durante el intercambio de claves escribiendo:
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 a su /etc/openvpn/
directorio:
- sudo cp ~/EasyRSA-3.0.4/ta.key /etc/openvpn/
- sudo cp ~/EasyRSA-3.0.4/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 utilizará su máquina cliente 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. A lo largo de este tutorial, el primer par de certificado / clave se denomina 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 almacenará los pares de certificado / clave de sus clientes y los archivos de configuración en este directorio, debe bloquear sus permisos ahora como medida de seguridad:
- chmod -R 700 ~/client-configs
A continuación, vuelva al directorio EasyRSA y ejecute el easyrsa
guión con el gen-req
y nopass
opciones, junto con el nombre común del cliente:
- cd ~/EasyRSA-3.0.4/
- ./easyrsa gen-req client1 nopass
prensa ENTER
para confirmar el nombre común. Luego, copie el client1.key
presentar a la /client-configs/keys/
directorio que creó anteriormente:
- cp pki/private/client1.key ~/client-configs/keys/
A continuación, transfiera el client1.req
presentar a su máquina CA utilizando un método seguro:
- scp pki/reqs/client1.req sammy@your_CA_ip:/tmp
Inicie sesión en su máquina de CA, navegue al directorio EasyRSA e importe la solicitud de certificado:
- ssh sammy@your_CA_IP
- cd EasyRSA-3.0.4/
- ./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 client
tipo de solicitud:
- ./easyrsa sign-req client client1
En el indicador, ingrese yes
para confirmar que tiene la intención de firmar la solicitud de certificado y que proviene de una fuente confiable:
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 sammy@your_server_ip:/tmp
SSH de nuevo en su servidor OpenVPN y copie el certificado del cliente en el /client-configs/keys/
directorio:
- cp /tmp/client1.crt ~/client-configs/keys/
A continuación, copie el ca.crt
y ta.key
archivos a la /client-configs/keys/
directorio también:
- sudo cp ~/EasyRSA-3.0.4/ta.key ~/client-configs/keys/
- sudo cp /etc/openvpn/ca.crt ~/client-configs/keys/
Con eso, todos 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 el tls-auth
directiva. Esta línea ya no debería estar comentada, pero si no es así, elimine el «;«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 los comentarios cipher
líneas. los AES-256-CBC
Cipher ofrece un buen nivel de encriptación y está bien soportado. Una vez más, esta línea ya no debería estar comentada, pero si no lo está, simplemente elimine el «;«Precediéndolo:
/etc/openvpn/server.conf
cipher AES-256-CBC
Debajo de esto, agregue un 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 un 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
Finalmente, encuentre el user
y group
configuración y eliminar 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 la muestra. server.conf
el archivo hasta este punto es necesario para que OpenVPN funcione. Los cambios descritos a continuación son opcionales, aunque también son necesarios para muchos casos de uso comunes.
Inyecte 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 server.conf
archivo que debe cambiar para habilitar esta funcionalidad. Encuentra el redirect-gateway
sección y eliminar el punto y coma «;«Desde el comienzo de la redirect-gateway
línea para descomentarlo:
/etc/openvpn/server.conf
push "redirect-gateway def1 bypass-dhcp"
Justo debajo de esto, encuentre el 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.
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 utilizar un puerto diferente debido a los entornos de red restrictivos en los que se encuentran sus clientes, puede cambiar el port
opción. Si no aloja contenido web en su servidor OpenVPN, 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 tu hacer cambie el protocolo a TCP, deberá cambiar el explicit-exit-notify
valor de la directiva de 1
a 0
, ya que esta directiva solo la usa 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.
Apunte a credenciales no predeterminadas
Si seleccionó un nombre diferente durante el ./build-key-server
comando anterior, modifique el cert
y key
líneas que ves para apuntar a la apropiada .crt
y .key
archivos. 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 estos es Reenvío de IP, un método para determinar hacia dónde debe enrutarse el tráfico 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 /etc/sysctl.conf
archivo:
- sudo nano /etc/sysctl.conf
En el interior, busque la línea comentada que establece net.ipv4.ip_forward
. Eliminar el «# #«Desde el 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:
Output
net.ipv4.ip_forward = 1
Si siguió la guía de configuración inicial del servidor Debian 9 que figura en los requisitos previos, debe tener un firewall UFW. 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:
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 denominada eth0
, que se resalta a continuación:
Output
default via 203.0.113.1 dev eth0 onlink
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 de UFW se suelen agregar utilizando ufw
mando. Reglas enumeradas en el before.rules
sin embargo, el archivo se lee y se coloca antes de que se carguen 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 POSTROUTING
cadena en el nat
tabla y enmascarar cualquier tráfico proveniente de la VPN. Recuerde reemplazar eth0
en el -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
Dentro, encuentra el DEFAULT_FORWARD_POLICY
directiva y cambiar 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, necesitará abrir el tráfico UDP al puerto 1194
. Si modificó el puerto y / o protocolo, sustituya los valores que seleccionó aquí.
En caso de que haya olvidado agregar el puerto SSH al seguir 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. El archivo de configuración para su servidor se llama /etc/openvpn/server.conf
, así que agrega @server
para finalizar el archivo de su unidad al llamarlo:
- 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 Tue 2016-05-03 15:30:05 EDT; 47s ago
Docs: man:openvpn(8)
https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage
https://community.openvpn.net/openvpn/wiki/HOWTO
Process: 5852 ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/%i.conf --writepid /run/openvpn/%i.pid (code=exited, sta
Main PID: 5856 (openvpn)
Tasks: 1 (limit: 512)
CGroup: /system.slice/system-openvpn.slice/openvpn@server.service
└─5856 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/server.conf --writepid /run/openvpn/server.pid
También puede verificar que OpenVPN tun0
La interfaz está disponible escribiendo:
Esto generará una interfaz configurada:
Output
4: tun0: <pointopoint,multicast,noarp,up,lower_up> mtu 1500 qdisc noqueue 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
</pointopoint,multicast,noarp,up,lower_up>
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 genere fácilmente los 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á una secuencia de comandos 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 de client-configs
directorio que creó anteriormente:
- mkdir -p ~/client-configs/files
A continuación, copie un archivo de configuración de cliente de ejemplo en client-configs
directorio para usar 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 el 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 el user
y group
directivas eliminando el «;«Al comienzo de cada línea:
~ / client-configs / base.conf
# Downgrade privileges after initialization (non-Windows only)
user nobody
group nogroup
Encuentre 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 el tls-auth
directiva, como agregará ta.key
directamente en el 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
Refleja el cipher
y auth
configuración que establezca en el /etc/openvpn/server.conf
archivo:
~ / client-configs / base.conf
cipher AES-256-CBC
auth SHA256
A continuación, agregue el key-direction
directiva en algún lugar del archivo. usted debe establezca esto en «1» para que la VPN funcione correctamente en la máquina cliente:
~ / client-configs / base.conf
key-direction 1
Finalmente, agregue algunos Comentado líneas. 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 /etc/openvpn/update-resolv-conf
archivo. Este script usa el resolvconf
utilidad 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 /etc/openvpn/update-resolv-conf
archivo, elimine el comentario de 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.
A continuación, cree un script simple que compile su configuración base con el certificado, la clave y los archivos de cifrado relevantes y luego coloque la configuración generada en ~/client-configs/files
directorio. Abra un nuevo archivo llamado make_config.sh
dentro de ~/client-configs
directorio:
- nano ~/client-configs/make_config.sh
En el interior, agregue el siguiente contenido, asegurándose de cambiar sammy
a la de su servidorraíz cuenta de usuario:
~ / client-configs / make_config.sh
#!/bin/bash
# First argument: Client identifier
KEY_DIR=/home/sammy/client-configs/keys
OUTPUT_DIR=/home/sammy/client-configs/files
BASE_CONFIG=/home/sammy/client-configs/base.conf
cat ${BASE_CONFIG}
<(echo -e '')
${KEY_DIR}/ca.crt
<(echo -e 'n')
${KEY_DIR}/${1}.crt
<(echo -e 'n')
${KEY_DIR}/${1}.key
<(echo -e 'n')
${KEY_DIR}/ta.key
<(echo -e '')
> ${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ó, recopile todos los archivos de certificado y clave que ha creado para su cliente, extraiga su contenido, agréguelos a la copia del archivo de configuración base y exporte todo este contenido a un nuevo archivo de configuración de 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 ~/client-configs
directorio y ejecutar el script que hizo al final del paso anterior:
- cd ~/client-configs
- sudo ./make_config.sh client1
Esto creará un archivo llamado client1.ovpn
en tus ~/client-configs/files
directorio:
- ls ~/client-configs/files
Output
client1.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 usar 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 usando el client1.ovpn
ejemplo que puede ejecutar desde su computadora local (macOS o Linux). Coloca el .ovpn
archivo en su directorio de inicio:
- sftp sammy@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:
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 .ovpn
archivo. En lo que respecta a este tutorial, esto significa que la conexión se llama client1.ovpn
, alineándose con el primer archivo de cliente que generó.
Ventanas
Instalando
Descargue la aplicación de cliente OpenVPN para Windows desde 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
presentar a:
C:Program FilesOpenVPNconfig
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 hacer esto sin tener que hacer clic derecho y seleccionar Ejecutar como administrador cada vez que use la VPN, debe preestablecer esto desde una cuenta administrativa. Esto también significa que los usuarios estándar deberá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 Compatibilidad pestaña, haga clic en el botón para Cambiar la configuración para todos los usuarios. En la nueva ventana, marque Ejecute 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. Hacer clic si. 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 tu 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 Desconectar.
Conclusión
Ahora está navegando por Internet de forma segura protegiendo su identidad, ubicación y tráfico de fisgones y censores. Si en este punto ya no necesita emitir certificados, se recomienda que apague su máquina CA o la desconecte de Internet hasta que necesite agregar o revocar certificados. Esto ayudará a evitar que los atacantes accedan a su VPN.
Para configurar más clientes, solo necesita seguir los pasos 4 4 y 9-11 para cada dispositivo adicional. Para revocar el acceso a los clientes, simplemente siga el paso 12.