LINUX

Cómo configurar OpenVPN Server-Client en Ubuntu 15.04

Red privada virtual (VPN) es un nombre común de varias tecnologías que permite establecer una conexión de red sobre otra red. Se llama virtual porque los nodos están conectados entre sí a través de líneas no físicas. Y es privado debido a la ausencia de acceso público a la red sin los derechos adecuados del propietario de la red.

OpenVPN el software transfiere datos utilizando protocolos TCP y UDP y con la ayuda de controladores TUN / TAP. El protocolo UDP y el controlador TUN permiten establecer una conexión con el servidor OpenVPN para los clientes detrás de NAT. Además, OpenVPN permite especificar un puerto personalizado. Proporciona flexibilidad adicional de configuración y puede ayudar a evitar las restricciones del firewall.

Seguridad y cifrado en OpenVPN proporcionado por la biblioteca OpenSSL y por Transport Layer Security (TLS). TLS es una versión mejorada del protocolo SSL.

OpenSSL proporciona dos tipos de cifrado: simétrico y asimétrico. A continuación, mostramos cómo configurar el lado del servidor de OpenVPN y cómo hacer todos los preparativos para usar la criptografía asimétrica y el protocolo TLS con Infraestructura de clave pública (PKI).

Configuración del lado del servidor

Primero que nada debemos instalar OpenVPN. En Ubuntu 15.04 y otros sistemas Unix con el administrador de paquetes ‘apt’, esto se puede hacer de la siguiente manera:

sudo apt-get install openvpn

Entonces debemos configurar unas claves. Esto se puede hacer usando las herramientas predeterminadas «openssl». Pero esta forma es bastante difícil. Es por eso que podemos usar «easy-rsa» para este propósito. El siguiente comando instala «easy-rsa» en nuestro sistema

sudo apt-get unstall easy-rsa

Observación: todos los comandos siguientes se ejecutan con derechos de superusuario, es decir, después del comando «sudo -i»; de lo contrario, puede usar «sudo -E» como prefijo para todos los comandos siguientes.

Para empezar, necesitamos copiar «easy-rsa» en la carpeta openvpn

mkdir /etc/openvpn/easy-rsa
cp -r /usr/share/easy-rsa /etc/openvpn/easy-rsa
mv /etc/openvpn/easy-rsa/easy-rsa /etc/openvpn/easy-rsa/2.0

y entra en ella

cd /etc/openvpn/easy-rsa/2.0

Aquí iniciamos un proceso de generación de claves.

En primer lugar, editamos un archivo «var». Para simplificar el proceso de generación, necesitamos especificar nuestros datos en él. Aquí hay un ejemplo de archivo «var»:

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="my@myhost.mydomain"
export KEY_OU=server

Espero, los nombres de los campos son claros y no es necesaria una descripción adicional de ellos.

En segundo lugar, debemos copiar la configuración de openssl. Hay una configuración de una versión diferente. Si no tiene ningún requisito específico, utilice la última versión. Esta es una versión 1.0.0.

cp openssl-1.0.0.cnf openssl.cnf

En tercer lugar, necesitamos cargar variables de entorno, que editamos en el paso anterior.

source ./vars

El paso final de la preparación para la generación de claves es el vaciado de los certificados y claves antiguos y la generación de archivos de índice y serie para claves nuevas. Esto se puede hacer usando el comando

./clean-all

Ahora terminamos la preparación y estamos listos para iniciar el proceso de generación. Generemos el certificado primero

./build-ca

En el diálogo vemos variantes predeterminadas, que especificamos en el archivo «vars» antes. Podemos revisarlos, editarlos si es necesario y luego presionar ENTER un par de veces. El cuadro de diálogo tiene el siguiente aspecto

