En el siguiente artculo se explica la implementacin de la funcin
de terminacin de tneles Cliente-Servidor con OpenVPN y
pfsense, cuya funcionalidad es implementada nativamente en las actuales versiones. OpenVPN fu creado en 2001, y actualmente es el estandar a nivel seguridad y performance habiendo desplazado a protocolos como PPTP y L2TP que demostraron ser vulnerables y no tan rpidos. En los siguientes links puedes encontrar comparativas entre OpenVPN, L2TP y PPTP: link1 y link2 OpenVPN es actualmente compatible con todos los sistemas operativos. Autenticacin: OpenVPN implementa SSL/TLS mediantes certificados RSA que se considera mucho ms seguro que la utilizacin de claves precompartidas. Es posible tambin la implementacin de OpenVPN en conjunto con LDAP o Radius para el manejo de usuarios y permisos, pero en este tutorial se utilizar la autenticacin Local en el pfSense. Vamos a necesitar: - Certificado Raiz, utilizado para generar los certificados clientes, en nuestro caso generaremos uno propio, por lo tanto seremos nuestra propia entidad certificadora, sin embargo tambin se podra utilizar una CA externa. [OpenVPN-CA] - Certificado Cliente para el pfSense, que nicamente deber estar en el pfSene. [OpenVPN-Servidor] - Certificados Clientes para usuarios, es necesario un certificado para cada usuario que daremos acceso. [OpenVPN-Gabriel] Clientes: Mediante el paquete OpenVPN Client Export Utility es posible generar paquetes instaladores para cada usuario desde el pfSense que configuraran las pc clientes de manera muy sencilla: bsicamente el paquete est conformado por el instalador de openvpn, el archivo de configuracin con los datos de la vpn y los certificados necesarios para conectarse al servidor. Sin embargo, el plugin no siempre mantiene las ltimas versiones de los instaladores; si se va a utilizar es recomendable chequear que no estn defasadas las versiones. Para evitar este problema, en nuestro caso utilizamos el plugin nicamente para generar el zip con la configuracin para cada usuario (certificados + archivo de configuracin), que simplemente hay que copiar en la carpeta de configuracin del cliente para funcionar. Servidor: Es posible configurar ms de un servidor de OpenVPN en un mismo pfSense con diferentes configuraciones (por ejemplo diferentes mtodos de autenticacin, diferente configuracin de puertos, diferentes redes a las que dar acceso, etc). Topologa: Nuestro pfSense cuenta con 3 Interfaces: WAN (numeracin pblica), LAN (segmento de usuarios en la red) y DMZ (segmento de servidores en la red). La configuracin que crearemos dar acceso a la red LAN (192.168.1.0/24). Resumen: Los pasos para esta implementacin son: 1. Creacin de Certificado Raiz (CA) 2. Creacin de Certificado Servidor 3. Configuracin del Servidor 4. Creacin de Usuario + Certificado 5. Instalacin de Cliente Implementacin: Utilizaremos el Wizard propio de pfSense que simplifica el paso 1, 2 y 3. Para comenzar vamos al men VPN, luego OpenVPN y por ltimo a la solapa Wizards, que nos abrir el asistente de configuracin. 1. Seleccionamos el tipo de Servidor, que en nuestro caso ser Local User Access, ya que los usuarios los crearemos y manejaremos mediante el pfSense. Como explicamos antes, tambin es posible configurarlo con un servidor LDAP o Radius. Next.
2. El prximo paso ser la configuracin del Certificado Raiz (la entidad certificadora).Este certificado ser utilizado para luego crear el certificado del servidor y los certificados de usuarios. Si ya existen CAs cargados en el pfSense el asistente nos dejar seleccionar uno (los mismos se pueden crear desde el men System > Cert Manager) o tambin crear uno nuevo; y en caso de no existir ninguno como en el nuestro, directamente nos llevar a la creacin de uno:
Completar la informacin requerida respecto a la organizacin, el Key Lenght recomiendo utilizar 2048 ya que es optimizado entre seguro y performante, y el Lifetime es el tiempo de validez. Add new CA. 3. Ahora es necesario crear el certificado para el servidor, que ser creado en base a la entidad certificadora creada en el paso anterior. Si ya existieran certificados creados podramos simplemente seleccionar uno, en nuestro caso, nos llevar directo a la creacin de uno. La mayora de los datos ya estarn completos basados en los datos de la CA. Faltara completar el nombre y un correo.
Con los datos completos le damos click a Create new Certificate. 4. A cotinuacin el asistente nos lleva a la configuracin del Servidor, que se divide en 4 grupos: General OpenVPN Server Information: Contiene la configuracin de la interface que atender las conexiones (en nuestro caso llegarn desde internet a la interface wan), el puerto y el protocolo que utilizaremos, en nuestro caso los default (en caso de cambiarlos, ser necesario tambin cambiarlos en los clientes). No est dems aclarar, que si quisieramos agregar otro Servidor VPN (algo as como otra instancia de OpenVPN), tendremos que elegir otro puerto. Tambin ser necesario una regla de firewall que permita las conexiones entrantes a ese puerto y procolo en la interface WAN, que crearemos luego.
Cryptographic Settings: La configuracin criptogrfica que utilizaremos es la default, ya que nuevamente consideramos que brinda un buen nivel de seguridad y de performance.
Tunnel Settings: Aqu setearemos la configuracin propia del tunel, esta configuracin es importante. Tunnel Network, ser la red que crearemos para los clientes que se conecten. Por lo tanto, con esta configuracin estamos definiendo el rango de numeracin que se le asginarn a los clientes al conectarse y tambin la ip de la interface virtual que ser la primera de dicha red. Se deber utilizar una red que no est ya utilizada para evitar problemas de ruteo. En nuestro caso utilizaremos 10.0.1.0/24 (entonces, la interfaz virtual que se crear tendr la 10.0.1.1 y los clientes que se conecten tendrn una direccin asignada entre la 10.0.1.2 y la 10.0.1.254). Local Network, define la red a la que daremos acceso y que por ende, ser ruteada en los clientes a travs de la vpn. En nuestro caso, tal cual los descripto en el apartado Topologa, configuraremos la red 192.168.1.0/24. Tambin se puede utilizar la opcin Redirect Gateway, que lo que har bsicamente es rutear todo el trfico del cliente por la VPN, esto har que todas las conexiones que se generen se envien al tunel, incluso por ejemplo las peticiones a numeracin pblica (navegacin web por ejemplo), entonces utilizar la salida del pfSense tambin para navegar. A veces se utiliza este mtodo para dar un mayor nivel de seguridad a la red, evitando que el usuario puentee su salida a internet con la red a la que se est conectando saltandose las restricciones que por ejemplo puedan estar configuradas en el proxy de navegacin web. Nosotros no utilizaremos est opcin para evitar que se utilice nuestra salida a internet para navegar u otros, y que el usuario nicamente nos enve el trfico destinado a nuestra red. Podemos agregar un lmite de conexiones concurrentes como medida de seguridad adicional o para asegurar la performance del equipo (cuanto ms usuarios conectados, mayor uso de procesador). Tambin habilitaremos la compresin que hace mucho ms performante la conexin.
Client Settings: Por ltimo las configuraciones que afectarn a los clientes que se conecten. Setearemos la opcin Adress Pool, que afirma la configuracin del Tunnel Network, o sea, hahbilita a que los clientes reciban una ip de la red definida (10.0.1.0/24). Si no caeran con su numeracin pblica, y esto es algo que no queremos porque perdemos control, por ejemplo a nivel acls. Adems setearemos el servidor dns, que en nuestro caso es el propio pfSense, para que el cliente pueda resolver nombres internos.
No necesitamos setear nada ms, por lo que damos a la opcin Next. 5. El prximo paso nos permite agregar automticamente la regla que permite el trfico desde internet al puerto y protocolo configurado en el paso anterior. Adems nos permite agregar o no, una regla en la nueva interface que crear el pfSense, la 10.0.1.0/24, donde caern los usuarios conectados, si seleccionamos esta opcin, la regla que se crear sera de origen ANY, destino ANY, y puerto y protocolo tambin ANY. Ya que nosotros no quremos dar acceso a los usuarios que se conecten a la red DMZ y slamente a la red LAN, no seleccionaremos esta opcin y crearemos la regla a mano. Pueden seleccionar esta opcin si no desean aplicar restricciones.
Cuando le demos Next, el asistente finaliza e indica que fu configurado el servidor correctamente. 6. Si ahora vamos al men Firewall, y luego a Rules, veremos que se ha agregado la regla en la interface WAN, que permite todas las conexiones al puerto UDP/1194 y adems que se ha creado una nueva solapa OpenVPN, donde manejaremos las reglas asociadas a todos los servidores OpenVPN:
Cuando vayamos a la solapa OpenVPN, estar vaca sin ninguna regla, pero en caso de que hayan seleccionado la opcin que crea la regla automticamente, aparecer una regla permitiendo todo el trfico. Nosotros creamos la regla a mano y quedar de la siguiente forma:
Usuarios: Ahora crearemos un usuario habilitad0 para conectarse, en nuestro caso tambin generaremos un grupo OpenVPN, para incluir en el a este usuario y a todos los que creemos para conectarse a la VPN. Esto sirve para que administrativamente sepamos que usuarios tienen acceso a la VPN, adems de poder asginar permisos de pfSense a todos los usuarios a la vez, por ejemplo para permitir el acceso a algn mdulo de pfSense como el de cambio de Password. 1. Vamos al men System, User Manager y luego a la solapa Groups. All buscamos el cono de agregar (+) y creamos el grupo:
Le damos Save para crear. 2. Para crear un usuario, volvemos a la solapa Users, y nuevamente vamos al cono de agregar (+):
Configuraremos las opciones bsicas como el nombre de usuario, el nombre completo, la contrasea, la asociacin al grupo que creamos antes, y en nuestro caso tambin seteamos una fecha de expiracin que ser a fin de ao. Seleccionamos la opcin de crear certificado, y nos expander ms opciones:
Debemos poenerle un nombre al certificado y elegir la entidad certificadora que creamos anteriormente. Le damos Save y nos crear el usuario y su certificado automticamente. Podemos ir luego al men System, a la opcin Cert Manager para comprobarlo. En la solapa CA, veremos la entidad certificadora que creamos:
Y en la solapa Certificates veremos el certificado del Servidor que creamos anteriormente, y el certificado del usuario gabriel que acabamos de crear. (Tambin veran un certificado default que es que se utilizan al conectarse va HTTPS al WebConfiurator).
Clientes: El servidor ya se encuentra configurado y el usuario creado, ahora nos toca configurar el cliente que se conectar con el usuario gabriel. Para esto es necesario instalar el cliente OpenVPN en el o los equipos que se conectarn y luego cargarle la configuracin del servidor y la del usuario. Para ayudarnos en la configuracin de los clientes, instalaremos tambin el paquete OpenVPN Client Export Utility que nos permite exportar los zips de configuracin para cada usuario de manera muy sencilla. Por lo tanto, en primer lugar, instalemos el paquete desde el men System, opcin Packages y luego la solapa Available Packages. Buscamos el paquete y le damos al cono de agregar (+).
Una vez instalado, se agrega en el apartado de OpenVPN (men VPN, opcin OpenVPN), una nueva solapa Client Export:
Si hicimos todo bien, en la parte de abajo de la pgina, veran un apartado con los nombres de usuario que estn asociados al certificado de la VPN y de donde podremos exportar los clientes para cada sistema operativo, o la Standard Configuration que nos da un zip con el archivo de configuracin de openvpn (*.opvn) y los certificados del usuario para permitir la conexin, este zip debe incorporarse a la carpeta de configuracin del cliente OpenVPN de la pc que va a realizar la configuracin y con esto ya se podr conectar.
Veremos algunos ejemplos de configuracin de clientes: Instalacin de Cliente OpenVPN en Windows Existen dos clientes OpenVPN para Windows, el oficial (http://openvpn.net) y un Cliente llamado OpenVPN Manager (https://github.com/jochenwierum/openvpn-manager/), este segundo cliente, soluciona un problema conocido cuando el usuario no tiene permisos de administrador en la PC con la que se quiere conectar al servidor. Para funcionar la conexin, el cliente a conectar debe poder agregar ruteos (como ya explicamos en la configuracin del Servidor) para conocer la red a la que se quiere acceder a travs del tunel que se levant. Sin permisos de administrador, no es posible realizar esa configuracin, y OpenVPN Manager soluciona esta limitacin mediante la creacin de un servicio especfico que se encarga de dicha configuracin. En caso de no contar con permisos de administrador, se debe utilizar ese cliente que se descarga ac (http://openvpn.jowisoftware.de/downloads/), y adems, antes de exportar la configuracin, se debe tildar la opcin Management Interface OpenVPNManager, que adapta la configuracin para este cliente:
En nuestro caso, tenemos permisos de administrador en el equipo Windows que se conectar por lo que no utilizaremos la anterior opcin, y aprovecharemos el cliente original de OpenVPN, que realmente es un poco ms performante que el OpenVPN Manager, y adems, se actualiza con mayor periodicidad. 1. Descargamos el Cliente OpenVPN desde el sitio oficial http://openvpn.net/index.php/open-source/downloads.html. Tenemos disponible la versin de 32 o 64 bit, segn corresponda. Descargamos la necesaria.
2. Realizar la instalacin. La misma instalar una nueva interface, por lo tanto ser necesario permisos de administrador para hacerlo, que solicitar durante el proceso. 3. Finalizada la instalacin, hay que ir al PATH de instalacin y a la carpeta Config, en nuestro caso es C:Program FilesOpenVPNconfig, all copiamos los archivos de configuracin y certificados que descargamos con el OpenVPN Client Export Utility.
Con esto ya es suficiente para conectarse a la VPN creada. 4. Ejecutamos el cliente OpenVPN GUI, que se abrir y se mantendr minimizado en la barra del reloj. Al hacer click con el boton derecho sobre el mismo, tendremos la opcin Connect (en caso de que tengamos ms de una configuracin VPN, veremos todas las disponibles con su respectiva opcin Conect).
Hacemos click en la opcin Conect para conectarnos.
La conexin se establece y vemos que nos asigna una ip del rango que habamos configurado en la configuracin del Servidor:
Si revisamos como qued la tabla de ruteo en la PC conectada, veremos que se ha agregado la ruta a la red 192.168.1.0/24 por la interface de VPN: