Ver destacados

Cómo instalar y configurar OpenVPN en Debian

En este tutorial aprenderás cómo instalar OpenVPN en la distribución Linux Debian 8 además de cómo configurarlo.
Escrito por
44.4K Visitas  |  Publicado dic 17 2016 20:30
Favorito
Compartir
Comparte esta pagina a tus Amigos y Contactos usando las siguientes Redes Sociales


OpenVPN es sin lugar a dudas es la mejor forma como podemos unirnos de manera segura a una red a través de internet, OpenVPN es un recurso VPN de código abierto que nos permite como usuarios enmascarar nuestra navegación para evitar ser víctimas en la red.

 

Estos son aspectos muy importantes a nivel de seguridad que debemos tener en cuenta y en esta oportunidad vamos a analizar el proceso de configuración de OpenVPN en un entorno Debian 8.

 

Nota
Antes de comenzar el proceso de instalación es importante cumplir con ciertos requisitos, éstos son:
  • Usuario root.
  • Droplet Debian 8, actualmente tenemos Debian 8.1

 

 


1. Cómo instalar OpenVPN


El primer paso que realizaremos es actualizar todos los paquetes del entorno usando el comando:
apt-get update

 

Una vez se hayan descargado y actualizado los paquetes vamos a instalar OpenVPN usando easy-RSA para temas de encriptación. Vamos a ejecutar el siguiente comando:

apt-get install openvpn easy-rsa

 

A continuación debemos configurar nuestro OpenVPN, los archivos de configuración de OpenVPN son almacenados en la siguiente ruta: /etc/openvpn y estos los debemos agregar a nuestra configuración, vamos a usar el siguiente comando:

gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf
Una vez hayamos extraído estos archivos en la ruta seleccionada vamos a abrirlos usando el editor nano, ejecutaremos el siguiente comando:
nano /etc/openvpn/server.conf
Veremos la siguiente ventana:

 

 

Una vez estemos allí debemos realizar algunas modificaciones en el archivo, éstos cambios básicamente son:

  • Asegurar el servidor con cifrado de alto nivel
  • Permitir el tráfico web hacia el destino
  • Impedir que las solicitudes DNS se filtren por fuera de la conexión VPN
  • Permisos de instalación

 

Vamos a duplicar la longitud de la clave RSA que es usada cuando se generan las claves tanto del servidor como del cliente, para ello vamos a buscar en el archivo los siguientes valores y vamos a modificar el valor dh1024.pem por el valor dh2048.pem:

# Diffie hellman parameters.
# Generate your own with:
#   openssl dhparam -out dh1024.pem 1024
# Substitute 2048 for 1024 if you are using
# 2048 bit keys.
dh dh1024.pem

 

Ahora vamos a asegurarnos que el tráfico esté correctamente redirigido al destino, vamos quitar el comentario push "redirect-gateway def1 bypass-dhcp” eliminando el ; al inicio del mismo. en el archivo server.conf:

# If enabled, this directive will configure
# all clients to redirect their default
# network gateway through the VPN, causing
# all IP traffic such as web browsing and
# and DNS lookups to go through the VPN
# (The OpenVPN server machine may need to NAT
# or bridge the TUN/TAP interface to the internet
# in ***** for this to work properly).
;push "redirect-gateway def1 bypass-dhcp"

 

El siguiente paso será indicarle al servidor que use OpenDNS para la resolución de nombres DNS siempre y cuando sea posible, de esta manera evitamos que las solicitudes DNS estén por fuera de la conexión VPN, debemos ubicar el siguiente texto en nuestro archivo:

# Certain Windows-specific network settings
# can be pushed to clients, such as DNS
# or WINS server addresses.  CAVEAT:
# http://openvpn.net/faq.html#dhcpcaveats
# The addresses below refer to the public
# DNS servers provided by opendns.com.
;push "dhcp-option DNS 208.67.222.222"
;push "dhcp-option DNS 208.67.220.220"
Allí debemos desmarcar los comentarios push "dhcp-option DNS 208.67.222.222" y push "dhcp-option DNS 208.67.220.220" quitando el ; del inicio.

 

 

Por último vamos a definir los permisos en el mismo archivo que estamos trabajando, ubicamos el siguiente texto:

# You can uncomment this out on
# non-Windows systems.
;user nobody
;group nogroup
Procedemos a desmarcar eliminar el signo ; del inicio de los textos user nobody y group nogroup.

 

 

Como sabemos OpenVPN se ejecuta de forma predeterminada como usuario root permitiendo editar cualquier parámetro, con el último cambio vamos a limitarlo a el usuario nobody y al grupo nogroup por temas de seguridad.
Guardamos los cambios usando la combinación de teclas:

 

 

Ctrl + O

 

 

Y salimos del editor usando:

 

 

Ctrl + X

 

 

A continuación vamos a habilitar el reenvio de paquetes hacia la red externa, para ello ejecutaremos el siguiente comando:

echo 1 > /proc/sys/net/ipv4/ip_forward
Debemos hacer que este cambio sea permanente, no que tengamos que hacerlo cada vez que iniciamos el Sistema, para hacerlo continuo vamos a ingresar al archivo systcl usando el editor nano, para ello ejecutaremos lo siguiente:
nano /etc/sysctl.conf
Se desplegará la siguiente ventana:

 

 

Vamos a ubicar la siguiente línea:

# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1
Nota
Recordemos que podemos usar la búsqueda del editor usando la combinación de teclas:

 

 

Ctrl + W

 

 

Allí vamos a desmarcar el comentario net.ipv4.ip_forward=1 eliminando el símbolo #.

 

 

 

El siguiente paso que debemos realizar es configurar UFW. UFW es una configuración de firewall para tablas ip, por ende vamos a realizar algunos ajustes para cambiar la seguridad UFW. Como primer paso vamos a instalar los paquetes UFW usando el siguiente comando:

apt-get install ufw

 

Una vez se hayan descargado e instalado los paquetes necesarios de UFW vamos a configurar UFW para que permita conexiones SSH, para ello ejecutaremos lo siguiente:

ufw allow ssh

 

En nuestro caso estamos trabajando en el puerto 1194 de UDP, debemos configurar este puerto para que la comunicación sea satisfactoria, ingresaremos lo siguiente:

ufw allow 1194/udp
Nota
Podemos ver los puertos de nuestra consola usando el comando lsof –iUDP

 

A continuación vamos a editar el archivo de configuración de UFW para ello ingresaremos con el editor nano en la siguiente ruta:

nano /etc/default/ufw
Se abrirá la siguiente ventana:

 

 

Allí vamos a realizar algunos cambios, ubicaremos la siguiente línea, donde cambiaremos DROP por ACCEPT.

DEFAULT_FORWARD_POLICY="DROP"
El siguiente paso es añadir algunas reglas en UFW para la traducción de las direcciones de red y el correcto enmascaramiento de las direcciones IP de los usuarios que se conecten. Vamos a abrir el siguiente archivo usando el editor nano:
nano /etc/ufw/before.rules
Veremos que se despliega la siguiente ventana:

 

 

Vamos a agregar el siguiente texto:

# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES

 

Una vez hayamos realizado estos cambios vamos a proceder a habilitar UFW usando el siguiente comando:

ufw enable

 

Para verificar las reglas del firewall usamos el siguiente comando:

ufw status

 

 


2. Crear certificado autoridad OpenVPN


El siguiente paso en nuestro proceso es crear el certificado de autoridad para el ingreso a través de OpenVPN, recordemos que OpenVPN usa estos certificados para encriptar el tráfico. OpenVPN es compatible con la certificación bidireccional, es decir, el cliente debe autenticar el certificado del servidor y viceversa.
Vamos a copiar los scripts sobre easy-RSA usando el siguiente comando:
cp -r /usr/share/easy-rsa/ /etc/openvpn
Vamos a crear un directorio para almacenar las claves, usaremos el siguiente comando:
mkdir /etc/openvpn/easy-rsa/keys
El siguiente paso es editar los parámetros de los certificados, usaremos el siguiente comando:
nano /etc/openvpn/easy-rsa/vars
Se desplegará la siguiente ventana:

 

 

Vamos a modificar los siguientes parámetros según nuestros requisitos:

export KEY_COUNTRY="CO"
export KEY_PROVINCE="BO"
export KEY_CITY="Bogota"
export KEY_ORG="Solvetic"
export KEY_EMAIL="johnmarioduque@hotmail.com"
export KEY_OU="Solvetic"

 

En el mismo archivo vamos a editar la siguiente línea:

# X509 Subject Field
export KEY_NAME="EasyRSA"
Vamos a cambiar el valor EasyRSA por el nombre del servidor que deseemos, nosotros usaremos el nombre Solvetic.

 

 