Generating a 2048 bit RSA private key
.............................................+++
...................................................................................................+++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [US]:
State or Province Name (full name) [CA]:
Locality Name (eg, city) [SanFrancisco]:
Organization Name (eg, company) [Fort-Funston]:
Organizational Unit Name (eg, section) [MyOrganizationalUnit]:
Common Name (eg, your name or your server's hostname) [Fort-Funston CA]:
Name [EasyRSA]:
Email Address [me@myhost.mydomain]:

A continuación, necesitamos generar una clave de servidor.

./build-key-server server

El cuadro de diálogo de este comando se muestra a continuación:

Generating a 2048 bit RSA private key
........................................................................+++
............................+++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [US]:
State or Province Name (full name) [CA]:
Locality Name (eg, city) [SanFrancisco]:
Organization Name (eg, company) [Fort-Funston]:
Organizational Unit Name (eg, section) [MyOrganizationalUnit]:
Common Name (eg, your name or your server's hostname) [server]:
Name [EasyRSA]:
Email Address [me@myhost.mydomain]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/openvpn/easy-rsa/2.0/openssl-1.0.0.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'US'
stateOrProvinceName :PRINTABLE:'CA'
localityName :PRINTABLE:'SanFrancisco'
organizationName :PRINTABLE:'Fort-Funston'
organizationalUnitName:PRINTABLE:'MyOrganizationalUnit'
commonName :PRINTABLE:'server'
name :PRINTABLE:'EasyRSA'
emailAddress :IA5STRING:'me@myhost.mydomain'
Certificate is to be certified until May 22 19:00:25 2025 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

Aquí debemos responder «sí» a las dos últimas preguntas sobre «firmar el certificado» y sobre «confirmar».

Ahora tenemos el certificado y la clave del servidor. El siguiente paso es generar la clave Diffie-Hellman. Ejecute el siguiente comando y tenga paciencia. Durante los próximos minutos veremos muchos puntos y símbolos positivos.

./build-dh

Ejemplo de la salida de este comando que puede encontrar a continuación

Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
................................+................<and many many dots>

Después de una larga espera, podemos pasar a la generación de la última clave. Esta es la clave para la autenticación TLS. Aquí hay un comando para ello:

openvpn --genkey --secret keys/ta.key

Ahora, la generación se completó y podemos mover todos los archivos generados a la ubicación final.

cp -r /etc/openvpn/easy-rsa/2.0/keys/ /etc/openvpn/

Finalmente creamos el archivo de configuración de OpenVPN. Copiemos del ejemplo:

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
cd /etc/openvpn
gunzip -d /etc/openvpn/server.conf.gz

Entonces edítalo

vim /etc/openvpn/server.conf

Necesitamos especificar rutas personalizadas a las claves.

ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key # This file should be kept secret
dh /etc/openvpn/keys/dh2048.pem

Eso es todo. Después de reiniciar la configuración de OpenVPN del lado del servidor se completa.

service openvpn restart

Configuración del lado del cliente para Unix

Supongamos que tenemos un dispositivo con un sistema operativo similar a Unix, por ejemplo Ubuntu 15.04, y con OpenVPN instalado. Queremos conectarnos al servidor OpenVPN de la sección anterior. En primer lugar, necesitamos una clave para el cliente. Para generar esta clave, vaya a la carpeta del servidor:

cd /etc/openvpn/easy-rsa/2.0

Cargar variables de entorno

source vars

y crea una clave de cliente

./build-key client

Veremos el mismo cuadro de diálogo que se describe en la sección anterior sobre la generación de claves del servidor. Complete la información real sobre el cliente en él.

Necesita ejecutar otro comando en caso de que se requiera una clave de protección con contraseña. Aquí lo tienes

./build-key-pass client

En este caso, se le pedirá que ingrese la contraseña al comienzo del establecimiento de la conexión VPN.

Ahora necesitamos copiar los siguientes archivos del servidor al cliente en / etc / openvpn / keys / carpeta.

Lista de archivos del servidor:

  1. ca.crt,
  2. dh2048.pem,
  3. client.crt,
  4. client.key,
  5. ta.key.

Después de eso, vamos al cliente y preparamos el archivo de configuración. La ubicación del archivo es /etc/openvpn/client.conf y su contenido se presenta a continuación.

dev tun
proto udp

# IP and Port of remote host with OpenVPN server
remote 111.222.333.444 1194

resolv-retry infinite

ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/client.crt
key /etc/openvpn/keys/client.key
tls-client
tls-auth /etc/openvpn/keys/ta.key 1
auth SHA1
cipher BF-CBC
remote-cert-tls server
comp-lzo
persist-key
persist-tun

status openvpn-status.log
log /var/log/openvpn.log
verb 3
mute 20

Después de eso, debemos reiniciar OpenVPN para aceptar una nueva configuración.

service openvpn restart

Eso es todo, se acabó la configuración del cliente.

Configuración del lado del cliente para Android

La configuración de OpenVPN en dispositivos Android es bastante similar a la configuración en el sistema Unix. Necesitamos un paquete con un archivo de configuración, con claves y con certificados. Aquí hay una lista de ellos:

  1. archivo de configuración (.ovpn),
  2. ca.crt,
  3. dh2048.pem,
  4. client.crt,
  5. cliente.key.

La clave de cliente se puede generar de la misma manera que se describe en la sección anterior.

El archivo de configuración tiene el siguiente contenido

client tls-client
dev tun
proto udp

# IP and Port of remote host with OpenVPN server
remote 111.222.333.444 1194

resolv-retry infinite
nobind
ca ca.crt
cert client.crt
key client.key
dh dh2048.pem
persist-tun
persist-key

verb 3
mute 20

Todos estos archivos debemos moverlos en la tarjeta SD de nuestro dispositivo.

Entonces necesitamos instalar Conexión OpenVPN.

El siguiente proceso de configuración es muy simple:

  • abra la configuración de OpenVPN y seleccione Importar opciones
  • Seleccione Importar perfil desde la tarjeta SD opción
  • en la ventana abierta, vaya a la carpeta con los archivos preparados y seleccione el archivo .ovpn
  • aplicación que nos ofreció para crear un nuevo perfil
  • toque en el Conectar botón y espera un segundo

Y eso es todo. Ahora nuestro dispositivo Android tiene conexión a nuestra red privada mediante una conexión VPN segura.

Conclusión

Por lo tanto, la configuración inicial de OpenVPN lleva un tiempo, pero se compensa con la fácil configuración de los clientes y la capacidad de conectarse desde cualquier dispositivo. Además, OpenVPN proporcionó un alto nivel de seguridad y capacidad de conexión desde diferentes lugares, incluidos los clientes ubicados detrás de NAT. Por lo tanto, OpenVPN puede usarse igualmente tanto en el hogar como en la empresa.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar