En la jaula de un geek

Los README son para los cobardes. Sé valiente. Ejecuta el programa.

«

»

Oct 28

Configurar OpenVPN en OpenSuSE Leap 42.3

 Debido a que no siempre puedes estar físicamente en el lugar donde está tu server, o incluso puede que necesites un servicio de dentro de tu red cuando estás fuera, las VPN se han convertido en una de las grandes bases de conexión estés donde estés.

OpenVPN es un servicio que permite configurar fácilmente desde cualquier sistema operativo, incluso desde móviles, lo cual se convierte en unas de las opciones más aconsejables y además es gratis lo cual es una gran ayuda viendo el precio de la mayoría de VPNs del mercado.

0- Previos

Para estos pasos se requiere la versión 42.3 de OpenSuSE, la 42.2 no dispone de todos los elementos que se piden, si tienes una anterior te recomiendo actualizar cuanto antes.

Mi configuración se basa en que cada usuario dispondrá de un certificado único con contraseña, este certificado se puede revocar en cualquier momento.

1- Instalar OpenVPN y Easy RSA

Aunque por defecto ya debe estar preparado el TUN/TAP, nunca está de más confirmarlo.

Debe indicar:

Instalaremos tanto OpenVPN como Easy-RSA para facilitar la creación de los certificados.

2- Configurar certificados

Editamos la configuración por defecto de los certificados, lo que nos interesa son los datos de organización, país, e-mail, etc. También podemos aumentar la encriptación si queremos más seguridad.

Descomentamos y cambiamos las siguientes líneas.

Empezamos generando la carpeta raíz.

Con esto ya tendremos la carpeta /etc/easy-rsa/pki/ donde irán todos los certificados.

Lo siguiente es generar el CA.

Este nos pedirá una contraseña, cada vez que incluyamos cualquier usuario nuevo necesitaremos esta contraseña. Todas las aplicaciones automáticas necesitan que este certificado no tenga contraseña, así que habrá que decidir si le ponemos contraseña o si lo securizamos desde el Linux a partir de qué queramos.

Generamos el certificado del servidor. También podremos elegir entre tener o no contraseña, con la diferencia de que no habrá problema en que la tenga, mientras esta esté en un fichero que OpenVPN pueda leer.

Para diferenciarlo más fácilmente del resto, lo llamaré “server”. En el caso de utilizar contraseña, también creamos un fichero donde indicar esa contraseña.

Finalmente creamos un primer usuario. Recordar cambiar <userName> por el nombre que utilizará el usuario. Este certificado también puede tener contraseña, cosa bastante recomendable. El usuario después puede cambiarla mediante el OpenVPN Client.

Con todo esto creado, ya podemos generar el fichero maestro. Este puede tardar bastante según el nivel de encriptado y la CPU.

También dejamos creado el fichero para revocar certificados.

3- Configurar VPN

Ahora tenemos que configurar OpenVPN de forma que utilice estos certificados.

Podemos tener varias configuraciones diferentes, pero en mi caso solo crearé una llamada igual que el certificado: server.

Creamos la carpeta de logs y el fichero de configuración.

Modificamos el siguiente acorde a nuestros datos, ya he dejado comentarios en el fichero para poder configurarlo al gusto. Como recomendación, suelo cambiar el puerto, debido a que el puerto por defecto tenderá a recibir más ataques que el resto.

En este ejemplo se considera que la red original es 192.168.1.X y la VPN tendrá la 192.168.240.X.

Con todo configurado, iniciamos el servicio y el autoarranque.

Ahora toca configurar las rutas para que el servidor se encargue de hacer de gateway interno. Al mismo tiempo abrimos el puerto.

Tenemos que habilitar el enrutado, abrir el puerto UDP o TCP elegido y activar el uso de reglas personalizadas.

Lo siguiente es utilizar ese fichero para reglas personalizadas.

