Podcast #19: OpenVPN

Tener una VPN siempre es bueno, es bueno porque os permitirá navegar por wifis públicas con una garantía, es bueno porque dispondréis siempre que lo necesitéis de una IP fíja para acceder a servicios especiales.

Pero realmente lo bueno no es tener una VPN, es que tengáis vuestra propia VPN en vuestro propio servidor, sólo de esta forma tendréis un control adecuado y total.

Muchas veces vemos aplicaciones que nos ofrecen una VPN para no exponer nuestros datos, pero ¿quien nos da esas VPNs?, ¿podemos confiar?, como os he comentado hace unos segundos, lo mejor es crear vuestra propia VPN.

En el programa de hoy vamos a hablar de OpenVPN, una de las opciones de VPN más extendidas, voy a mostraros como configurar un servidor con OpenVPN y como conectaros desde vuestro PC o teléfono y usar esa VPN.

Para crear vuestra propia VPN vais a necesitar un servidor en un CPD, lo optimo será un cloud, pues es lo más barato, si es que sólo vais a utilizar ese servidor para OpenVPN. Obviamente si estamos hablando de 10.000 usuarios tendremos que escalar la solución.

En mi caso para este ejercicio he desplegado un servidor con Ubuntu, aunque podría ser cualquier cosa.

Lo primero será instalar openvpn y easy-rsa tras actualizar la base de datos de paquetes y actualizar el sistema.

Una vez instalado el software tendremos que generar nuestros certificados. Lo primero será crear las plantillas, esto lo haremos creando un directorio con ellas usando el comando make-cadir en el directorio openvpn-ca, aunque puede llevar cualquier otro nombre.

Realmente make-cadir lo que hace es crear un directorio con enlaces simbólicos a /usr/share/easy-rsa/, no hace otra magia, hay gente que prefiere trabajar directamente en ese directorio, realmente es lo mismo.

Otra cosa extra que podemos hacer además de crear ese directorio es modificar el fichero vars para que los datos por defecto sean los nuestros, eso es cambiando estas líneas:

Por estas, o similares, las que correspondan:

Una vez creada la plantilla vamos a proceder a crear el CA

Y ya tenemos nuestro CA creado dentro de nuestro directorio keys.

Ahora procedemos a generar el certificado del servidor, también una llave Diffie-Hellman para el intercambio de llaves y generamos la firma HMAC para verificar el TLS del servidor:

En el directorio openvpn-ca/keys tendremos los siguientes ficheros:

Si os parece vamos a proceder a generar certificados para los clientes, los cuales los haremos todos de la misma manera:

El proceso completo será el siguiente:

Al llegar aquí ya tendremos todos los certificados generados y sólo nos quedará configurar tanto la parte servidor como la del cliente, así que vamos a por ello.

La parte servidor se configurará en el directorio /etc/openvpn/ donde copiaremos ca.crt, ca.key, server.crt, server.key, ta.key y dh2048.pem quedando así:

Ahora vamos a proceder a configuar el fichero de configuración creando /etc/openvpn/server.conf.

El fichero debería de quedar como este:

Con esto ya tendremos configurado nuestro openvpn, ahora nos quedará simplemente permitir que nuestro servidor haga forwarding, y para eso modificaremos el fichero /etc/sysctl.conf y descomentaremos la línea

Le quitaremos el numeral y recargaremos con

6 comentarios

  1. Hola Eduardo,

    He configurado OpenVPN en mi raspberryPi utilizando Webmin. Consigo que conecte pero tengo el problema de que en mi router de internet no puedo definir rutas para otras redes diferentes a las de la LAN. Esto me obliga a utilizar NAT.

    Lo he intentado configurar pero no consigo acceder a Internet. Al servidor VPN sí que llego con un ping. A ver si puedes hablar en algún capítulo sobre IP masquerade.

    Un abrazo

    1. Pues es un buen tema, me lo anoto y lo preparo, mientras, en tu Rasberry PI.

      Mientras tando (espero que te sirva) te copio la configuración del NAT que yo uso en casa, tienes que cambiar red_privada_que_quieres_natear por tu red tipo 192.168.14.0/24 y el interfaz_de_salida por el interfaz tipo eth0 o lo que tengas.

      iptables -t nat -A POSTROUTING -s red_privada_que_quieres_natear -o interfaz_de_salida -j MASQUERADE

      Y luego (aunque esto seguramente ya lo tengas)

      echo 1 > /proc/sys/net/ipv4/ip_forward

  2. Hola Eduardo, yo tengo una duda que no sé si entraria en este podcasts de VPN, a ver si me podéis orientar un poco. Resulta que me he pasado de IP dinámica pública (la que me da el ISP de internet) a IP fija, por que lo he pedido yo y sin coste ya es fija. Vale, ahora abro un puerto en el router , el 5000, y como hay esta mi NAS, resulta que ya puedo entrar a mi NAS de mi casa desde internet. Si fuera una camara IP, seria lo mismo. Mi duda es:
    ahora es mas vulnerable encontrar mi IP fija y rastrearle puertos, hasta que
    sin mucha dificultad alguien puede llegar a ver mi NAS pidiendo Usuario/contraseña como si fuera yo. ¿Hay algo de todo esto de VPN, vlans, routers frontera, que me iria bien montar para mejorar la seguridad de cara a atacantes? lo unico, que yo lo tengo todo en windows no en linux.
    Lo de la IP dinamica ya se que para acceder desde fuera habria que usar DDNS en algun sitio dyndns, no-ip.. para que cuando cambie mi Ip se actualize con un nombre de dominio gratuito….
    Mi inquietud es sobre la seguridad, tambien he pensado en el firewall de router y filtrar accesos que no sea yo mismo, pero ¿como se yo si entro desde mi móvil cual es la Ip que tengo que dejar pasar?
    muchas gracias.

      1. Gracias por la respuesta. Voy a ver si monto un servidor linux para poner en práctica todo lo que se explica en estos podcasts que son muy didácticos y se aprenden cosas. Un saludo.

        1. Disculpar un momento, es que lo de ser de red y todo eso, me he acordado de mis tiempos de un dilema en los protocolos de comunicacion en general, lo del ACK y NACK para responder diciendo “Recibido” y el otro extremo se entera de que se ha recibido, pero no se acabaria nunca ya que en algun momento alguien tiene que quedarse sin saber si se ha recibido lo ultimo,, y entra la politica y la ingenieria, y se tiene que asumir, acto de fe, que en el 99% de los casos se ha recibido. Y sobre todo si de esa manera se gana dinero. La ciencia es más autentica. A lo mejor me pongo yo un podcast en tu misma linea pero en plan cientifico que no hay ninguno.
          Un saludo.

Deja un comentario

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