A continuación vamos a configurar los parámetros de Diffie-Helman usando una herramienta que viene integrada con el OpenSSL la cual se llama dhparam. Ingresaremos y ejecutaremos el siguiente comando:

openssl dhparam -out /etc/openvpn/dh2048.pem 2048

 

 

Una vez generado el certificado vamos a cambiar el directorio de easy-RSA usando el comando:

cd /etc/openvpn/easy-rsa
Vamos a inicializar el PKI, usaremos el comando:
. ./vars

 

Vamos a limpiar las demás claves para que no interfieran con la instalación usando el comando:

./clean-all
A continuación vamos a construir el certificado usando el siguiente comando de OpenSSL:
./build-ca

 

Podremos ver una serie de preguntas que están relacionadas con la información antes ingresada, de esta manera el certificado ha sido generado. A continuación vamos a iniciar nuestro servidor de OpenVPN, para ello editaremos el archivo ubicado en la ruta /etc/openvpn/easy-rsa usando el nombre de clave ya especificado con anterioridad, en nuestro caso Solvetic. Vamos a ejecutar el siguiente comando:

./build-key-server Solvetic

 

En las líneas a continuación podremos dejar el espacio en blanco y presionar Enter:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Se desplegarán la siguiente ventana donde debemos ingresar la letra y (yes) para aceptar las siguientes dos preguntas: Firmar el certificado y requerimiento de certificados.

 

 

 

Ahora vamos a mover tanto los certificados como las claves a la ruta /etc/openvpn, ejecutaremos el siguiente comando:

cp /etc/openvpn/easy-rsa/keys/{Solvetic.crt,Solvetic.key,ca.crt} /etc/openvpn
Una vez realizado este proceso vamos a iniciar el servicio de OpenVPN usando el comando:
service openvpn start
Para ver el estado usaremos el comando:
service oopenvpn status

 

Nuestro siguiente paso será crear los certificados y llaves para los clientes que desean conectarse a la VPN. Lo ideal, por seguridad, es que cada cliente que se conecta al servidor tenga su propio certificado y llave, nunca compartirla, por defecto OpenVPN no permite conexiones simultáneas con el mismo certificado y clave. Vamos a crear la llave para nuestro cliente, para ello ingresaremos el siguiente comando:

./build-key Nombre_Cliente, en nuestro ejemplo vamos a usar el siguiente comando:
./build-key Pruebas

 

Completamos los campos requeridos y a continuación vamos a copiar la clave generada en el directorio easy-RSA.

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/easy-rsa/keys/client.ovpn.
Ahora vamos a descargar de manera gratuita la herramienta Winscp desde el siguiente enlace. Esta herramienta nos permitirá conectarnos a través de SFTP o FTP a nuestra máquina Debian para verificar que los archivos están creados correctamente. Una vez la hayamos descargado y ejecutado está será la ventana que podremos ver:

 

 

Allí ingresamos la dirección IP de la máquina Debian recordemos que la IP la podemos validar usando el comando ifconfig, ingresamos las credenciales y una vez pulsemos Conectar podremos ver lo siguiente:

 

 

Allí podemos ver en el costado derecho los archivos respectivos de las claves y llaves. Para acceder vía OpenVPN vamos a descargar desde el siguiente enlace la herramienta OpenVPN versión 2.3.11. Una vez la hayamos descargado debemos tener en cuenta realizar algunos cambios en dicha herramienta, lo primero que vamos a hacer es copiar los archivos de claves y llaves en la ruta donde comúnmente se instala OpenVPN:

C:\Program Files\OpenVPN\config
Posteriormente vamos a crear un archivo en notepad o el editor de texto que tengamos con la siguiente información:
client
dev tun
proto udp
remote 192.168.0.12 1194
key client.key
cert client.crt
ca ca.crt
auth-user-pass
persist-key
persist-tun
comp-lzo
verb 3
Nota
La IP es la de nuestra máquina Debian y el puerto, como ya lo vimos anteriormente, es UDP 1194.
Este archivo debe guardarse con la extensión .ovpn.

 

 

 


3. Prueba de acceso cliente OpenVPN


Vamos a ejecutar OPenVPN y este será el entorno con el cual nos encontraremos:

 

 

Ingresamos las credenciales del usuario a conectarnos y damos clic en Ok y podremos ver lo siguiente

 

 

 