Dentro de la directiva fw_custom_after_chain_creation añadimos nuestra regla acorde a la red interna.

Activamos el forwarding.

Añadiendo la siguiente línea.

Después de todos los cambios, reiniciamos el firewall.

El servidor ya está listo para ser utilizado.

4- Configurar cliente

Cada sistema necesitará tener instalado el cliente de OpenVPN, ya sea Windows, Linux, iOS, etc.

Podemos encontrarlo desde el sistema de repositorio propio o desde la web oficial.

El usuario necesita el certificado ca.crt (/etc/easy-rsa/pki/ca.crt) y sus ficheros de claves crt (/etc/easy-rsa/pki/issued/<userName>.crt) y key (/etc/easy-rsa/pki/private/<userName>.key). Además, tenemos que generar un fichero ovpn con la configuración.

Para facilitar la creación de usuarios, he preparado un script en el que se indica el nombre del usuario, lo genera y comprime en un zip todos estos ficheros para que los enviamos al usuario. También tendremos que generar el fichero ovpn acorde a esos ficheros.

Este es un ejemplo del fichero ovpn.

Estos 4 ficheros se deben guardar en la carpeta de configuración (en Windows: C:\Users\<user>\OpenVPN\config).

El cliente de OpenVPN detectará automáticamente este fichero y ya podrá utilizarlo.

Fix para iOS/Android:

Los clientes para estos dispositivos móviles no aceptan el certificado encriptado, para ello previamente hay que modificarlo al formato RSA, lo podemos hacer desde el servidor reseteando la contraseña del certificado.

5- Gestión de usuarios

Disponemos de varias herramientas para gestionar los usuarios, aquí pongo algunas de las más útiles.

5.1- Revocar certificados

Utilizar el siguiente comando indicando el nombre del usuario.

Esto revoca el usuario y regenera el fichero de revocaciones, cuando ese usuario intente conectar recibirá el siguiente error.

5.2- Listado de todos los usuarios y anular una revocación

No existe una forma de anular una revocación como tal, pero podemos regenerar el fichero.

Todos los usuarios se guardan en el siguiente fichero.

En este fichero se indica quienes están revocados, si cambiamos la revocación por un V(alid) y quitamos la fecha de revocación, volveremos a permitir su acceso.

Si cambiamos las revocaciones, tendremos que regenerar el fichero.

5.3- Usuarios conectados actualmente

Simplemente lo leemos del fichero de status.

5.4- Desconectar un usuario

Al revocar un usuario, este seguirá conectado, así que debemos revocar y después echarlo. Si simplemente lo desconectamos, el OpenVPN Client volverá a reconectar.

Conectamos al management y lanzamos un kill al usuario. El puerto variará según nuestra configuración.

Final

La configuración y preparación de todo el entorno requiere bastante tiempo y pruebas, pero una vez acabado, OpenVPN se convierte en una VPN de las más fiables y estables.

Su capacidad para reconectar automáticamente si hubiera cualquier cambio permite que los clientes puedan estar conectados indefinidamente.

2 comentarios

  1. Javier

    Buen dia , gracias por le manual, he intentado ejecutarlo pero se me presento los siguientes inconvenientes: no encuentro el archivo en /etc/openvpn /server.conf y sysctl.conf , por fa me podira ayudar como localizarlos o de deonde los puedo bajar y tambien las configuraciones que se deben hacer en shorewall ?

    Gracias

    JJ

    1. Rei Izumi

      Hola,
      imagino que no estás utilizando OpenSuSE, en otra distribución seguramente los ficheros estén en otro sitio, tendrías que revisar el manual de donde almacena los ficheros de OpenVPN en esa distribución.
      A las muy malas, quizás podrías usar una búsqueda en todo el sistema:
      find / -name ‘server.conf’
      find / -name ‘sysctrl.conf’

      Sobre shorewall no te puedo ayudar, yo siempre he usado el iptables manualmente o desde YaST.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar