OpenVPN : Conéctate a cualquier red de forma segura

OpenVPN : Conéctate a cualquier red de forma segura

Sergio De Luz

OpenVPN es un cliente/servidor VPN (red privada virtual) multiplataforma. Es compatible con sistemas operativos Microsoft Windows, GNU/Linux, macOS e incluso tiene aplicaciones gratuitas para Android y iOS. Otro punto fuerte de OpenVPN es que algunos fabricantes de routers lo están incorporando en sus equipos, por lo que tendremos la posibilidad de configurar un servidor OpenVPN en nuestro router. Otro aspecto destacable es que, por ejemplo, sistemas operativos orientados a cortafuegos también lo incorporan, PFsense y OPNSense son dos distribuciones muy recomendables para utilizar OpenVPN y el resto de sus opciones de configuración.

¿Para qué me puede servir crear un servidor OpenVPN?

Si creamos un servidor OpenVPN en nuestro hogar, nos puede servir para conectarnos a Internet de una manera segura desde cualquier red ya sea cableada o WiFi, con cifrado WEP/WPA o sin cifrar. Todo el tráfico irá cifrado a través de un túnel desde nuestro ordenador donde nos conectemos, hasta nuestra casa y desde allí saldrá a Internet, es como estar conectados a Internet en nuestro hogar. Debemos tener en cuenta varios factores, como tener una buena velocidad de subida (30Mbps o superior), y tener en nuestro hogar una dirección IP pública, ya que si tenemos CG-NAT no podremos conectarnos debido a que no podremos hacer reenvío de puertos en el router.

Al montar un servidor OpenVPN en nuestro hogar, también podremos acceder a todos y cada uno de los recursos compartidos que tengamos, como servidores Samba, FTP e incluso acceder a la impresora, cámaras IP que tengamos conectadas etc. Todos los permisos de acceso serían tal y como si estuviéramos físicamente en nuestro hogar.

OpenVPN utiliza un conjunto de protocolos SSL/TLS que trabajan en la capa de transporte, y tenemos dos tipos de funcionamiento:

  • TUN: El controlador TUN emula un dispositivo punto a punto, es utilizado para crear túneles virtuales operando con el protocolo IP. De esta forma, se pueden encapsular todos los paquetes que se transportan a través de él como segmentos TCP o datagramas UDP (más adelante veréis que escogemos UDP en lugar de TCP, y preguntaréis que por qué ya que TCP es conectivo, fiable y orientado a conexión). Las máquinas que queden detrás de cada uno de los extremos del enlace pertenecerán a subredes diferentes.
  • TAP: Simula una interfaz de red Ethernet, más comúnmente conocido como modo puente o bridge, estos túneles virtuales encapsulan directamente paquetes Ethernet. Esta situación permite empaquetar entramados diferentes al IP. Las máquinas situadas detrás de cada uno de los extremos del enlace pueden operar como parte de la misma subred (si se utiliza el protocolo IP). El modo de funcionamiento puente es particularmente útil para enlazar usuarios remotos, ya que éstos pueden conectarse a un mismo servidor y virtualmente formar parte de la red principal, sin embargo, si la red privada donde se conecta el origen coincide con la de destino, tendremos problemas de enrutamiento y la comunicación no funcionará.

En el manual utilizaremos TUN y veremos cómo creamos una subred virtual 10.8.0.0/24 donde estarán los clientes OpenVPN cuando se conecten. De esta manera, será mucho más fácil identificar a los clientes VPN que tengamos conectados en la red local.

En este manual os voy a explicar cómo hacerlo en GNU/Linux (en Debian 10), aunque en esencia, es lo mismo para Windows, únicamente cambian los comandos en la consola (cmd.exe), los certificados y las llaves, son los mismos para los dos, es decir, puedes crear TODO en GNU/Linux y luego pasarlo a Windows para usarlo (ya sea cliente o servidor), únicamente deberás cambiar la extensión del cliente/servidor .conf por .ovpn, aunque en las últimas versiones de OpenVPN para Windows ya nos permite reconocer y utilizar los archivos de configuración .conf, por lo que no tendremos que cambiar la extensión.

En este manual os voy a enseñar cómo realizar una configuración de OpenVPN muy segura, personalizando los algoritmos de cifrado simétrico, asimétrico y de hash. De esta forma, podremos tener el mejor cifrado posible de las comunicaciones.

Resumen de la criptografía a utilizar

  • Certificados digitales: Usaremos EC (Curvas Elípticas) para la creación de la Infraestructura de Clave Pública. Crearemos tanto los certificados de la CA (Autoridad de Certificación), como también los certificados del servidor y de los clientes VPN que quieran conectarse. El algoritmo EC utilizado es secp521r1, aunque tenemos disponibles muchos otros. El algoritmo hash que utilizaremos será SHA512. Un detalle importante es que no todos los clientes/servidores OpenVPN lo soportan, debemos tener actualizado nuestro OpenVPN y las librerías criptográficas, pero hoy en día es raro encontrarnos en un escenario que no sea compatible.
  • Canal de control OpenVPN: utilizaremos como mínimo TLS 1.2, y siempre utilizando PFS (Perfect Forward Secrecy) basado en Diffie-Hellmann con curvas elípticas (ECDHE). Es decir, utilizaremos una selección de suites criptográficas seguras, como TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384. Si quieres comprobar si tu servidor o cliente soporta este tipo de cifrado, deberás poner en consola «openvpn –show-tls».
  • Canal de datos OpenVPN: utilizaremos el algoritmo de cifrado simétrico AES-256-GCM, el más seguro actualmente y que se ha incorporado la compatibilidad en OpenVPN 2.4 y posterior. Si quieres comprobar si tu servidor o cliente soporta este tipo de cifrado, deberás poner en consola «openvpn –show-ciphers«. Si utilizamos AES-256-GCM como cifrado en canal de datos, no usaremos ningún algoritmo de HASH ya que es AEAD, sin embargo, si utilizamos AES-256-CBC sí usaremos SHA512.