nota
Esta conexión la estamos realizando desde un equipo con Windows 7.

 

Ahora podemos ver en la barra de notificación que la conexión ha sido correcta y podremos ver la nueva dirección IP.

 

 

Si damos clic derecho sobre la herramienta (ícono en la barra de notificación) contamos con las siguientes opciones:

 

 

Desde aquí podremos realizar las tareas que consideremos necesarias. Por ejemplo si seleccionamos Show Status veremos lo siguiente:

 

 

 


4. Herramientas de seguridad OpenVPN']


Es indudable que la navegación en internet puede acarrear problemas de seguridad como por ejemplo virus, robo de información, spyware, etc, por ello existen algunas herramientas que podemos implementar para mejorar la seguridad en nuestra máquina una vez configurado el OpenVPN.

 

Hablemos de Clamav el cual es un antivirus poderoso que nos ayudará a mantener un control sobre archivos o procesos infectados en nuestro Debian 8.1. Es un software de código abierto que permite detectar troyanos, malware y otras amenazas latentes en nuestros equipos. El proceso de instalación es muy sencillo, para ello ejecutaremos el siguiente comando:

Sudo apt-get install clamav

 

Posteriormente ejecutaremos freshclam para que se actualice toda la base de datos de Clamav.
Para correr un escaneo sobre la máquina ingresaremos la siguiente sintaxis:

Clamscan –infected –remove –recursive  /home
Después de un momento veremos un resumen de la tarea de escaneo:

 

 

Otra de las herramientas que podemos usar para mejorar nuestra seguridad es Privoxy el cual funciona como proxy web e incluye funciones avanzadas para proteger la privacidad, administrar cookies, controlar accesos, eliminar anuncios, entre otros. Para instalarlo en nuestro sistema Debian 8.1 ejecutaremos el siguiente comando:

Sudo apt-get install privoxy

 

Recordemos que si estamos como usuarios root el sudo no es necesario. Una vez descargados e instalados todos los paquetes de Privoxy vamos a modificar unos parámetros en el archivo de configuración de éste, para ello ejecutaremos el siguiente comando:

Sudo nano /etc/privoxy/config
Se desplegará lo siguiente:

 

 

Allí debemos ubicar la línea listen-address localhost:8118 y debemos agregar 2 parámetros, primero agregar el símbolo # al inicio de esta línea e ingresar debajo de ésta el término listen-address ip_de_nuestra máquina:8118, en nuestro caso es:

listen-address 192.168.0.10:8118.
Una vez realizado esto vamos a reiniciar el servicio usando:
sudo /etc/init.d/privoxy restart

 

A continuación vamos al navegador que tengamos en Debian y procedemos a modificar los parámetros del Proxy, debemos confirmar que la IP sea la que adicionamos y el puerto sea el 8118. En nuestro ejemplo usamos IceWeasel y debemos ingresar a:

  • Preferencias
  • Avanzadas
  • Red
  • Configuración de la conexión
  • Configuración manual del proxy

 

 

Una vez configurada damos clic en Aceptar. Ahora podemos ver como Privoxy nos ayuda en la seguridad:

 

 

Existen otras herramientas que nos pueden ayudar a mejorar la navegación usando nuestro OpenVPN, podemos implementar:

 

Dnsmasq
Nos provee servicios DNS de esta manera únicamente usamos el caché de la DNS.

 

HAVP
Con esta herramienta tenemos un proxy con antivirus, ésta escanea todo el tráfico en búsqueda de virus o algún comportamiento extraño.

 

Como vemos es muy importante tomar medidas que nos ayuden a mantener un control sobre nuestra navegación y tener muy en claro que de nosotros depende el correcto funcionamiento de Debian 8.1

 

Continuemos explorando todas las grandes bondades que nos ofrece Debian 8.1 y mejoremos nuestro entorno ya que muchos de nosotros somos administradores, coordinadores o personas encargadas del área de IT y estos consejos nos ayudan a sobrellevar el día a día de manera más fácil y con la posibilidad de no tener en el futuro problemas críticos que pueden ser un gran dolor de cabeza.

 

¿Te ayudó este Tutorial?

Ayuda a mejorar este Tutorial!
¿Quieres ayudarnos a mejorar este tutorial más? Puedes enviar tu Revisión con los cambios que considere útiles. Ya hay 0 usuario que han contribuido en este tutorial al enviar sus Revisiones. ¡Puedes ser el próximo!