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.
- 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.confUna 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.confVeremos 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 nogroupProcedemos 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_forwardDebemos 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.confSe 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
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
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/ufwSe 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.rulesVeremos 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/openvpnVamos a crear un directorio para almacenar las claves, usaremos el siguiente comando:
mkdir /etc/openvpn/easy-rsa/keysEl siguiente paso es editar los parámetros de los certificados, usaremos el siguiente comando:
nano /etc/openvpn/easy-rsa/varsSe 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-rsaVamos 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-allA 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/openvpnUna vez realizado este proceso vamos a iniciar el servicio de OpenVPN usando el comando:
service openvpn startPara 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\configPosteriormente 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
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
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 /homeDespué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/configSe 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:
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.
Como para no dar 5 estrellas a este tutorial. GRACIAS.