Documentos de Académico
Documentos de Profesional
Documentos de Cultura
cd ~/openvpn-ca
source vars
./build-key-pass client1
cd ~/client-configs
./make_config.sh client1
ls ~/client-configs/files
Requisitos Previos
Ubuntu 16.04. Deberá configurar un usuario que no sea root, con privilegios de sudo
antes de iniciar esta guía.
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
Dentro, encontrará algunas variables que se pueden ajustar para determinar cómo se
crearán sus certificados. Sólo tenemos que preocuparnos por algunos de estos.
Hacia la parte inferior del archivo, busque la configuración que establece los
valores predeterminados de campo para los nuevos certificados. Debe ser algo como
esto:
~/openvpn-ca/vars
. . .
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"
export KEY_OU="MyOrganizationalUnit"
. . .
Edite los valores en rojo a su preferencia, pero no los deje en blanco:
~/openvpn-ca/vars
. . .
export KEY_COUNTRY="US"
export KEY_PROVINCE="NY"
export KEY_CITY="New York City"
export KEY_ORG="DigitalOcean"
export KEY_EMAIL="admin@example.com"
export KEY_OU="Community"
. . .
Mientras estamos aquí, también editaremos el valor KEY_NAME justo debajo de esta
sección, que rellena el campo de asunto. Para mantener esto simple, lo llamaremos
server en esta guía:
~/openvpn-ca/vars
export KEY_NAME="server"
Cuando termine, guarde y cierre el archivo.
—
Paso 4 — Construir el Certificado de Autoridad
Ahora, podemos usar las variables que establecemos y las utilidades easy-rsa para
construir nuestra autoridad de certificación.
Asegúrese de que se encuentra en el directorio de CA y, a continuación, genere el
archivo vars que acaba de editar:
cd ~/openvpn-ca
source vars
./clean-all
./build-ca
./build-key-server server
./build-dh
—
Paso 6 — Generar un Certificado de Cliente y un Par de Llaves
A continuación, podemos generar un certificado de cliente y un par de llaves.
Aunque esto se puede hacer en la máquina cliente y luego firmado por el
servidor/CA, por motivos de seguridad, para esta guía se generará la llave firmada
en el servidor por motivos de simplicidad.
Generaremos una llave/certificado de cliente único para esta guía, pero si tiene
más de un cliente, puede repetir este proceso tantas veces como desee. Pasando un
valor único al script para cada cliente.
Como puede volver a este paso más adelante, volveremos a crear el archivo vars.
Usaremos client1 como el valor de nuestro primer certificado/par de llaves para
esta guía.
Para generar credenciales sin contraseña, para ayudar en las conexiones
automatizadas, utilice el mandato build-key de esta manera:
cd ~/openvpn-ca
source vars
./build-key client1
Una vez más, los valores por defecto deben estar poblados, por lo que sólo puede
pulsar Enter para continuar. Deje la contraseña de desafío en blanco y asegúrese de
escribir y para las solicitudes que le pregunten si firmar y confirmar el
certificado.
—
Paso 7 — Configurar el Servicio OpenVPN
A continuación, podemos comenzar a configurar el servicio OpenVPN utilizando las
credenciales y los archivos que hemos generado.
Copiar los Archivos en el Directorio de OpenVPN
Para comenzar, necesitamos copiar los archivos que necesitamos al directorio de
configuración de /etc/openvpn.
Podemos comenzar con todos los archivos que acabamos de generar. Estos se colocaron
dentro del directorio ~/openvpn-ca/keys a medida que se creaban. Necesitamos mover
nuestro cert y llave de CA, nuestro cert y llave de servidor, la firma de HMAC, y
el archivo de Diffie-Hellman:
cd ~/openvpn-ca/keys
sudo cp ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/openvpn
Configuracion Básica
1.- Encuentre la sección HMAC buscando la directiva tls-auth. Eliminar el ";" Para
descomentar la línea tls-auth.
2.- Debajo de esto, agregue el parámetro de key-direction ajustandolo a "0":
tls-auth ta.key 0 # This file is secret
key-direction 0
Esto debería ayudar a los clientes a reconfigurar su configuración DNS para usar el
túnel VPN como gateway predeterminada.
sudo sysctl -p
Ajuste las Reglas UFW a las Conexiones del Cliente Masquerade -> NO es necesario
UFW para que funcione
Si siguió la guía de configuración inicial del servidor Ubuntu 16.04 en los
requisitos previos, debería tener instalado el firewall UFW. Independientemente de
si usas el firewall para bloquear el tráfico no deseado (lo cual casi siempre
deberías hacer), necesitamos el firewall en esta guía para manipular parte del
tráfico que entra en el servidor. Necesitamos modificar el archivo de reglas para
configurar enmascaramiento, un concepto de iptables que proporciona NAT dinámico al
instante para enrutar correctamente las conexiones del cliente.
Antes de abrir el archivo de configuración del firewall para agregar
enmascaramiento, necesitamos encontrar la interfaz de red pública de nuestra
máquina. Para ello, escriba:
Su interfaz pública debe seguir la palabra "dev". Por ejemplo, este resultado
muestra la interfaz denominada wlp11s0, que se resalta a continuación:
Outputdefault via 203.0.113.1 dev wlp11s0 proto static metric 600
Este archivo controla la configuración que se debe poner en el lugar, 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 directiva
predeterminada para la cadena POSTROUTING en la tabla nat y enmascarará cualquier
tráfico procedente de la VPN:
Nota: Recuerde reemplazar eth0 en la línea -A POSTROUTING 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
#
May 03 15:30:05 openvpn2 ovpn-server[5856]: /sbin/ip addr add dev tun0 local
10.8.0.1 peer 10.8.0.2
May 03 15:30:05 openvpn2 ovpn-server[5856]: /sbin/ip route add 10.8.0.0/24 via
10.8.0.2
May 03 15:30:05 openvpn2 ovpn-server[5856]: GID set to nogroup
May 03 15:30:05 openvpn2 ovpn-server[5856]: UID set to nobody
May 03 15:30:05 openvpn2 ovpn-server[5856]: UDPv4 link local (bound): [undef]
May 03 15:30:05 openvpn2 ovpn-server[5856]: UDPv4 link remote: [undef]
May 03 15:30:05 openvpn2 ovpn-server[5856]: MULTI: multi_init called, r=256 v=256
May 03 15:30:05 openvpn2 ovpn-server[5856]: IFCONFIG POOL: base=10.8.0.4 size=62,
ipv6=0
May 03 15:30:05 openvpn2 ovpn-server[5856]: IFCONFIG POOL LIST
May 03 15:30:05 openvpn2 ovpn-server[5856]: Initialization Sequence Completed
—ó
Paso 10 — Crear Infraestructura de Configuración de Cliente
A continuación, necesitamos configurar un sistema que nos permita crear fácilmente
archivos de configuración del cliente.
Creación de la Estructura de Directorios de Configuración de Cliente
Cree una estructura de directorios en su directorio personal para almacenar los
archivos:
mkdir -p ~/client-configs/files
Dado que nuestros archivos de configuración del cliente tendrán las llaves del
cliente incrustadas, debemos bloquear los permisos en nuestro directorio interno:
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-
configs/base.conf
nano ~/client-configs/base.conf
Encuentre las directivas que establecen ca, cert y key. Comente estas directivas ya
que agregaremos los certs y las llaves dentro del propio archivo:
# 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
nano ~/client-configs/make_config.sh
#!/bin/bash
KEY_DIR=~/openvpn-ca/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/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
—
Paso 11 — Generar Configuraciones de Cliente
Ahora, podemos generar fácilmente archivos de configuración del cliente.
Si siguió con la guía, creó un certificado de cliente y una llave denominada
client1.crt y client1.key respectivamente ejecutando el comando ./build-key client1
en el paso 6. Podemos generar una configuración para estas credenciales moviéndose
a nuestro directorio ~/client-configs y usando el script que hemos hecho:
cd ~/client-configs
./make_config.sh client1
ls ~/client-configs/files
Outputclient1.ovpn
Transferencia de Configuración a Dispositivos Cliente
Necesitamos transferir el archivo de configuración del cliente al dispositivo
correspondiente. Por ejemplo, esto podría ser su computadora local o un dispositivo
móvil.
Si bien las aplicaciones exactas utilizadas para realizar esta transferencia
dependerán de su elección y del sistema operativo del dispositivo, si desea que la
aplicación utilice SFTP (protocolo de transferencia de archivos SSH) o SCP (Copia
Segura) en el servidor. 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 nuestro ejemplo client1.ovpn. Este
comando se puede ejecutar desde su computadora local (OS X o Linux). Coloque el
archivo .ovpn en su directorio personal:
sftp sammy@openvpn_server_ip:client-configs/files/client1.ovpn ~/
Aquí hay varias herramientas y tutoriales para transferir archivos de forma segura
del servidor a un equipo local:
WinSCP
Cómo Utilizar SFTP para Transferir Archivos de Forma Segura con un Servidor Remoto
Cómo Utilizar Filezilla para Transferir y Gestionar Archivos de Forma Segura en su
VPS
—ó
Paso 12 — Instalar la Configuración del Cliente
Ahora, vamos a discutir cómo instalar un perfil VPN de cliente en Windows, OS X,
iOS y Android. Ninguna de estas instrucciones del cliente dependen una de la otra,
así que siéntete libre de saltar a lo que sea aplicable a tu necesidad.
La conexión OpenVPN llamará el archivo .ovpn de cualquier forma que lo haya
nombrado. En nuestro ejemplo, esto significa que la conexión se llamará
client1.ovpn para el primer archivo de cliente que generamos.
Windows
Instalación
La aplicación de cliente de OpenVPN para Windows se puede encontrar en la página de
Descargas de OpenVPN. Elija la versión de instalación adecuada para su versión de
Windows.
Nota: OpenVPN necesita privilegios administrativos para instalar.
Después de instalar OpenVPN, copie el archivo .ovpn en:
C:\Program Files\OpenVPN\config
Al iniciar OpenVPN, automáticamente verá el perfil y lo hará disponible.
OpenVPN se debe ejecutar como un administrador cada vez que se utiliza, incluso por
cuentas administrativas. Para hacer esto sin tener que hacer clic con el botón
derecho del ratón y seleccionar Ejecutar como administrador cada vez que utilice la
VPN, puede predefinir esto, pero esto debe hacerse 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 se ejecute siempre como
administrador, haga clic con el botón derecho del ratón en su icono de acceso
directo y vaya a Propiedades. En la parte inferior de Compatibilidad, haga clic en
el botón Cambiar la configuración para todos los usuarios. En la nueva ventana,
seleccione Ejecutar este programa como administrador.
Conectando
Cada vez que inicie la interfaz gráfica de OpenVPN, Windows le preguntará si desea
permitir que el programa realice cambios en su equipo. Haga clic en Yes. El
lanzamiento de la aplicación cliente OpenVPN sólo coloca el applet en la bandeja
del sistema para que la VPN pueda conectarse y desconectarse 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 subprograma de la
bandeja del sistema y haciendo clic con el botón derecho en el icono del applet de
OpenVPN. Esto abre el menú contextual. Seleccione client1 en la parte superior del
menú (que es nuestro perfil client1.ovpn) y elija Connect.
Se abrirá una ventana de estado que mostrará la salida del registro mientras se
establece la conexión y se mostrará un mensaje una vez que el cliente esté
conectado.
Desconecte la VPN de la misma manera: Vaya al applet de la bandeja del sistema,
haga clic con el botón derecho en el icono del applet de OpenVPN, seleccione el
perfil del cliente y haga clic en Desconectar.
OS X
Instalación
Tunnelblick es un cliente OpenVPN de código abierto gratuito para Mac OS X. Puede
descargar la última imagen de disco desde la página de Descargas de Tunnelblick.
Haga doble clic en el archivo .dmg descarguelo 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. Puede ser más fácil contestar No y dejar que Tunnelblick
termine. Abra una ventana del Finder y haga doble clic en client1.ovpn. Tunnelblick
instalará el perfil del cliente. Se requieren privilegios administrativos.
Conectando
Inicie Tunnelblick haciendo doble clic en Tunnelblick en la carpeta Aplicaciones.
Una vez que Tunnelblick ha sido lanzado, habrá un icono Tunnelblick en la barra de
menú en la parte superior derecha de la pantalla para controlar las conexiones.
Haga clic en el icono y, a continuación, en el elemento de menú Conectar para
iniciar la conexión VPN. Seleccione la conexión client1.
Linux
Instalación
Si está usando Linux, hay una variedad de herramientas que puede usar dependiendo
de su distribución. El entorno de escritorio o el administrador de ventanas también
pueden incluir utilidades de conexión.
Sin embargo, la forma más universal de conectar es usar el software OpenVPN.
En Ubuntu o Debian, puede instalarlo tal como lo hizo en el servidor escribiendo:
Configurando
Compruebe si su distribución incluye el script /etc/openvpn/update-resolv-conf:
ls /etc/openvpn
Outputupdate-resolve-conf
A continuación, edite el archivo de configuración del cliente OpenVPN que ha
transferido:
nano client1.ovpn
Descomente las tres líneas que colocamos para ajustar la configuración de DNS si
pudimos encontrar un archivo update-resolv-conf:
client1.ovpn
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
Si está utilizando CentOS, cambie el grupo 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 con sólo señalar el comando openvpn al archivo de
configuración del cliente:
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 Off.
Nota: El conmutador VPN en Configuración no se puede utilizar para conectarse a la
VPN. Si lo intentas, recibirás un aviso para conectarte solo con la aplicación
OpenVPN.
Android
Instalación
Abra Google Play Store. Busque e instale Android OpenVPN Connect, la aplicación
oficial del lado del cliente de Android OpenVPN.
El perfil .ovpn se puede transferir conectando el dispositivo Android a su
computadora por USB y copiando el archivo. Como alternativa, si tiene un lector de
tarjetas SD, puede retirar la tarjeta SD del dispositivo, copiar el perfil en ella
e insertarla en el dispositivo Android.
Inicie la aplicación OpenVPN y toque el menú para importar el perfil.
Conectando
Para conectarse, simplemente pulse el botón Conectar. Se le preguntará si confía en
la aplicación OpenVPN. Seleccione Aceptar* para iniciar la conexión. Para
desconectarse de la VPN, vuelva a la aplicación OpenVPN y seleccione Desconectar.
—ó
Paso 13 — Pruebe su Conexión VPN
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 devolverá la dirección IP asignada por su proveedor de servicios de
Internet y al aparecer al resto del mundo. Para comprobar su configuración de DNS a
través del mismo sitio web, haga clic en Extended Test y le indicará qué servidores
DNS está utilizando.
Ahora conecte el cliente OpenVPN a su Droplet VPN y actualice el navegador. Ahora
debe aparecer la dirección IP completamente diferente de su servidor VPN. Eso es
ahora cómo te ves al mundo. Una vez más, Extended Test de DNSLeakTest verificará su
configuración de DNS y confirmará que está utilizando los resolvedores de DNS
empujados por su VPN.
—ó
Paso 14 — Revocación de Certificados de Cliente
De vez en cuando, puede que tenga que revocar un certificado de cliente para
impedir el acceso adicional al servidor OpenVPN.
Para ello, ingrese su directorio de CA y vuelva a generar el archivo vars:
cd ~/openvpn-ca
source vars
A continuación, llame al comando revoke-full usando el nombre del cliente que desea
revocar:
./revoke-full client3
Esto mostrará algo de salida, terminando en error 23. Esto es normal y el proceso
debería haber generado con éxito la información de revocación necesaria, que se
almacena en un archivo llamado crl.pem dentro del subdirectorio keys.
Transfiera este archivo al directorio de configuración /etc/openvpn:
En la parte inferior del archivo, agregue la opción crl-verify para que el servidor
OpenVPN compruebe 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 de certificados:
El cliente ahora debería ser capaz de conectar con éxito al servidor utilizando la
credencial antigua.
Para revocar clientes adicionales, siga este proceso:
Genere una nueva lista de revocación de certificados mediante la búsqueda del
archivo vars en el directorio ~/openvpn-ca y luego llamando al script de revoke-
full en el nombre del cliente.
Copie la nueva lista de revocación de certificados en el directorio /etc/openvpn
para sobrescribir la lista antigua.
Reinicie el servicio OpenVPN.
Este proceso se puede utilizar para revocar cualquier certificado que haya emitido
anteriormente para su servidor.