Configuración de OpenVPN en Debian con un cliente Windows

Resultado de imagen de OPENVPN

1. INTRODUCIÓN

2. ACTUALIZAR EL SISTEMA

3. INSTALAMOS EL SERVIDOR OPENVPN JUNTO CON EASY-RSA PARA CREAR CERTIFICADOS

4. CONFIGURACIÓN DE LA AUTORIDAD DE CERTIFICACIÓN

5. CREAR TIPO DE CRYPTOGRAFIA PARA LAS CONEXIONES

6. CREAR CERTIFICADO Y CLAVE DEL SERVIDOR

7. CREAR CERTIFICADO Y CLAVE DEL CLIENTE

8. CONFIGURAR EL SERVIDOR

9. INICIAR EL SERVIDOR VPN

10. CONFIGURAR EL CLIENTE

11. AUTENTIFICACIÓN DEL CLIENTE

12. CONFIGURACIÓN DE FIREWALL

13. FICHERO DE LOG

14. EJERCICIOS

INTRODUCIÓN

OpenVPN es una solución de conectividad basada en software libre con licencia GPL. OpenVPN incluye:

  • SSL (Secure Sockets Layer).
  • VPN (Virtual Private Network, red virtual privada).

OpenVPN ofrece conectividad punto-a-punto con validación jerárquica de usuarios y host conectados remotamente, resulta una muy buena opción en tecnologías Wi-Fi (redes inalámbricas IEEE 802.11) y soporta una amplia configuración, entre ellas balanceo de cargas.

Lo que hace esta tecnología, básicamente, es conectar un ordenador (cliente) con una red (la del servidor). Esto tiene diferentes utilidades, en las empresas lo usan mucho para extender las redes privadas de sus diferentes sedes y conectarlas de manera segura. Pero lo que más nos interesa a nosotros, es que puede proporcionarnos privacidad y seguridad.

Aun así, montar un servidor VPN no sirve para tener más seguridad en la red en la que se instala. Está pensado para proporcionarla cuando estamos fuera de esta, con un portátil o el móvil, por ejemplo.

OpenVpn tiene dos modos de configuración:

TUN: Modo Routing, crea un túnel entre el cliente y el servidor, el túnel generado se establece en un rango de IP’s diferente a la del servidor. En modo routing con OpenVPN el cliente y el servidor no pueden tener la misma IP, en caso contrario no conectaría

TAP: Modo Bridge, el ordenador cliente tendrá una IP en la misma red que el servidor cuando creemos la conexión.

Instalación y Configuración

Pasos a seguir.

ACTUALIZAR EL SISTEMA

apt-get update && apt-get upgrade

INSTALAMOS EL SERVIDOR OPENVPN JUNTO CON EASY-RSA PARA CREAR CERTIFICADOS

Crearemos un certificado CA (Cerificate Authority), que permitirá para que sólo se conecten clientes, a nuestro servidor VPN, que tengan certificados firmados por este CA. Después, crearemos el certificado del servidor y su llave, y por último el certificado y llave del cliente.

easy-rsa es una utilidad para facilitar la creación de los certificados. Podemos usarla para cualquier otro software que requiera de ellos (Apache, Nginx, Dovecot, …)

apt-get install openvpn easy-rsa

Se crea la carpeta openvpn en el directorio /etc

CONFIGURACIÓN DE LA AUTORIDAD DE CERTIFICACIÓN.

Lo primero que vamos a hacer es crear nuestra autoridad de certificación para poder emitir todos los certificados y claves necesarios.

A continuación, edite /usr/share/easy-rsa/vars ajustando el siguiente a su entorno:

Ahora vamos a editar el fichero “vars” y modificamos lo que se lista a continuación ajustándolo a nuestro entorno:

nano vars

export KEY_COUNTRY=”codigo del pais”
export KEY_PROVINCE=”codigo de provincia”
export KEY_CITY=”ciudad”
export KEY_ORG=”organizacion”
export KEY_EMAIL=”direccion de email”
export KEY_OU=”departamento”

export KEY_CN=”nombre del servidor”
export KEY_ALTNAMES=”algo, lo que queramos”

En la siguiente captura vemos como ha quedado en mi caso particular:

Ahora vamos a crear el certificado y clave de nuestra autoridad de certificación. Para ello, tomamos como origen el fichero vars que acabamos de editar:

source var ó . vars  //Para ejecutar el uso de la plantilla vars que acabamos de modificar

Con el siguiente comando se borrarían las claves existentes en la carpeta keys, en el caso que no existia nada, se creara solo el directorio donde vaya almacenando los certificados que vamos a crear. Cuando ejecutamos el comando lo avisa.

./clean-all

Ahora generamos el certificado y clave de nuestra autoridad de certificación:

./build-ca

Todos estos comandos que estamos tipeando los podemos encontrar en,

Se crean dos archivos el ca.crt y el ca.key en el directorio keys.

CREAR TIPO DE CRYPTOGRAFIA PARA LAS CONEXIONES

Parámetros Diffie Hellman se  generar para el servidor OpenVPN:

./build-dh

Se crea en el directorio keys

CREAR CERTIFICADO Y CLAVE DEL SERVIDOR

A continuación, vamos a generar un certificado y la clave privada para el servidor:

./build-key-server OondeoServerVPN

Asegurarnos que aceptamos la confirmación para que se firma estos certificados, si no, no serán válidos cuando necesita va verificación con la autoridad

Todos los certificados y claves han sido generado en el directorio /keys

Ahora copiaremos los siguientes archivos al directorio /etc/openvpn

cp OondeoServerVPN.crt OondeoServerVPN.key ca.crt dh2048.pem /etc/openvpn/

CREAR CERTIFICADO Y CLAVE DEL CLIENTE

El cliente VPN también necesitará un certificado para autenticarse en el servidor. Por lo general, se crea un certificado diferente para cada cliente.

En este ejemplo vamos a usar el nombre ClienteVPN.

source vars

./build-key nombre_cliente_o_usuario

Confirma que se firme como el anterior, creado para el servidor.

CONFIGURAR EL SERVIDOR

Para configurar el servidor VPN, copie el ejemplo de archivo server.conf.gz de configuración, desde /usr/share/doc/openvpn/examples/sample-config-files, al directorio /etc/openvpn

Descomprime el archivo con el comando gunzip.

gunzip server.conf.gz

Abre el archivo server.conf con un editor de texto y

Modifica/Añade las siguientes 4 líneas del fichero de configuración server.conf.

ca /etc/openvpn/ca.crt  <– Línea 78

cert /etc/openvpn/certificate.crt <– Línea 79

key /etc/openvpn/certificate.key <– Línea 80

dh dh1024.pem <– Linea 87

Explicación del archivo, no copiar en vuestro server.conf

#Puerto de escucha

port 1194

#tipo protocolo udp

proto udp

#Dispositivo virtual en el que se creará el tunel

dev tun

#Ubicación de los certificados y claves del servidor

ca /etc/openvpn/ca.crt

cert /etc/openvpn/certificate.crt

key /etc/openvpn/certificate.key

# Ubicación de los parametros Diffie hellman

dh /etc/openvpn/dh2048.pem

#El servidor tomará la ip 10.8.0.1

#A los clientes se les asignará una ip dentro de esa red

server 10.8.0.0 255.255.255.0

#registramos las ip de los clientes conectados

ifconfig-pool-persist ipp.txt

# Permitimos alcanzar la red local

# a través del tunel

push "route 192.168.1.0 255.255.255.0"

#Redirigimos todo el tráfico a través de la VPN

push "redirect-gateway def1 bypass-dhcp"

# Servidores DNS que usaremos (opendns.com).

push "dhcp-option DNS 208.67.222.222"

push "dhcp-option DNS 208.67.220.220"

# ping cada 10 seg

# tras 120 seg sin respuesta

#se considera el par caido

keepalive 10 120

# Tipo de cifrado.

cipher AES-128-CBC # AES

# habilitamos compresión

comp-lzo

# numero máximo de conexiones

max-clients 10

# limitamos permisos

user nobody

group nogroup

#

persist-key

persist-tun

#Habilitamos logs

status openvpn-status.log

log openvpn.log

# nivel detalle de logs

verb 3

 

Como podéis observar en el fichero de configuración, elegimos el protocolo UDP dado que es más rápido que el TCP (Orientado a Conexión)

INICIAR EL SERVIDOR VPN

service openvpn start

Si todo está bien, la interfaz túnel virtual debe ser activada ahora,  puede comprobar con el comando abajo.

ifconfig

Si no crea el túnel, reinicar servidor.

Comprobar si el puerto por defecto está abierto y se está escuchando las peticiones desde fuera.

netstat -putan | grep 1194

CONFIGURAR EL CLIENTE

Ahora, copie los siguientes archivos en el cliente utilizando un método seguro: voy a usar winscp (tenga en cuenta los permisos, propietarios de los archivos y directorio donde se encuentran los archivos).

/usr/share/easy-rsa/keys/ca.crt

/usr/share/easy-rsa/keys/ClienteVPN.crt

/usr/share/easy-rsa/keys/ClienteVPN.key

Hay que copiar estos tres archivos a la ruta que esté definida en la configuración del OpenVPN

Si os da error de permisos al transferir algún archivo por SFPT, a mi me ha dado con el ClienteVPN.key, hay que cambiar los permisos.

chown jesus:jesus ClienteVPN.key

Ahora hay que cogeremos el archivo client.conf  que se encuentra en la ruta /usr/share/doc/openvpn/examples/sample-config-files/client.conf y lo pasaremos por WinSCP al ordenador desde donde queremos realizar la conexión, en mi caso mi Windows 7.

El archivo client.conf debe renombrarse a ClienteVPN.ovpn

Y modificar las siguientes líneas del archivo ClienteVPN.ovpn, el archivo ClienteVPN.ovpn lo editaremos con Notepadd ++, SublimeText, Visual Studio Code, …

Y poner tanto en el fichero de configuración del cliente como del servidor el tipo de crifrado que se va a usar, como es lógico en ambos el mismo.

Elijo el Triple-DES porque es el cifrado más seguro de los 3 disponibles.

En resumen estos son los parámetros que debe haber en el cliente,

client

dev tun

proto udp

remote 192.168.1.15 1194

ca ca.crt

cert ClienteVPN.crt

key ClienteVPN.key

cipher DES-EDE3-CBC

 

AUTENTIFICACIÓN DEL CLIENTE.

Doble click en el icono,

Observad como ahora nos está dando la IP del túnel, me ha dado la IP 10.8.0.6

Y desde nuestro equipo Windows le podemos pinear.

Y en la interfaces de red de Windows no ha creado otra nueva como es lógico.

CONFIGURACIÓN DE FIREWALL

Cerciorarnos que el firewall acepte las políticas de entrada, dado que si no es así no podremos acceder desde el exterior a ningún servicio del servidor.

Ahora por ejemplo podremos visualizar un servicio como puede ser el web, por la IP del túnel.

FICHERO DE LOG

En la carpeta del cliente log, tenemos los logs que nos avisan de los problemas de conexión.

EJERCICIOS

  1. Una vez que hayas creado la VPN entre el cliente Windows y el Server Debian/Ubuntu, instala el servicio Samba en Linux y observa como el cliente puedes ver las carpetas compartidas.
  2. Realiza una VPN con OpenVPN entre un cliente Windows y un Server Windows. Comparte una carpeta en el server y observa cómo puedes ver la carpeta creada. Levanta el servidor web del Windows server y observa cómo puedes visualizar la web con la IP del servidor a través del túnel.

 

Deja un comentario

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies ACEPTAR

Aviso de cookies