Adicionalmente a estas medidas de seguridad, incluiremos una firma HMAC adicional para la primera negociación de TLS, de esta forma, protegeremos el sistema de posibles ataques de denegación de servicio, de ataques UDP Port Flooding y también de ataques TCP SYN. Al conectarnos al servidor, si el cliente no posee la firma HMAC correcta será bloqueado. En versiones anteriores de OpenVPN 2.4 la directiva era tls-auth, que se encargaba únicamente de la autenticación de una clave precompartida generada por el propio OpenVPN. Ahora en versiones superiores a OpenVPN 2.4 se llama tls-crypt, la principal diferencia es que además de autenticar, también cifra el canal para que nadie sea capaz de capturar dicha clave precompartida. La configuración es muy similar, la generación de la clave es exactamente igual en ambas.

Por último, utilizaremos el protocolo UDP en lugar de TCP, porque es más fuerte frente a ataques de denegación de servicio, debemos recordar que UDP es no conectivo, no fiable y no orientado a conexión. No obstante, podremos usar TCP sin ningún problema para dotar a la VPN de todos los beneficios de este protocolo.

Paso 1: Instalar OpenVPN y descargar Easy-RSA 3

Lo primero que tenemos que hacer es instalar OpenVPN en nuestro equipo, ya sea con Windows o Linux. Si utilizas Windows debes irte a la página web oficial de descargas de OpenVPN y en el asistente de instalación instalar todo. Si usas un sistema operativo como Debian (nosotros usaremos Debian 10 durante todo el manual), tendrás que introducir el siguiente comando:

sudo apt update

sudo apt install openvpn

Una vez instalado, deberemos descargarnos el paquete de software Easy-RSA 3, este paquete de software sirve para la creación de los certificados digitales de forma fácil y rápida. Podremos modificar la longitud de la clave, el tipo de clave, si queremos poner una contraseña a las llaves privadas etc. En la página web oficial del proyecto Easy-RSA 3 de GitHub tenéis toda la información y la posibilidad de descargarnos un .zip con todo.

Si estás en un sistema Linux, os recomendamos utilizar la orden wget para descargarnos el .zip:

wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.6/EasyRSA-unix-v3.0.6.tgz

A continuación, deberemos descomprimir este archivo descargado e introducirnos dentro de la carpeta para empezar a configurar el archivo vars.

tar -zxvf EasyRSA-unix-v3.0.6.tgz

Paso 2: Configurar «vars» de Easy-RSA 3

El fichero vars.example es el centro de toda la configuración de los certificados, es donde deberemos definir si queremos crear certificados basados en RSA o basados en EC. Asimismo también nos va a permitir firmar los certificados con SHA256 o con SHA512 entre otros. Es decir, debemos configurar este archivo de configuración correctamente para posteriormente crear los certificados digitales.

Lo primero que debemos hacer es copiar el archivo vars.example en la misma carpeta con nombre «vars», si no lo tenemos con este nombre «vars» no actuará. También tenemos la posibilidad de renombrar el archivo vars.example en «vars», pero os recomendamos mejor hacer una copia de seguridad por si elimináis algo y luego no os funciona.

Nos colocamos en la carpeta principal de Easy-RSA3 y copiamos el archivo de esta forma:

cp vars.example vars

Una vez que ya tenemos el archivo «vars», debemos editarlo con cualquier editor de archivos vía consola o interfaz gráfica, nosotros usaremos nano debido a su facilidad. En el siguiente fichero de configuración de «vars» podéis ver cómo quedaría con EC con el algoritmo secp521r1, firmado con SHA512 y hemos utilizado un DN (Distinguished Name) poniendo el CN (Common Name) en lugar de los típicos datos de la «organización» como siempre habíamos hecho anteriormente, de esta forma, facilitamos la creación de los certificados, no obstante, también podríamos hacerlo indicando los típicos datos de organización.

En el propio fichero están los comentarios originales en inglés, y en castellano hemos puesto los nuestros para facilitar la localización de qué hay que modificar.

# Easy-RSA 3 parameter settings

# NOTE: If you installed Easy-RSA from your distro’s package manager, don’t edit
# this file in place — instead, you should copy the entire easy-rsa directory
# to another location so future upgrades don’t wipe out your changes.

# HOW TO USE THIS FILE
#
# vars.example contains built-in examples to Easy-RSA settings. You MUST name
# this file ‘vars’ if you want it to be used as a configuration file. If you do
# not, it WILL NOT be automatically read when you call easyrsa commands.
#
# It is not necessary to use this config file unless you wish to change
# operational defaults. These defaults should be fine for many uses without the
# need to copy and edit the ‘vars’ file.
#
# All of the editable settings are shown commented and start with the command
# ‘set_var’ — this means any set_var command that is uncommented has been
# modified by the user. If you’re happy with a default, there is no need to
# define the value to its default.

# NOTES FOR WINDOWS USERS
#
# Paths for Windows *MUST* use forward slashes, or optionally double-esscaped
# backslashes (single forward slashes are recommended.) This means your path to
# the openssl binary might look like this:
# «C:/Program Files/OpenSSL-Win32/bin/openssl.exe»

# A little housekeeping: DON’T EDIT THIS SECTION
#
# Easy-RSA 3.x doesn’t source into the environment directly.
# Complain if a user tries to do this:
if [ -z «$EASYRSA_CALLER» ]; then
echo «You appear to be sourcing an Easy-RSA ‘vars’ file.» >&2
echo «This is no longer necessary and is disallowed. See the section called» >&2
echo «‘How to use this file’ near the top comments for more details.» >&2
return 1
fi

# DO YOUR EDITS BELOW THIS POINT

# This variable is used as the base location of configuration files needed by
# easyrsa. More specific variables for specific files (e.g., EASYRSA_SSL_CONF)
# may override this default.
#
# The default value of this variable is the location of the easyrsa script
# itself, which is also where the configuration files are located in the
# easy-rsa tree.

#set_var EASYRSA «${0%/*}»

# If your OpenSSL command is not in the system PATH, you will need to define the
# path to it here. Normally this means a full path to the executable, otherwise
# you could have left it undefined here and the shown default would be used.
#
# Windows users, remember to use paths with forward-slashes (or escaped
# back-slashes.) Windows users should declare the full path to the openssl
# binary here if it is not in their system PATH.

#set_var EASYRSA_OPENSSL «openssl»
#
# This sample is in Windows syntax — edit it for your path if not using PATH:
#set_var EASYRSA_OPENSSL «C:/Program Files/OpenSSL-Win32/bin/openssl.exe»

# Edit this variable to point to your soon-to-be-created key directory. By
# default, this will be «$PWD/pki» (i.e. the «pki» subdirectory of the
# directory you are currently in).
#
# WARNING: init-pki will do a rm -rf on this directory so make sure you define
# it correctly! (Interactive mode will prompt before acting.)

#set_var EASYRSA_PKI «$PWD/pki»

# Define X509 DN mode.
# This is used to adjust what elements are included in the Subject field as the DN
# (this is the «Distinguished Name.»)
# Note that in cn_only mode the Organizational fields further below aren’t used.
#
# Choices are:
# cn_only – use just a CN value
# org – use the «traditional» Country/Province/City/Org/OU/email/CN format

#ELEGIMOS cn_only PARA LA CREACION DE LOS CERTIFICADOS

set_var EASYRSA_DN «cn_only»

# Organizational fields (used with ‘org’ mode and ignored in ‘cn_only’ mode.)
# These are the default values for fields which will be placed in the
# certificate. Don’t leave any of these fields blank, although interactively
# you may omit any specific field by typing the «.» symbol (not valid for
# email.)

#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»

# Choose a size in bits for your keypairs. The recommended value is 2048. Using
# 2048-bit keys is considered more than sufficient for many years into the
# future. Larger keysizes will slow down TLS negotiation and make key/DH param
# generation take much longer. Values up to 4096 should be accepted by most
# software. Only used when the crypto alg is rsa (see below.)

#set_var EASYRSA_KEY_SIZE 2048

# The default crypto mode is rsa; ec can enable elliptic curve support.
# Note that not all software supports ECC, so use care when enabling it.
# Choices for crypto alg are: (each in lower-case)
# * rsa
# * ec

#ELEGIMOS CURVA ELIPTICA PARA LA CREACION DE CERTIFICADOS, POR DEFECTO ES RSA.

set_var EASYRSA_ALGO ec

# DEFINIMOS EL NOMBRE DE LA CURVE ELIPTICA ELEGIDO

set_var EASYRSA_CURVE secp521r1

# CONFIGURAMOS LA CADUCIDAD DE LA CA

set_var EASYRSA_CA_EXPIRE 3650

# CONFIGURAMOS LA CADUCIDAD DE LOS CERTIFICADOS CREADOS.

set_var EASYRSA_CERT_EXPIRE 1080

# How many days until the next CRL publish date? Note that the CRL can still be
# parsed after this timeframe passes. It is only used for an expected next
# publication date.

# How many days before its expiration date a certificate is allowed to be
# renewed?
#set_var EASYRSA_CERT_RENEW 30

#set_var EASYRSA_CRL_DAYS 180

# Support deprecated «Netscape» extensions? (choices «yes» or «no».) The default
# is «no» to discourage use of deprecated extensions. If you require this
# feature to use with –ns-cert-type, set this to «yes» here. This support
# should be replaced with the more modern –remote-cert-tls feature. If you do
# not use –ns-cert-type in your configs, it is safe (and recommended) to leave
# this defined to «no». When set to «yes», server-signed certs get the
# nsCertType=server attribute, and also get any NS_COMMENT defined below in the
# nsComment field.

#set_var EASYRSA_NS_SUPPORT «no»

# When NS_SUPPORT is set to «yes», this field is added as the nsComment field.
# Set this blank to omit it. With NS_SUPPORT set to «no» this field is ignored.

#set_var EASYRSA_NS_COMMENT «Easy-RSA Generated Certificate»

# A temp file used to stage cert extensions during signing. The default should
# be fine for most users; however, some users might want an alternative under a
# RAM-based FS, such as /dev/shm or /tmp on some systems.

#set_var EASYRSA_TEMP_FILE «$EASYRSA_PKI/extensions.temp»

# !!
# NOTE: ADVANCED OPTIONS BELOW THIS POINT
# PLAY WITH THEM AT YOUR OWN RISK
# !!

# Broken shell command aliases: If you have a largely broken shell that is
# missing any of these POSIX-required commands used by Easy-RSA, you will need
# to define an alias to the proper path for the command. The symptom will be
# some form of a ‘command not found’ error from your shell. This means your
# shell is BROKEN, but you can hack around it here if you really need. These
# shown values are not defaults: it is up to you to know what you’re doing if
# you touch these.
#
#alias awk=»/alt/bin/awk»
#alias cat=»/alt/bin/cat»

# X509 extensions directory:
# If you want to customize the X509 extensions used, set the directory to look
# for extensions here. Each cert type you sign must have a matching filename,
# and an optional file named ‘COMMON’ is included first when present. Note that
# when undefined here, default behaviour is to look in $EASYRSA_PKI first, then
# fallback to $EASYRSA for the ‘x509-types’ dir. You may override this
# detection with an explicit dir here.
#
#set_var EASYRSA_EXT_DIR «$EASYRSA/x509-types»

# OpenSSL config file:
# If you need to use a specific openssl config file, you can reference it here.
# Normally this file is auto-detected from a file named openssl-easyrsa.cnf from the
# EASYRSA_PKI or EASYRSA dir (in that order.) NOTE that this file is Easy-RSA
# specific and you cannot just use a standard config file, so this is an
# advanced feature.

#set_var EASYRSA_SSL_CONF «$EASYRSA/openssl-easyrsa.cnf»

# Default CN:
# This is best left alone. Interactively you will set this manually, and BATCH
# callers are expected to set this themselves.

#set_var EASYRSA_REQ_CN «ChangeMe»

# Cryptographic digest to use.
# Do not change this default unless you understand the security implications.
# Valid choices include: md5, sha1, sha256, sha224, sha384, sha512

# SELECCIONAMOS EL HASH SHA512

set_var EASYRSA_DIGEST «sha512»

# Batch mode. Leave this disabled unless you intend to call Easy-RSA explicitly
# in batch mode without any user input, confirmation on dangerous operations,
# or most output. Setting this to any non-blank string enables batch mode.

#set_var EASYRSA_BATCH «»

Una vez que lo hemos modificado todo, guardamos el archivo ya que posteriormente lo vamos a utilizar con estos valores.

Paso 3: Crear la CA, los certificados para el servidor y para los clientes

Creación de la PKI y de la Autoridad de Certificación

Cuando ya tenemos el fichero «vars» configurado, procedemos a crear la Infraestructura de Clave Pública (PKI) con la siguiente orden (suponemos que seguís en el directorio principal de Easy-RSA3):

./easyrsa init-pki

root@debian-vm:/home/bron/EasyRSA-v3.0.6# ./easyrsa init-pki

Note: using Easy-RSA configuration from: ./vars

init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /home/bron/EasyRSA-v3.0.6/pki

Una vez inicializada la PKI, debemos crear la Autoridad de Certificación (CA):

./easyrsa build-ca

Una vez ejecutado, debemos seguir el sencillo asistente de generación de CA. La contraseña que nos pide es para proteger la clave privada de la CA, algo fundamental.

root@debian-vm:/home/bron/EasyRSA-v3.0.6# ./easyrsa build-ca

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1d 10 Sep 2019

Enter New CA Key Passphrase:
Re-Enter New CA Key Passphrase:
read EC key
writing EC key
Can’t load /home/bron/EasyRSA-v3.0.6/pki/.rnd into RNG
139864421569664:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:98:Filename=/home/bron/EasyRSA-v3.0.6/pki/.rnd
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.
—–
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:AUTORIDAD-CERTIFICACION

CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/home/bron/EasyRSA-v3.0.6/pki/ca.crt

Si no queremos introducir una contraseña en la clave privada de la CA (no es recomendable por cuestiones de seguridad), deberemos poner este comando:

./easyrsa build-ca nopass

Una vez que hemos creado la CA, deberemos crear el certificado del servidor, y los certificados de los clientes. A continuación, deberemos firmarlo con la CA.

Creación del certificado del servidor y firmarlo con la CA

A la hora de crear los certificados de servidor y clientes, podremos dotarles de una contraseña para la clave privada, no obstante, no es recomendable hacerlo en el servidor ya que cada vez que lo iniciemos, nos pedirá la contraseña para utilizarlo. Si no queremos contraseña pondremos «nopass» detrás de cada orden que veréis a continuación.

./easyrsa gen-req servidor-openvpn-redeszone nopass

La salida del terminal es la siguiente:

root@debian-vm:/home/bron/EasyRSA-v3.0.6# ./easyrsa gen-req servidor-openvpn-redeszone nopass

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1d 10 Sep 2019
Generating an EC private key
writing new private key to ‘/home/bron/EasyRSA-v3.0.6/pki/private/servidor-openvpn-redeszone.key.bHJsAFg0KR’
—–
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.
—–
Common Name (eg: your user, host, or server name) [servidor-openvpn-redeszone]:

Keypair and certificate request completed. Your files are:
req: /home/bron/EasyRSA-v3.0.6/pki/reqs/servidor-openvpn-redeszone.req
key: /home/bron/EasyRSA-v3.0.6/pki/private/servidor-openvpn-redeszone.key

Una vez creado el certificado, deberemos firmarlo con la CA en modo «server»:

./easyrsa sign-req server servidor-openvpn-redeszone

root@debian-vm:/home/bron/EasyRSA-v3.0.6# ./easyrsa sign-req server servidor-openvpn-redeszone

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1d 10 Sep 2019

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 = servidor-openvpn-redeszone

Type the word ‘yes’ to continue, or any other input to abort.
Confirm request details: yes
Using configuration from /home/bron/EasyRSA-v3.0.6/pki/safessl-easyrsa.cnf
Enter pass phrase for /home/bron/EasyRSA-v3.0.6/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject’s Distinguished Name is as follows
commonName :ASN.1 12:’servidor-openvpn-redeszone’
Certificate is to be certified until Dec 23 11:40:22 2022 GMT (1080 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /home/bron/EasyRSA-v3.0.6/pki/issued/servidor-openvpn-redeszone.crt

Y ya hemos creado el .crt que utilizaremos posteriormente en el fichero de configuración de OpenVPN.

Creación de los certificados de los clientes y firmarlos con la CA

Los pasos que veréis a continuación, los tendremos que realizar una vez POR CADA CLIENTE que vayamos a crear. Es decir, si vamos a crear 2 clientes, deberemos seguir los pasos de crear y firmar dos veces. En este parte sí es recomendable crear los certificados del cliente con contraseña, así tendremos la seguridad de que si perdemos el certificado, nadie podrá usarllo. Nosotros en el manual no vamos a introducir ninguna contraseña (pondremos nopass al final).

./easyrsa gen-req cliente1-openvpn-redeszone nopass

root@debian-vm:/home/bron/EasyRSA-v3.0.6# ./easyrsa gen-req cliente1-openvpn-redeszone nopass

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1d 10 Sep 2019
Generating an EC private key
writing new private key to ‘/home/bron/EasyRSA-v3.0.6/pki/private/cliente1-openvpn-redeszone.key.YflrPvFgdV’
—–
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.
—–
Common Name (eg: your user, host, or server name) [cliente1-openvpn-redeszone]:

Keypair and certificate request completed. Your files are:
req: /home/bron/EasyRSA-v3.0.6/pki/reqs/cliente1-openvpn-redeszone.req
key: /home/bron/EasyRSA-v3.0.6/pki/private/cliente1-openvpn-redeszone.key

Una vez creado, deberemos firmarlo:

./easyrsa sign-req client cliente1-openvpn-redeszone

root@debian-vm:/home/bron/EasyRSA-v3.0.6# ./easyrsa sign-req client cliente1-openvpn-redeszone

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1d 10 Sep 2019

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 client certificate for 1080 days:

subject=
commonName = cliente1-openvpn-redeszone

Type the word ‘yes’ to continue, or any other input to abort.
Confirm request details: yes
Using configuration from /home/bron/EasyRSA-v3.0.6/pki/safessl-easyrsa.cnf
Enter pass phrase for /home/bron/EasyRSA-v3.0.6/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject’s Distinguished Name is as follows
commonName :ASN.1 12:’cliente1-openvpn-redeszone’
Certificate is to be certified until Dec 23 11:41:36 2022 GMT (1080 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /home/bron/EasyRSA-v3.0.6/pki/issued/cliente1-openvpn-redeszone.crt

Si quisiéramos crear y firmar un certificado número 2 para otro cliente, deberemos poner algo así:

./easyrsa gen-req cliente2-openvpn-redeszone nopass ./easyrsa sign-req client cliente2-openvpn-redeszone

Recordad que si queréis poner contraseña, deberemos quitar el «nopass».

Organizar los certificados .crt y .key del servidor y clientes

Algo muy importante es organizar por carpetas los certificados del servidor y de los clientes. Los certificados de servidor y clientes están en la ruta «/pki/issued/» y las claves privadas están en «/pki/private», la ca.crt está en la raíz de la carpeta «pki». Debemos crear tres carpetas con el siguiente contenido (de momento):

  • servidor: ca.crt, servidor-openvpn-redeszone.crt, servidor-openvpn-redeszone.key
  • cliente1: ca.crt, cliente1-openvpn-redeszone.crt, cliente1-openvpn-redeszone.key
  • cliente2: ca.crt, cliente2-openvpn-redeszone.crt, cliente2-openvpn-redeszone.key

Paso 4: Crear los parámetros Diffie-Hellmann y la clave tls-auth (tls-crypt en sistemas nuevos)

Una vez que ya tenemos los certificados creados y firmados, antiguamente debíamos crear los parámetros Diffie-Hellmann para colocarlos en la carpeta del «servidor», para generarlos usábamos «./easyrsa gen-dh» pero al utilizar ECDHE no es necesario crearlo ni indicarlo tampoco en el archivo de configuración del servidor.

Lo que sí debemos crear es la clave tls-auth (tls-crypt ahora) con nombre ta.key o el que nosotros queramos. La orden que debemos poner es la siguiente:

openvpn --genkey --secret ta.key

Esta clave ta.key deberemos colocarla en el servidor y en TODOS los clientes.

Una vez llegados hasta aquí, nuestras carpetas con los certificados deberían tener lo siguiente:

  • servidor: ca.crt, servidor-openvpn-redeszone.crt, servidor-openvpn-redeszone.key, dh.pem (Diffie-Hellmann, OPCIONAL porque no lo usaremos con ECDHE), ta.key (tls-crypt)
  • cliente1: ca.crt, cliente1-openvpn-redeszone.crt, cliente1-openvpn-redeszone.key, ta.key (tls-crypt)
  • cliente2: ca.crt, cliente2-openvpn-redeszone.crt, cliente2-openvpn-redeszone.key, ta.key (tls-crypt)

Si vamos a usar tls-auth en lugar de tls-crypt (porque no es compatible por ejemplo), debemos tener esto en cuenta:

En la configuración del servidor (servidor.conf o servidor.ovpn) deberemos poner:

tls-auth ta.key 0 (0 de Incoming)

En la configuración del cliente (cliente.conf o cliente.ovpn) deberemos poner:

tls-auth ta.key 1 (1 de Outgoing)

A continuación, os ponemos una tabla de qué es cada certificado (los nombres varían).

Cuando tengamos todo organizado en carpetas, ahora es cuando deberemos crear el archivo de configuración (.conf para sistemas Linux y .ovpn para sistemas Windows). Existen ejemplos de los ficheros de configuración en la web oficial de OpenVPN, y también en la ruta «/usr/share/doc/openvpn/examples/examples-config-files/».

Lo primero que tenemos que verificar es si nuestro servidor y clientes soportan los cifrados simétricos, tls-ciphersuites (TLS 1.3) y tls-cipher (TLS 1.2) y las curvas elípticas configuradas. Debemos tenerlo muy en cuenta, ya que de lo contrario nos dará error. Para realizar estas verificaciones debemos ejecutar:

  • openvpn –show-ciphers
  • openvpn –show-tls (nos mostrará tanto si soporta TLS 1.3 y cuáles, como TLS 1.2)
  • openvpn –show-curves

Paso 5: Configurar el servidor

La configuración del servidor OpenVPN es fundamental para dar permisos de acceso a los clientes a nuestra red local, configurar la negociación TLS. Debido a que tenemos cientos de configuraciones disponibles, nosotros os vamos a poner nuestra configuración con unos comentarios explicando cada parámetro, podéis copiar y pegar la configuración sin problemas. Recordad que para Linux debe tener extensión .conf y para Windows .ovpn.

#PUERTO A UTILIZAR POR TCP O UDP, POR DEFECTO ES 1194.
#PROTOCOLO A UTILIZAR TCP O UDP
#MODO TUNNELING
port 11949
proto udp
dev tun

#CERTIFICADOS
#SI TENEMOS EL .CONF EN LA MISMA CARPETA NO HACE FALTA METER RUTA, SOLO EL NOMBRE.
#SI ESTAN EN OTRA RUTA, DEBEREMOS METER LA RUTA DE TODOS ELLOS

ca ca.crt
cert servidor-openvpn-redeszone.crt
key servidor-openvpn-redeszone.key
#dh dh.pem (OPCIONAL PORQUE USAMOS ECDHE)
dh none
tls-crypt ta.key

#COMPROBAMOS LOS CERTIFICADOS DE LOS CLIENTES (MAYOR SEGURIDAD)
remote-cert-tls client

#MODIFICAMOS EL CIFRADO SIMETRICO DEL CANAL DE DATOS, EL CANAL DE CONTROL TLS Y EL ALGORITMO PARA VERIFICAR LA INTEGRIDAD.
#SI USAMOS AES-256-GCM NO ES NECESARIO PONER LA DIRECTIVA AUTH YA QUE NO SE UTILIZA.

cipher AES-256-GCM
tls-ciphersuites TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384:TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256
ecdh-curve secp521r1
tls-version-min 1.2
reneg-sec 0
auth SHA512

#TOPOLOGIA DE LA RED (SE RECOMIENDA SUBNET) Y SUBRED VIRTUAL DONDE ESTARAN LOS CLIENTES.

topology subnet
server 10.8.0.0 255.255.255.0

#CONFIGURAMOS EL SERVIDOR PARA QUE LOS CLIENTES TENGAN LA MISMA IP SIEMPRE, UNA VEZ QUE SE CONECTEN.
ifconfig-pool-persist ipp.txt

#PROPORCIONAMOS AL CLIENTE ACCESO A LA RED DOMESTICA, REALIZAMOS REDIRECCION DE INTERNET Y PROPORCIONAMOS DNS DE OPENDNS.
push «route 192.168.2.0 255.255.255.0»
push «redirect-gateway def1»
push «dhcp-option DNS 208.67.222.222»
push «dhcp-option DNS 208.67.220.220»

#HABILITAMOS COMUNICACION ENTRE LOS CLIENTES, HABILITAMOS KEEPALIVE PARA SABER SI EL TUNEL SE HA CAIDO, HABILITAMOS COMPRESION Y UN MAXIMO DE 100 CLIENTES SIMULTANEAMENTE
client-to-client
keepalive 10 120
max-clients 100

#SIN PERMISOS DE USUARIO EN OPENVPN, POR SEGURIDAD DEL SERVIDOR
user nobody
group nogroup

#CLAVE Y TUNEL PERSISTENTE
persist-key
persist-tun

#LOS LOGS DEL SERVIDOR EN ESE FICHERO, CONFIGURACION VERB 3 PARA LOS LOGS.
status openvpn-status.log
verb 3
explicit-exit-notify 1

Hasta aquí hemos llegado con la configuración del servidor, ahora configuraremos los clientes.

Paso 6: Configurar el cliente (o los clientes)

A continuación, podéis ver la configuración del cliente asociada al servidor que hemos visto anteriormente. La única diferencia entre los diferentes clientes.conf es la ruta de los certificados por ejemplo. Muy importante que el cipher, tls-cipher y otros parámetros sean exactamente iguales, de lo contrario no conectará con el servidor. Recordad que para Linux debe tener extensión .conf y para Windows .ovpn.

#CONFIGURAMOS EN EL MODO CLIENTE, MODO TUN, PROTOCOLO UDP.

client
dev tun
proto udp

#ESTA DIRECTIVA ES LA DE CONEXION CON LA IP PUBLICA O DOMINIO DEL SERVIDOR OPENVPN, TAMBIEN TENEMOS QUE PONER EL MISMO PUERTO DEL SERVIDOR
remote 127.0.0.1 11949

#RESOLVER CONTINUAMENTE LA IP O DOMINIO PARA CONECTARNOS, CLAVE Y TUN PERSISTENTE COMO EL SERVIDOR.
resolv-retry infinite
nobind
persist-key
persist-tun

#RUTA DE LA CA, CERTIFICADOS DEL CLIENTE Y TA.KEY.
#SI LO TENEMOS EN LA MISMA CARPETA, NO ES NECESARIO PONER LA RUTA ENTERA.
ca ca.crt
cert cliente1-openvpn-redeszone.crt
key cliente1-openvpn-redeszone.key
tls-crypt ta.key

#COMPROBAR LA IDENTIDAD DEL SERVIDOR, USAR CIFRADO SIMETRICO GCM, CONFIGURACION DE TLS 1.2 Y AUTH. Si nuestro cliente no soporta TLS 1.3.
remote-cert-tls server
cipher AES-256-GCM
auth SHA512

#Si nuestro cliente soporta TLS 1.3, añadimos esta directiva:
#tls-ciphersuites TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256

#Si nuestro cliente soporta TLS 1.2 únicamente, añadimos esta directiva:
#tls-cipher TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384:TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256

#HABILITAR LOG DE NIVEL VERBOSE 3

verb 3

Si utilizas Windows, la carpeta de los certificados con el archivo de configuración en extensión .ovpn debe estar en la ruta predeterminada de OpenVPN que es C:UsersBronOpenVPNconfig por defecto, aunque la podremos cambiar. Una vez realizado esto, si pinchamos click derecho sobre OpenVPN en la barra inferior derecha veremos el nombre del archivo del cliente para conectarnos satisfactoriamente.

Últimas recomendaciones de OpenVPN

Para poder tener conectividad con la red local e Internet, es necesario crear una ruta estática en el router de nuestro hogar. Con la configuración de 10.8.0.0/24 que hemos configurado en el servidor OpenVPN, deberemos crear una ruta estática con esta información:

  • IP subred: 10.8.0.0
  • Máscara: 255.255.255.0
  • Puerta de enlace: IP local donde arranquemos el servidor OpenVPN, si por ejemplo tenemos instalado en una Raspberry PI con IP 192.168.1.100, deberemos poner esta IP.

También puedes leer el manual para configurar un servidor OpenVPN en un NAS QNAP utilizando QVPN Service y el manual de VPN para routers de Edimax.

Esperamos que este manual os haya servido de ayuda. Si tenéis cualquier duda podéis ponernos un comentario, os recomendamos visitar el HOWTO oficial de OpenVPN donde encontraréis toda la información sobre los diferentes parámetros a utilizar. También es de muchísima ayuda el MAN PAGE de OpenVPN 2.4 donde tenéis disponible todos los parámetros.

355 Comentarios
Logo redeszone.net
Navega gratis con publicidad…

Navegar por testdevelocidad.es con publicidad personalizada, seguimiento y cookies de forma gratuita. i

Para ello, nosotros y nuestros socios i necesitamos tu consentimiento i para el tratamiento de datos personales i para los siguientes fines:

Las cookies, los identificadores de dispositivos o los identificadores online de similares características (p. ej., los identificadores basados en inicio de sesión, los identificadores asignados aleatoriamente, los identificadores basados en la red), junto con otra información (p. ej., la información y el tipo del navegador, el idioma, el tamaño de la pantalla, las tecnologías compatibles, etc.), pueden almacenarse o leerse en tu dispositivo a fin de reconocerlo siempre que se conecte a una aplicación o a una página web para una o varias de los finalidades que se recogen en el presente texto.

La mayoría de las finalidades que se explican en este texto dependen del almacenamiento o del acceso a la información de tu dispositivo cuando utilizas una aplicación o visitas una página web. Por ejemplo, es posible que un proveedor o un editor/medio de comunicación necesiten almacenar una cookie en tu dispositivo la primera vez que visite una página web a fin de poder reconocer tu dispositivo las próximas veces que vuelva a visitarla (accediendo a esta cookie cada vez que lo haga).

La publicidad y el contenido pueden personalizarse basándose en tu perfil. Tu actividad en este servicio puede utilizarse para crear o mejorar un perfil sobre tu persona para recibir publicidad o contenido personalizados. El rendimiento de la publicidad y del contenido puede medirse. Los informes pueden generarse en función de tu actividad y la de otros usuarios. Tu actividad en este servicio puede ayudar a desarrollar y mejorar productos y servicios.

La publicidad que se presenta en este servicio puede basarse en datos limitados, tales como la página web o la aplicación que esté utilizando, tu ubicación no precisa, el tipo de dispositivo o el contenido con el que está interactuando (o con el que ha interactuado) (por ejemplo, para limitar el número de veces que se presenta un anuncio concreto).

  • Un fabricante de automóviles quiere promocionar sus vehículos eléctricos a los usuarios respetuosos con el medioambiente que viven en la ciudad fuera del horario laboral. La publicidad se presenta en una página con contenido relacionado (como un artículo sobre medidas contra el cambio climático) después de las 18:30 h a los usuarios cuya ubicación no precisa sugiera que se encuentran en una zona urbana.
  • Un importante fabricante de acuarelas quiere realizar una campaña publicitaria en Internet para dar a conocer su última gama de acuarelas con la finalidad de llegar tanto a artistas aficionados como a profesionales y, a su vez, se evite mostrar el anuncio junto a otro contenido no relacionado (por ejemplo, artículos sobre cómo pintar una casa). Se detectará y limitará el número de veces que se ha presentado el anuncio a fin de no mostrarlo demasiadas veces.

La información sobre tu actividad en este servicio (por ejemplo, los formularios que rellenes, el contenido que estás consumiendo) puede almacenarse y combinarse con otra información que se tenga sobre tu persona o sobre usuarios similares(por ejemplo, información sobre tu actividad previa en este servicio y en otras páginas web o aplicaciones). Posteriormente, esto se utilizará para crear o mejorar un perfil sobre tu persona (que podría incluir posibles intereses y aspectos personales). Tu perfil puede utilizarse (también en un momento posterior) para mostrarte publicidad que pueda parecerte más relevante en función de tus posibles intereses, ya sea por parte nuestra o de terceros.

  • En una plataforma de redes sociales has leído varios artículos sobre cómo construir una casa en un árbol Esta información podría añadirse a un perfil determinado para indicar tuinterés en el contenido relacionado con la naturaleza, así como en los tutoriales de bricolaje (con el objetivo de permitir la personalización del contenido, de modo que en el futuro, por ejemplo, se te muestren más publicaciones de blogs y artículos sobre casas en árboles y cabañas de madera).
  • Has visualizado tres vídeos sobre la exploración espacial en diferentes aplicaciones de televisión. Una plataforma de noticias sin relación con las anteriores y con la que no has tenido contacto en el pasado crea un perfil basado en esa conducta de visualización marcando la exploración del espacio como un tema de tu posible interés para para otros vídeos.

El contenido que se te presenta en este servicio puede basarse en un perfilde personalización de contenido que se haya realizado previamente sobre tu persona, lo que puede reflejar tu actividad en este u otros servicios (por ejemplo, los formularios con los que interactúas o el contenido que visualizas), tus posibles intereses y aspectos personales. Un ejemplo de lo anterior sería la adaptación del orden en el que se te presenta el contenido, para que así te resulte más sencillo encontrar el contenido (no publicitario) que coincida con tus intereses.

  • Has leído unos artículos sobre comida vegetariana en una plataforma de redes sociales. Posteriormente has usado una aplicación de cocina de una empresa sin relación con la anterior plataforma. El perfil que se ha creado sobre tu persona en la plataforma de redes sociales se utilizará para mostrarte recetas vegetarianas en la pantalla de bienvenida de la aplicación de cocina.
  • Has visualizado tres vídeos sobre remo en páginas web diferentes. Una plataforma de video, no relacionada con la página web en la que has visualizado los vídeos sobre remo, pero basandose en el perfil creado cuando visistaste dicha web, podrá recomendarte otros 5 vídeos sobre remo cuando utilices la plataforma de video a través de tu televisor .

La información sobre qué publicidad se te presenta y sobre la forma en que interactúas con ella puede utilizarse para determinar lo bien que ha funcionado un anuncio en tu caso o en el de otros usuarios y si se han alcanzado los objetivos publicitarios. Por ejemplo, si has visualizado un anuncio, si has hecho clic sobre el mismo, si eso te ha llevado posteriormente a comprar un producto o a visitar una página web, etc. Esto resulta muy útil para comprender la relevancia de las campañas publicitarias./p>

  • Has hecho clic en un anuncio en una página web/medio de comunicación sobre descuentos realizados por una tienda online con motivo del “Black Friday” online y posteriormente has comprado un producto. Ese clic que has hecho estará vinculado a esa compra. Tu interacción y la de otros usuarios se medirán para saber el número de clics en el anuncio que han terminado en compra.
  • Usted es una de las pocas personas que ha hecho clic en un anuncio que promociona un descuento por el “Día de la madre”de una tienda de regalos en Internet dentro de la aplicación de una web/medio de comunicación. El medio de comunicación quiere contar con informes para comprender con qué frecuencia usted y otros usuarios han visualizado o han hecho clic en un anuncio determinado dentro de la aplicación y, en particular, en el anuncio del “Día de la madre” para así ayudar al medio de comunicación y a sus socios (por ejemplo, las agencias de publicidad) a optimizar la ubicación de los anuncios.

La información sobre qué contenido se te presenta y sobre la forma en que interactúas con él puede utilizarse para determinar, por ejemplo, si el contenido (no publicitario) ha llegado a su público previsto y ha coincidido con sus intereses. Por ejemplo, si hasleído un artículo, si has visualizado un vídeo, si has escuchado un “pódcast” o si has consultado la descripción de un producto, cuánto tiempo has pasado en esos servicios y en las páginas web que has visitado, etc. Esto resulta muy útil para comprender la relevancia del contenido (no publicitario) que se te muestra.

  • Has leído una publicación en un blog sobre senderismo desde la aplicación móvil de un editor/medio de comunicación y has seguido un enlace a una publicación recomendada y relacionada con esa publicación. Tus interacciones se registrarán para indicar que la publicación inicial sobre senderismo te ha resultado útil y que la misma ha tenido éxito a la hora de ganarse tu interés en la publicación relacionada. Esto se medirá para saber si deben publicarse más contenidos sobre senderismo en el futuro y para saber dónde emplazarlos en la pantalla de inicio de la aplicación móvil.
  • Se te ha presentado un vídeo sobre tendencias de moda, pero tu y otros usuarios habéis dejado de visualizarlo transcurridos unos 30 segundos. Esta información se utilizará para valorar la duración óptima de los futuros vídeos sobre tendencias de moda.

Se pueden generar informes basados en la combinación de conjuntos de datos (como perfiles de usuario, estadísticas, estudios de mercado, datos analíticos) respecto a tus interacciones y las de otros usuarios con el contenido publicitario (o no publicitario) para identificar las características comunes (por ejemplo, para determinar qué público objetivo es más receptivo a una campaña publicitaria o a ciertos contenidos).

  • El propietario de una librería que opera en Internet quiere contar con informes comerciales que muestren la proporción de visitantes que han visitado su página y se han ido sin comprar nada o que han consultado y comprado la última autobiografía publicada, así como la edad media y la distribución de género para cada uno de los dos grupos de visitantes. Posteriormente, los datos relacionados con la navegación que realizas en su página y sobre tus características personales se utilizan y combinan con otros datos para crear estas estadísticas.
  • Un anunciante quiere tener una mayor comprensión del tipo de público que interactúa con sus anuncios. Por ello, acude a un instituto de investigación con el fin de comparar las características de los usuarios que han interactuado con el anuncio con los atributos típicos de usuarios de plataformas similares en diferentes dispositivos. Esta comparación revela al anunciante que su público publicitario está accediendo principalmente a los anuncios a través de dispositivos móviles y que es probable que su rango de edad se encuentre entre los 45 y los 60 años.

La información sobre tu actividad en este servicio, como tu interacción con los anuncios o con el contenido, puede resultar muy útil para mejorar productos y servicios, así como para crear otros nuevos en base a las interacciones de los usuarios, el tipo de audiencia, etc. Esta finalidad específica no incluye el desarrollo ni la mejora de los perfiles de usuario y de identificadores.

  • Una plataforma tecnológica que opera con un proveedor de redes sociales observa un crecimiento en los usuarios de aplicaciones móviles y se da cuenta de que, en funciónde sus perfiles, muchos de ellos se conectan a través de conexiones móviles. La plataforma utiliza una tecnología nueva para mostrar anuncios con un formato óptimo para los dispositivos móviles y con un ancho de banda bajo a fin de mejorar su rendimiento.
  • Un anunciante está buscando una forma de mostrar anuncios en un nuevo tipo de dispositivo. El anunciante recopila información sobre la forma en que los usuarios interactúan con este nuevo tipo de dispositivo con el fin de determinar si puede crear un nuevo mecanismo para mostrar la publicidad en ese tipo de dispositivo.

El contenido que se presenta en este servicio puede basarse en datos limitados, como por ejemplo la página web o la aplicación que esté utilizando, tu ubicación no precisa, el tipo de dispositivo o el contenido con el que estás interactuando (o con el que has interactuado) (por ejemplo, para limitar el número de veces que se te presenta un vídeo o un artículo en concreto).

  • Una revista de viajes, para mejorar las experiencias de viaje en el extranjero, ha publicado en su página web un artículo sobre nuevos cursos que ofrece una escuela de idiomas por Internet. Las publicaciones del blog de la escuela se insertan directamente en la parte inferior de la página y se seleccionan en función de la ubicación no precisa del usuario (por ejemplo, publicaciones del blog que explican el plan de estudios del curso para idiomas diferentes al del país en el que este te encuentras).
  • Una aplicación móvil de noticias deportivas ha iniciado una nueva sección de artículos sobre los últimos partidos de fútbol. Cada artículo incluye vídeos alojados por una plataforma de streaming independiente que muestra los aspectos destacados de cada partido. Si adelantas un vídeo, esta información puede utilizarse para determinar que el siguiente vídeo a reproducir sea de menor duración.

Se puede utilizar la localización geográfica precisa y la información sobre las características del dispositivo

Al contar con tu aprobación, tu ubicación exacta (dentro de un radio inferior a 500 metros) podrá utilizarse para apoyar las finalidades que se explican en este documento.

Con tu aceptación, se pueden solicitar y utilizar ciertas características específicas de tu dispositivo para distinguirlo de otros (por ejemplo, las fuentes o complementos instalados y la resolución de su pantalla) en apoyo de las finalidades que se explican en este documento.

O sin publicidad desde 1,67€ al mes

Por solo 1,67€ al mes, disfruta de una navegación sin interrupciones por toda la red del Grupo ADSLZone: adslzone.net, movilzona.es, testdevelocidad.es, lamanzanamordida.net, hardzone.es, softzone.es, redeszone.net, topesdegama.com y más. Al unirte a nuestra comunidad, no solo estarás apoyando nuestro trabajo, sino que también te beneficiarás de una experiencia online sin publicidad ni cookies de seguimiento.