crear y configurar un servidor openvpn con tls-auth y dnsmasq.pdf
Post on 26-Dec-2015
235 Views
Preview:
TRANSCRIPT
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 1/39
Crear y configurar servidoropenvpn 58
25 ene 2014 | Redes
Tags: Configuración · Debian · Internet · Openvpn · Vpn
En pasados post vimos como podíamos crear muy fácilmente nuestro propio servidor VPN mediante elprotocolo pptp.
http://geekland.hol.es/crear-un-servidor-vpn-pptp/
Pudimos constatar y experimentar que la instalación y configuración del servidor era sumamente sencilla y era
altamente compatible con la totalidad de sistemas operativos existentes, pero como punto negativo tambiénvimos que a día de hoy pptp presenta serios problemas en lo que a la seguridad se refiere.
Por lo tanto a toda la gente que necesite un VPN para la transmisión de información sensible no le
recomiendo el uso del protocolo pptp. Le recomiendo el uso del protocolo OpenVPN. Para ver como
instalar y configurar este tipo de servidor VPN tan solo tienen que seguir los pasos que vamos a definir a
continuación.
TIPO DE CONFIGURACIÓN VPN QUEVAMOS A USARHay distintas formas de configurar un servidor mediante OpenVPN. Los distintos tipos de configuraciónexistentes son Host to Host, Road to Warrior (Host to LAN) y Net to net. Nosotros nos
focalizaremos en el Road to Warrior o Host to LAN, por ser el más popular de todos y el que
seguramente se adaptar a prácticamente las necesidades de de cualquier usuario.
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 2/39
La configuración Road to Warrior (Host to LAN mediante túnel) permitirá que múltiples dispositivos
u ordenadores se puedan conectar simultáneamente a nuestra red VPN y compartir recursos e
informaciones con la red a que se conectan. Por lo tanto en este caso tenemos varios clientes que se pueden
conectar de forma independiente al servidor VPN. Para quien precise de más información acerca de estetipo de configuración puede consultar el siguiente enlace.
La configuración Host to Host, a diferencia del modo de configuración anterior, únicamente nos
permitirá la conexión entre 2 máquinas o dispositivos conectados a Internet o dentro de una red local.Por lo tanto en este caso solamente existe un cliente y un servidor. Además estás 2 máquinas o dispositivos
no podrán compartir recursos e informaciones con otros equipos que estén conectados en la misma redLAN.
Para finalizar tenemos la configuración Net to Net, Red-red, o LAN to LAN. Esta configuración
mayoritariamente es usada en el mundo empresarial. Esta configuración lo que hace es unir redes locales(LAN) ubicadas en distintas ubicaciones geográficas para de esta forma poder compartir información
entre todos los clientes de todas las redes. De este modo cada una de las redes locales LAN tiene un puntode acceso o puerta de enlace que proporciona un canal de transmisión seguro entre 2 o más redes.
ASEGURAR QUE EL SERVIDOR
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 3/39
OPENVPN TENGA IP FIJA EN LA REDLOCALEs muy importante asegurar que nuestro servidor disponga de una IP interna fija en la red local. Es
importante porqué cuando recibamos una petición de los clientes VPN, el router tendrá que saber a que IPinterna tiene que redireccionar la petición del cliente VPN.
Para conseguir disponer de un servidor con ip interna fija tan solo tienen que seguir los pasos que
se detallan en el siguiente enlance:
http://geekland.hol.es/configurar-ip-fija_o_estatica_ipv4/
Nota: El método descrito en el enlace es válido en el caso que estéisusando un servidor sin entorno gráfico. En el caso que el servidor queuséis disponga de entorno gráfico tendréis que configurar este aspecto através de las interfaces visuales de vuestro gestor de red queprobablemente será network manager owicd.
Una vez terminados la totalidad de pasos mi servidor tendrá una IP fija que en mi caso será
la 192.168.1.188. Esta IP es la que deberemos usar para que el router redireccione las peticiones de losclientes al servidor OpenVPN.
REDIRECCIONAMIENTO DINÁMICONO-IPCuando tengamos nuestro servidor VPN funcionando, lo más probable es que tengamos conectarnos desde
el exterior de nuestra local red local mediante el servidor VPN.
Para conectarnos a nuestra red local tendremos que saber nuestra IP Pública pero desafortunadamente en la
gran mayoría de casos la IP que tenemos es dinámica. Por lo tanto se puede dar perfectamente el caso que
en el momento de conectarnos no sepamos la IP Pública de nuestro servidor.
Para solucionar este problema tenemos que asociar la IP Pública de nuestro servidor a un dominio.
Para poder realizar este paso tan solotienen que seguir las indicaciones del siguiente enlace:
http://geekland.hol.es/encontrar-servidor-con-dns-dinamico/
Una vez realizados estos pasos tendréis vuestra IP Pública asociada a un dominio. En mi caso mi IP Pública
está asociada al dominiogeekland.sytes.net
INSTALACIÓN DEL SERVIDORLa instalación del servidor la vamos a realizar en un sistema operativo Debian Wheezy. La totalidad delprocedimiento descrito tiene que funcionar en cualquier distribución que derive de Debian como
pueden ser Ubuntu, Crunchbang, Linux Mint, Kubuntu, etc.
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 4/39
Para instalar el servidor OpenVPN lo primero que tenemos que hacer esabrir una terminal. Dentro de la
terminal teclean el siguiente comando:
sudo apt-get install openvpn openssl
Ahora ya tenemos instalado el servidor.
CREAR UNA AUTORIDAD DECERTIFICACIÓNOpenVPN es un protocolo de VPN basado SSL/TLS mediante certificados y claves RSA creadas medianteopenssl. Por lo tanto el nivel de seguridad proporcionado por OpenVPN es muy elevado.
Al ser un protocolo que funciona bajo certificados y claves necesitaremos crear una autoridad de
certificación para a posteriori generar los certificados.
Nota: La principal función de una autoridad de certificación es la de emitir yrevocar certificados digitales para terceros. Para quien necesite másinformación puede consultar el siguiente enlace.
Crear el certificado raíz ca para firmar y revocar loscertificados de los clientes
Para poder emitir y revocar la claves necesitamos crear nuestra propia autoridad certificadora y
disponer de nuestro certificado raíz ca.ctr y de nuestra clave ca.key para poder crear y firmar las claves delos clientes y del servidor.
Para realizar este paso, y el resto de pasos, ejecutoriaremos los scripts que OpenVPN trae incorporados de
serie. Para ello tenemos que crear una carpeta con nombre easy-rsa dentro de laubicación /etc/openvpn.Para ello abrimos una terminal y tecleamos el siguiente comando:
cd /etc/openvpn
mkdir easy-rsa
Seguidamente tenemos que copiar los scripts de configuración de OpenVPN, que se hallan en la
ubicación/usr/share/doc/openvpn/examples/easy-rsa/2.0/, dentro de la carpeta easy-rsa queacabamos de crear. Para ello en la terminal tecleamos el siguiente comando:
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* easy-rsa
Una captura de pantalla los pasos realizados hasta el momento se puede ver a continuación:
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 5/39
En el caso que que vuestra distro trabaje con la versión 3 de easy-rsa, en el momento de introducir el último
comando, obtendréis un error parecido al siguiente error:
cp: no se puede efectuar `stat’ sobre «/usr/share/doc/openvpn/examples/easy-rsa/2.0/*»: No existe
el archivo o el directorio
Los pasos a realizar para solucionar este error son los siguientes. En la terminal escriben el siguiente comandopara instalar el paquete easy-rsa.
apt-get install easy-rsa
Seguidamente borran la carpeta easy-rsa que habíamos creado inicialmente introduciendo el siguiente
comando en la terminal:
rm -R /etc/openvpn/easy-rsa
Finalmente para obtener los scripts para la creación de claves en la terminal introducimos el siguientecomando:
make-cadir /etc/openvpn/easy-rsa
Nota: Algunas de las distros que funcionan con easy-rsa 3.0 son Ubuntu14.04, Linux Mint 16, etc.
Para ejecutar los scripts que acabamos de copiar o de obtener, tenemos que ir a la ubicación donde
los guardamos. Para ello ingresamos el siguiente comando en la terminal:
cd /etc/openvpn/easy-rsa
Antes de ejecutar los scripts editaremos el fichero vars para modificar una serie de parámetros.Para modificar el fichero vars se tiene que introducir el siguiente comando en la terminal:
nano vars
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 6/39
Tamaño de las claves
Una vez abierto el editor de texto tenemos que localizar y modificar la siguiente línea:
export_KEY_SIZE=1024
Una vez encontrada la sustituyen por la siguiente linea:
export_KEY_SIZE=2048
Nota: Con esta modificación estamos incrementando el tamaño de laclaves privadas (.key) que vamos a generar y también del parámetro deDiffie Hellman. Con esta modificación incrementarios del tamaño de lasclaves de 1024 bits a 2048 bits. También seria posible usar 4096 bits.Este parámetro no tiene porqué penalizar en exceso el rendimiento delservidor. Únicamente penalizará el proceso autentificación Handshake deSSL/TLS.
Datos de la entidad emisora de los certificados
Seguidamente tenemos que introducir los datos de la entidad emisora de los certificados que
seremos nosotros mismos Para ello tenemos que localizar las siguientes lineas:
export KEY_COUNTRY=”US”
export KEY_PROVINCE=”CA”
export KEY_CITY=”SanFrancisco”
export KEY_ORG=”Fort-Funston”export KEY_EMAIL=”me@myhost.mydomain”
export KEY_EMAIL=mail@host.domain
export KEY_CN=Changeme
export KEY_CN=Changeme
export KEY_OU=Changeme
Una vez localizadas las lineas tan solo se tienen reemplezar el contenido por defecto por nuestros datos
reales. En mi caso los datos a rellenar podrían ser:
export KEY_COUNTRY=”ES” “Poner las 2 iniciales de tu país”
export KEY_PROVINCE=”CA” “Poner las 2 iniciales de tu provincia”
export KEY_CITY=”s*******a” “Poner el nombre de tu ciudad”
export KEY_ORG=”geekland” “Poner el nombre de la organización”
export KEY_EMAIL=”xxxxxxx@gmail.com” “Usar vuestra dirección de email”
export KEY_EMAIL=xxxxxxx@gmail.com “Usar vuestra dirección de email”export KEY_CN= wheezy “Usar el nombre del host del servidor”
export KEY_NAME=vpnkey “Designa el nombre de la entidad certificadora que se creará”
export KEY_OI=IT “Departamento de la empresa”
Nota: Dentro de este fichero también podemos configurar el tiempo devalidez que tendrá nuestra entidad certificadora y el tiempo de validez que
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 7/39
tendrán los certificados y claves que crearemos. El valor estándar devalidez son 3650 días que no voy a tocar.
Una vez modificado el archivo vars guardamos los cambios y lo cerramos. Ahora tendremos que
exportar sus variables. Para exportar sus variables tenemos que teclear el siguiente comando en la terminal:
source ./vars
Seguidamente ejecutaremos el script clean-all. El script clean-all borrará la totalidad de claves que podrían
existir en la ubicación/etc/openvpn/easy-rsa/keys. Para ejecutar el script tenemos que teclear el siguiente
comando en la terminal:
./clean-all
El siguiente paso es generar los parámetros de Diffie Hellman. Los parámetros de Diffie Hellman se
utilizarán para poder intercambiar las claves ente cliente y servidor de forma segura. Para poder realizar estepaso tenemos que teclear el siguiente comando en la terminal:
./build-dh
Al terminar el proceso dentro de la ubicación /etc/openvpn/easy-rsa/keys se habrá creado el
archivo dh2048.pem que contiene los parámetros Diffie Hellman.
Nota: Para quien requiera información adicional de los parámetros deDiffie Hellman puede consultar el siguiente enlace. Este parámetro seusará poder un intercambio de claves entre 2 participantes de formasegura.
En la siguiente captura de pantalla podrán ver una muestra de los pasos realizados hasta el momento:
Finalmente vamos a a crear el certificado y la clave privada de nuestra propia autoridad
certificadora. Para ello tenemos que teclear el siguiente comando en la terminal:
./build-ca
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 8/39
Durante el proceso de creación se les hará una serie de preguntas para incorporar información dentro del
certificado que se creará. Como anteriormente hemos editado el fichero vars ahora solo nos tenemos quelimitar a aceptar el valor por defecto de las preguntas que nos hacen.
Al terminar el proceso dentro de la ubicación /etc/openvpn/easy-rsa/keys se ha creado ca.crt y ca.key:
ca.crt: Es el certificado raíz público de la autoridad de certificación (CA)
ca.key: Este fichero contiene la clave privada de la autoridad de certificación (CA). Este archivo debe
mantenerse protegido y no debe estar al alcance de terceros.
Una vez creado el certificado y la clave de vuestra autoridad certificador la pantalla de vuestro ordenador
tiene que presentar el siguiente estado:
CREAR EL CERTIFICADOS Y LACLAVE DEL SERVIDOR OPENVPNA estas alturas ya lo tenemos todo listo para poder crear el certificado y clave de nuestro servidor.Para ello introducimos el siguiente comando en la terminal:
./build-key-server whezzyVPN
Nota: whezzy VPN es el nombre del servidor. Vosotros tenéis queintroducir el nombre que vosotros queráis.
Una vez introducido este comando se nos hará una serie de preguntas. Simplemente tienen que contestar el
valor por defecto ya que anteriormente hemos modificado el archivo vars.
Al terminar el proceso dentro de la ubicación /etc/openvpn/easy-rsa/keys se habrán creado los siguientesarchivos:
whezzyVPN.key: Este fichero contiene la clave privada del servidor. Este archivo no debe estar al
alcance de nadie.
whezzyVPN.crt: Este fichero corresponde al certificado público del servidor.
whezzyVPN.csr: Este archivo es la petición de certificado que se envía a la autoridad de
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 9/39
certificación. Mediante la información que contiene el archivo .csr, la autoridad de certificación podrá
realizar el certificado del servidor una vez hayan realizado las comprobaciones de seguridad pertinentes.
Una vez creado el certificado y la clave del servidor la pantalla de vuestro ordenador tiene que presentar el
siguiente estado:
CREAR EL CERTIFICADO Y LASCLAVES DE LOS CLIENTESEl siguiente paso es crear los certificados y las claves de los clientesque se podrán conectar al
servidor VPN. Para ello tenemos que teclear el siguiente comando en la terminal:
./build-key usuariovpn
Nota: usuariovpn es el nombre de usuario que vamos a crear. En vuestrocaso tendréis que reemplazar usuariovpn por el nombre que queráis.
Una vez introducido este comando se nos hará una serie de preguntas. Simplemente tienen que contestar el
valor por defecto ya que anteriormente hemos editado el fichero vars.
Al terminar el proceso dentro de la ubicación /etc/openvpn/easy-rsa/keys se habrán creado los siguientes
archivos
usuariovpn.key: Este fichero contiene la clave privada del cliente. Este archivo no debe estar al alcance
de nadie.
usuariovpn.crt: Este fichero corresponde corresponde al certificado público del servidor.
usuariovpn.csr: Este archivo es la petición de certificado que es envía a la autoridad de certificación.
Mediante la información contenida en el archivo .csr, la autoridad de certificación podrá realizar el certificado
del cliente una vez hayan realizado las comprobaciones de seguridad pertinentes.
Nota: El procedimiento de generación de clientes se deberá repetir tantasveces como clientes queráis que tenga el servidor OpenVPN.
Una vez creado el certificado y la clave del cliente, la pantalla de vuestro ordenador tiene que presentar el
siguiente estado:
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 10/39
FORTIFICAR LA SEGURIDAD DELSERVIDOR OPENVPN CON TLS-AUTH
Nota: Esto paso en principio no es necesario pero lo realizaremos paraincrementar la seguridad de nuestro servidor VPN.
Ahora generamos otra clave. Esta clave nos servirá para agregar soporte para usar la
autentificación TLS y de este modo fortificar la seguridad del servidor VPN. Para generar la clave para
poder fortificar el servidor se tiene que introducir el siguiente comando en la terminal:
cd /etc/openvpn/easy-rsa/keys
Una vez hemos accedido a la ubicación /etc/opnevpn/easy-rsa/keystecleamos el siguiente comando:
openvpn --genkey --secret ta.key
Justo al ejecutar el comando, Como se puede ver en la captura de pantalla, se generará una clave con el
nombre ta.key en la misma ubicación dónde hemos aplicado el comando.
La clave creada servirá para introducir una firma digital HMAC en todas las transacciones del
protocolo handshake de SSL/TLS entre el cliente y el servidor. De esta forma podremos verificarla integridad de los paquetes intercambiados entre el cliente y el servidor VPN, y en el caso que un
cliente intente conectarse al servidor VPN sin poseer la clave para firmar los paquetes la conexión
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 11/39
se rechazará automáticamente. Además con el uso de autentificación TLS también conseguiremos
prevenir los siguientes ataques:
1. Ataques de denegación de servicio DoS.
2. Ataques de denegación de servicio por inundación UDP al puerto del VPN.
3. Escaneo de puertos en nuestro servidor para intentar averiguar vulnerabilidades.
UBICACIÓN DE LAS CLAVESGENERADASA estas alturas hemos generado multitud de claves y certificados. Si se han seguido los pasos detalladamente,la totalidad de claves se hallan en la ubicación /etc/openvpn/easy-rsa/keys.
Anteriormente ya he detallado el uso de cada una de la claves. Seguidamente pasaré a detallar la ubicación
de cada una de las claves:
Archivo Descripción Ubicación Secreto
dh2048.pem Parámetros Diffie Hellman Servidor (/etc/openvpn) Sí
ca.crt Certificado raíz de la entidadcertificadora
Servidor (/etc/openvpn) y cliente No
ca.key Clave de la entidad certificadora Servidor (/etc/openvpn) Sí
whezzyVPN.key Clave del servidor VPN Servidor (/etc/openvpn) Sí
whezzyVPN.crt Certificado del servidor VPN Servidor (/etc/openvpn) y cliente No
whezzyVPN.csr Archivo de petición de
certificado
Servidor (/etc/openvpn) No
usuariovpn.key Clave privada del cliente VPN Cliente Sí
usuariovpn.crt Certificado del cliente VPN Cliente No
usuariovpn.csr Archivo de petición decertificado
Servidor (/etc/openvpn) No
ta.key Clave para la Autentificación
TLS
Servidor (/etc/openvpn) y cliente Sí
Nota: Tienen que trasladar cada una de las llaves mencionadas en lasubicaciones que se detallan en el cuadro. Recuerden transmitir y trasladarlas claves y certificados del servidor al cliente por un canal seguro.
ASEGURAR QUE LAS PETICIONESDNS SE REALIZAN POR EL VPN
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 12/39
Otro punto a contemplar para asegurar que nuestro servidor VPN sea seguro es que nadie pueda capturar
nuestras peticiones DNS para saber donde nos estamos conectando.
Nota: Quien no sepa que son las peticiones DNS puede consultar elsiguienteenlace.
Para que nadie capture nuestras peticiones DNS lo que realizaremos es canalizar la totalidad denuestras peticiones a través del túnel del servidor OpenVPN. Así las peticiones DNS se enviarán al
servidor VPN de forma cifrada y será el servidor OpenVPN el encargado de resolverlas. Para poderrealizar lo que acabo de describir lo primero que tienen que realizar es instalar dnsmasq. Para poder
instalar dnsmasq teclean el siguiente comando en la terminal:
apt-get install dnsmasq
Una vez instalado dnsmasq lo tenemos que configurar para que escuche las peticiones DNS dirigidas alservidor VPN. Para ello accedemos al archivo de configuración introduciendo el siguiente comando
en la terminal:
nano /etc/dnsmasq.conf
Una vez abierto el editor de texto introducen las siguientes líneas:
listen-address=127.0.0.1,10.8.0.1
bind interfaces
Nota: Introduciendo la primera línea lo que estamos haciendo es queDnsmasq solamente tenga en cuenta las peticiones DNS que se dirijan alas interfaces[lo]: 127.0.0.1 y [tun0]: 10.8.0.1 que es la de nuestro servidorVPN.
Nota: Con la segunda línea estamos habilitando que dnsmasq tenga lacapacidad de escuchar solo determinadas interfaces como por ejemplo lasdos que hemos definido antes. La [lo] 127.0.0.1 y la [tun0] 10.8.0.1
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 13/39
Ahora tan solo tienen que guardar los cambios y salir del archivo de configuración. La configuración haterminado y solamente hace falta reiniciar los servicios openvpn y dnsmasq. Para ello teclean los siguientescomandos en la terminal:
/etc/init.d/openvpn restart
/etc/init.d/dnsmasq restart
Es posible que cuando reinicien los servicios o arranquen el sistema vean un error parecido al de la capturade la pantalla:
Starting DNS forwarder and DHCP server: dnsmasqdnsmasq: failed to creat listening to socket for 10.8.0.1: No se puede asignar la dirección
solicitada.
Esto error es debido a que Dnsmaq arranca antes de que se cree la interfaz [tun0]. Por lo tanto cuando
intenta escuchar la interfaz [tun0]nos dará el error porqué [tun0] no existe. Para solucionar este problema yque dnsmasq puede realizar su función tan solo tiene que modificar el archivo /etc/rc.local. Para ello en la
terminal escriben:
nano /etc/rc.local
Se abrirá el editor de textos y ahora, debajo de las reglas de iptables tan solo tienen que escribir:
/etc/init.d/dnsmasq restart
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 14/39
Una vez realizado este paso guardan el fichero y salen. Introduciendo esta linea lo que estamos haciendo es
reiniciar el servicio dnsmasq una vez se han ejecutado la totalidad de scripts de inicio (init). De este modocuando se reinicialice dnsmasq la interfaz [tun0] ya estará levantada.
Nota: Para que dnsmasq funcione tienen que tener configurado el servidorVPN tal y como se detalla en el apartado Configurar el servidor.
CONFIGURAR EL SERVIDOROPENVPNExisten ficheros de configuración standard que deberían funcionar out of the box y que podemos aprovecharpara realizar nuestra configuración.Los ficheros de ejemplo que podemos usar para ver la totalidad deopciones que tenemos disponibles se hallan comprimidos en la siguiente ubicación ubicación:
/usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz
Para consultarlos teclear el siguiente comando para acceder a la ubicación de este archivo:
cd /usr/share/doc/openvpn/examples/sample-config-files
Seguidamente copiamos el archivo comprimido que dispone de los archivos de muestra de configuración en
la ubicación /etc/openvpn. Para ello tecleamos el siguiente comando:
cp -a /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
Seguidamente accedemos a la ubicación donde hemos copiado el archivo comprimido que contiene los
archivos de configuración:
cd /etc/openvpn
Para descomprimir el archivo que contiene los archivos de configuración tecleamos:
gunzip server.conf.gz
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 15/39
Una vez descomprimido el archivo ya podemos consultar los ejemplos de configuración tanto delcliente como del servidor. Para ver y modificar la configuración estándar para adaptarla a nuestras
necesidades tienen que teclear el siguiente comando en la terminal:
nano server.conf
Se abrirá el editor de texto en el que podrán ver de forma detallada las opciones de configuración de ejemplodel servidor. Ahora tendréis que comprobar que la totalidad de parámetros que se muestran en la
tabla de este apartado estén dentro del fichero de configuración de ejemplo que es el que vamos ausar. En el caso de que los parámetros estén comentados habrá que descomentarlos, en el caso que noexisten se deberán añadir y/o modificar.
Parámetro Descripción
dev tun Dispositivo virtual en el cual se creara el túnel.
proto udp Protocolo de la conexión VPN. También podríamos usar el tcp.
port 1194 Puerto de escucha del servicio. El puerto de escucha se puede modificar.
ca ca.crt Certificado de la autoridad certificadora que creamos.
cert whezzyVPN.crt Certificado del servidor que hemos creado.
key whezzyVPN.key Clave privada del servidor que hemos creado.
dh dh2048.pem Carga de los parámetro de Diffie Hellman.
Server 10.8.0.0255.255.255.0
Indicamos que a los clientes del VPN se les asignará IP deltipo10.8.0.0/24
ifconfig-pool-persistipp.txt
Se crea un fichero ipp.txt en el que se registran las IP de los clientes quese conectan al servidor VPN.
push “route 192.168.1.0255.255.255.0”
Con esta línea hacemos que los paquetes que tengan como destino la
red 192.168.1.0 viajen por la interfaz del túnel (tun0). De esta forma elcliente VPN se podrá comunicar con cualquier máquina de la
red 192.168.1.0.
keepalive 10 120El servidor VPN enviará un ping cada 10 segundos y como máximo
esperará 120 segundos para que el cliente de una contestación.
tls-aut ta.key 0 Activación de la autentificación TLS en el servidor.
comp-lzo Activar compresión LZO para la transmisión de datos.
max-clients 10Número máximo de clientes que se pueden conectar de forma simultanea.El valor se puede modificar según las necesidades.
user nobodyPara limitar los privilegios del demonio de VPN hacemos que funcione
con el usuario nobody.
group nogroupPara limitar los privilegios del demonio de VPN hacemos que funcione
con el grupo nogroup.
push “redirect-gateway
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 16/39
def1” Para que la totalidad de tráfico vaya a través de nuestro VPN
push “dhcp-option DNS10.8.0.1”
Estamos definiendo que las peticiones DNS de los clientes se hagan através del servidor VPN ubicado en 10.8.0.1
cipher AES-256-CBC
Por defecto el algoritmo de cifrado de OpenVPN es Blowfish con un
tamaño de clave de 128 bits. Quien crea que no es suficiente puedeañadir esta línea para cambiar el algoritmo de cifrado a AES con un clave
de cifrado de 256 bits. Para ver todos los algoritmos de cifradodisponibles teclear openvpn –show-ciphers en la terminal.
persist-keyEn caso que el servidor OpenVPN se caiga las claves no tendrán que seranalizadas de nuevo.
persist-tunEl dispositivo tun0 no tendrá que ser reabierto ni cerrado en el caso quetengamos que reiniciar el servidor.
status openvpn-status-log Log donde se guardará información respecto al túnel creado.
plugin/usr/lib/openvpn/openvpn-
auth-pam.so/etc/pam.d/login
Activación del script encargado de realizar la autenticación del usuario y
del cliente. (Ver el apartado “Autentificación del cliente mediante usuarioy password”)
verb 3 Grado de detalle del estado del túnel en los logs.
Una vez tenemos listo el fichero de configuración tan solo tenemos que guardar los cambios y cerrarlo.
Nota: Si queremos que los clientes que estan conectados al servidor VPNpuedan comunicarse entre ellos tenemos que añadir la frase client-to-client en el fichero de configuración del servidor.
Nota: Si leéis con detalle el fichero de configuración podréis aplicarconfiguraciones distintas a las que se detallan en el post.
Nota: La configuración propuesta en este apartado se tendrá que adaptara las características de vuestra red y a vuestras necesidades.
CONFIGURAR EL CLIENTE OPENVPNUna vez configurado el servidor ahora pasaremos a configurar el cliente. Para ello dentro de laubicación /etc/openvpn tecleamos el siguiente comando:
nano client.conf
Se abrirá el fichero de configuración en el que podrán ver un ejemplo de configuración para un cliente
estándar. Aseguramos que el fichero de configuración estándar tenga los parámetros que semuestran en la tabla de este apartado. En caso de no tenerlos habrá que añadirlos manualmente, en elcaso de que los parámetros estén comentados habrá que descomentarlos y en el caso que no existan se
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 17/39
deberán añadir y/o modificar.
Parámetro Descripción
dev tun Dispositivo virtual en el cual se creara el túnel.
proto udpProtocolo de transmisión de paquetes del servidor VPN. Se puede usarTCP.
remote
geekland.sytes.net1194
Dirección IP pública/Host DNS dinámico y puerto de escucha del servidor
VPN. El puerto 1194 se puede cambiar. Si lo cambiamos deberemosadaptar el resto de configuraciones al nuevo puerto
resolv-retry infiniteEl cliente intentará de forma indefinida resolver la dirección o nombre de hostindicado por la directiva remote (geeekland.sytes.net).
nobindA los clientes se les asignará puertos dinámicos (no privilegiados) cuandohaya retorno de paquetes del servidor al cliente.
user nobodyPara limitar los privilegios de los clientes que se conectan al VPN les
asignamos el usuario nobody. (no necesario para windows)
group nogroupPara limitar los privilegios de los clientes que se conectan al VPN les
asignamos el grupo nogroup. (no necesario para windows)
persist-keyEn caso que el servidor OpenVPN sea reiniciado no se tendrán que volver aleer las claves.
persist-tunEl dispositivo tun0 no tendrá que ser reabierto ni cerrado en el caso quetengamos que reiniciar el cliente Vpn.
ca ca.crt Certificado de la autoridad certificadora que creamos
cert usuariovpn.crt Certificado del cliente
key usuariovpn.key Clave privada del cliente
ns-cert-type server
Para prevenir ataques man in the middle. Con esta frase hacemos que los
clientes solo puedan aceptar un certificado de servidor del tipo servidor“nsCertType=server”. En este campo podríamos aplicar otras alternativas
similares como por ejemplo “remote-cert-tls server“.
tls-auth ta.key 1 Activación de la autentificación TLS en el cliente.
cipher AES-256-CBC
Por defecto el algoritmo de cifrado de OpenVPN es Blowfish con un tamaño
de clave de 128 bits. Quien crea que no es suficiente puede añadir esta líneapara cambiar el algoritmo de cifrado a AES con un clave de cifrado de 256bits. Para ver todos los algoritmos de cifrado disponibles teclear openvpn –
show-ciphers en la terminal.
auth-user-passPara indicar que el cliente tiene que introducir un nombre de usuario y unpassword.
auth-nocachePara evitar que los password queden almacenados en la memoria cache delos clientes.
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 18/39
comp-lzo Activar compresión LZO para la transmisión de datos.
verb 3 Grado de detalle del estado del túnel
AUTENTIFICACIÓN DEL CLIENTEMEDIANTE LOGIN Y PASSWORDA pesar de toda la seguridad que hemos implementado hasta el momento podría darse el caso que alguien
robará nuestro ordenador. Si alguien robará nuestro ordenador, teléfono o tablet podría encontrarsecon la totalidad de nuestras claves criptográficas y de esta forma podría acceder fácilmente a
nuestra red.
Para solucionar este problema vamos a introducir un usuario y un password para los clientes de
nuestro servidor vpn. Para ello tan solo tenemos que añadir uno o los usuarios que queramos.
Para añadir un usuario, como por ejemplo el usuariovpn2, tienen que teclear el siguiente comando en laterminal:
useradd usuariovpn2 -M -s /bin/false
Una vez creado el usuario tenemos que definir un password delusuariovpn2. Para ello tecleamos el siguiente
comando en la terminal:
passwd usuariovpn2
Una vez introducido el comando nos pedirá que introduzcamos la clave de usuario y después nos pediráconfirmación.
En el caso que a posteriori se precise eliminar el usuariovpn2 tan solo tienen que introducir el siguiente
comando en la terminal:
deluser usuariovpn2
Seguidamente en la siguiente captura de pantalla pueden ver un resumen de los pasos realizados:
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 19/39
Nota: Para que la autentificación mediante usuario y password funcionetienen que tener configurado el servidor y el cliente tal y como se detallaen los apartados Configurar el servidor y configurar el cliente.
CONFIGURAR IPTABLES PARA ELENRUTAMIENTO DE PETICIONESCuando el servidor OpenVPN reciba las peticiones de los clientes se deberán enrutaradecuadamente, y además tendremos que tener configurar el firewall de nuestro equipo para que
permita el tráfico a través del túnel que se ha creado ente el cliente y el servidor.
Para ello lo primero que tenemos que hacer es habilitar el IP forwarding. Para habilitar el IPForwading de forma permanentetecleamos el siguiente comando en la terminal:
nano /etc/sysctl.conf
Se abrirá el editor de textos y seguidamente tendremos que localizar la siguiente linea:
#net.ipv4.ip_forward=1
Una vez localizada tan solo hay que descomentarla de forma que quede de la siguiente forma:
net.ipv4.ip_forward=1
Guardamos los cambios y cerramos el archivo.
Una vez habilitado el Ipforwarding tenemos que permitir el tráfico por nuestro túnel VPN, y además
tenemos que hacer que los clientes VPN puedan acceder a redes externas públicas y otras subredes dentrode la red VPN. Para poder conseguir esto en la terminal escriben el siguiente comando:
nano /etc/rc.local
Una vez se abra el editor de textos tienen que escribir las siguientes reglas en nuestro firewall
iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -s 10.8.0.0/24 -o eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Nota: En función de las características de vuestra red y configuración devuestro firewall es posible que tenga que implementar reglas adicionales alas que se muestran en este ejemplo.
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 20/39
Con la primera de las reglas estamos permitiendo el tráfico por el dispositivo virtual en que que se crea eltúnel.
Con la segunda de las reglas estamos permitiendo que los paquetes provenientes de 10.8.0.0/24 pueden
enviarse o salir por la interfaz de salida eth0.
Con la tercera de las reglas estamos diciendo al servidor OpenVPN que cuando reciba una petición de
cualquiera de los clientes, proceda el mismo a resolverla y enviarla en representación del cliente.
Una vez finalizando el proceso guardan el archivo y cierran el editor de textos. Antes de cerrar el archivo el
fichero /etc/rc.local tendrá un aspecto parecido al siguiente:
CONFIGURAR EL ROUTER Y ABRIREL PUERTO DEL SERVIDOROPENVPNYa para finalizar solo nos falta configurar nuestro router, para que redirija las peticiones de losclientes al servidor Opevpn, y abrir el puerto del servidor OpenVPN. Para realizar esto tenemosque abrir nuestro navegador y teclear nuestra puerta de entrada. Una vez realizado esto, tal y como se
puede ver en la captura de pantalla, se abrirá una ventana en que nos pedirá nuestro nombre de usuario ycontraseña:
Una vez introducida la información accederemos a la configuración de nuestro router. Seguidamente, tal ycomo se puede ver en la captura de pantalla, tenemos que acceder a los menús Advanced / NAT / Virtual
Servers:
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 21/39
Seguidamente presionamos el botón Add y nos aparecerá la siguiente pantalla:
Tal y como se puede ver en la captura de pantalla, en en el campocustom server hay que escribir unnombre cualquiera. En mi caso como se puede ver en la captura de pantalla he escrito OpenVPN.
Seguidamente en el campo Server IP Address tenemos que escribir la IP del servidor OpenVPN. Enmi caso tal y como se puede ver en la captura de pantalla es la 192.168.1.188. Finalmente tal y como se
puede ver en la captura de imagen seleccionamos el protocolo UDP y escribimos el puerto de nuestroservidor OpenVPN (1194) en los puertos internos y externos.
Presionamos el botón Apply/Save y de esta forma todas las peticiones exteriores que lleguen a nuestro
router por el puerto 1194 serán redirigidas a nuestro servidor OpenVPN.
COMO CONECTARNOS AL SERVIDOROPENVPNSeguidamente dejo una serie de enlaces en los que explico de forma detallada los pasos a seguir para
conectarnos a nuestro servidor Openvpn en el caso de estar usando los siguientes sistemas operativos:
1. Linux
2. Android
3. Windows
4. iOS
Siguiendo las instrucciones de los enlaces que acabo de dejar podremos comprobar fácilmente el
funcionamiento de nuestro servidor Openvpn.
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 22/39
SEGURIDAD QUE NOS APORTARÁ ELSERVIDOR OPENVPNSi se configura el servidor Openvpn, tal y como se detalla en el post, se obtendrá un nivel de seguridad muyelevado y resultará prácticamente invulnerable frente a ataques.
La seguridad que aportará el servidor OpenVPN que acabamos de configurar estará compuesta por 3
capas:
Capa 1 “Autentificación TLS”: Con la autentificación TLS estamos introduciendo una firma digital HMACa los paquetes antes de empezar la autentificación reciproca entre cliente y servidor. Si no se pasa el test dela firma HMAC, no se llegará ni a iniciar el proceso de autenticación entre cliente y servidor.
Capa 2 “SSL/TLS”: Mediante las herramientas de seguridad proporcionadas SSL/TLS se realiza el
proceso de autentificacion bidireccional entre el cliente y el servidor OpenVPN mediante clavescriptográficas.
Capa 3 “Cifrado”: Dispone de varios tipos de cifrado disponibles en la transmisión de datos entre el clientey el servidor. Además podemos aplicar medidas para los privilegios del demonio de OpenVPN sean losmínimos para poder realizar la función que tiene que realizar.
Todas estas características, más las que se detallan en el post, hacen que OpenVPN sea una opción muyválida para la transmisión segura de datos sensibles. Por esto motivo OpenVPN es el protocolo que utilizanmuchas organizaciones en el mundo empresarial. Además OpenVPN es una solución multiplataforma ydentro de lo que cabe no es difícil de configurar si lo comparamos con por ejemplo Ipsec.
En lo que a seguridad se refiere también tenemos que destacar que aparte de las 3 capas de seguridad,
también hemos implementado un método para que los clientes del VPN tengan que introducir un usuario y unPassword. Además la totalidad del tráfico, incluyendo la resolución de las peticiones DNS, será a través delservidor OpenVPN que acabamos instalar y de configurar.
Cabe decir que actualmente no se conocen vulnerabilidades importantes en este tipo de servidor VPN. Esposible que se descubran vulnerabilidades pero si vamos aplicando las actualizaciones de seguridad no
deberíamos tener problema alguno en lo que a seguridad se refiere.
Post Relacionados363636363636363636 363636363636363636
23 marzo, 2014 (2)
En pasados post vimos de forma muy detallada como crear y configurar nuestro propio servidor OpenVPN con
cualquier distribución derivada de Debian. Una vez instalado y configurado nuestro […]
Conectarse a un servidor OpenVPN en iOS
7 diciembre, 2013 (15)
En pasados post vimos como conectarnos a un servidor VPN y además también vimos las numerosas ventajas
y usos que nos puede aportar un servidor VPN en determinadas circunstancias. Para […]
Crear un servidor VPN pptp
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 23/39
58 Comentarios en “Crear y configurar servidor
openvpn”
Zemanta
7 agosto, 2014 (2)
En pasados post vimos de forma muy detallada como crear y configurar nuestro propio servidor OpenVPN con
cualquier distribución derivada de Debian. Una vez instalado y configurado nuestro […]
Conectarse a un servidor OpenVPN en Android
Pedro Peres
En mi caso estoy empezando a vivir censura en mi país. Puedo hacer que el
servidor vpn se conecte a Internet a tor y yo conectarme a él? Como lo haría?Responder
feb 14,2014 19:56
RAcl
Estimado,
Con algunos amigos (para que sea más económico) lo que pueden hacer
es contratar un VPS en algún otro país y crear su VPN entre sus equipos y
el VPS
Responder
abr 4,2014 14:59
Joan Carles
Sin duda lo que propone es una buena opción. SaludosResponder
abr 4,2014 21:54
Claudio
Muy bueno el Post, la verdad es muy claro, y me ha sido muy fácil seguirlo.
Solamente me falta aprender a conectarme desde otros sistemas operativos
para poder comprobar el correcto funcionamiento del servidor VPN ¿Publicarás
pronto los posts que explican como conectarse desde diversos sistemas
operativos?
Responder
feb 27,2014 23:23
Joan Carles
Responder
feb 28,2014 11:01
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 24/39
Hola Claudio, Muchas gracias por el feedback. Si no pasa nada en
aproximadamente un mes deberían estar publicadas las instrucciones
para conectarse en el servidor VPN en la totalidad de sistemas operativos
más comunes. Android, iOS, Windows y Linux.
Si alguién me regala un Mac también publicaré las instrucciones para
Mac.
Saludos y buen fin de semana.
Claudio
Espero puedas tenerlas antes de un mes. Al menos las instrucciones
de como conectarse desde Windows o Android. Si pudieras
enviarme alguna indicación al correo de como realizar la conexión
desde dichos sistemas operativos… Si lo haces te regalo un Mac.
Responder
mar 2,2014 5:52
4v0ch
Excelente Tutorial muy completo y bien redactado, Me ha servido bastante para
una necesidad que tenia pendiente. Gracias.Responder
mar 7,2014 16:55
Diego Donoso
Es un tutorial de lujo hermano. Me gustó tu manera de redactarlo y las pantallas
son muy didácticas. Si te parece te puedo complementar con la configuración
del cliente openVPN para Windows y Android para que la puedas acoplar, ya
que yo trabajo 100% con OpenVPN.
Responder
mar 16,2014 5:33
Joan Carles
Diego gracias por tu ayuda
Actualmente estoy trabajando en redactar unas instrucciones para poder
configurar los clientes en los diferentes sistemas operativos. La semana
que viene tendré listo iOS y después iré trabajando en el resto.
Saludos
Responder
mar 16,2014 11:18
Alberto
mar 19,2014 5:16
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 25/39
Genial tu explicación. Me quedo muy claro y está muy bien redactado. Espero el
de Windows para poder implementarlo en un lugar que me encargaron.
Gracias
Responder
Joan Carles
Hola Alberto
Gracias por el feedback.
Si esperas que publique como conectarse al servidor mediante un cliente
de Windows en breve dispondrás de esta información.
Si esperas que publique el mismo tutorial pero usando Windows en vez
de Linux te informo que en principio no tengo planificado hacerlo.
Saludos
Responder
mar 19,2014 11:01
Alberto
El como conectarse al servidor mediante Windows.
Muchas gracias por tu respuesta.
Responder
mar 21,2014 2:33
Joan Carles
Este fin de semana saldrá para iOS.
Después iré con Windows.
Un saludo y buen fin de semana.
Responder
mar 21,2014 9:04
thewhite
Hola buenas, como puedo conectarme al servidor openVPN en linux ? Lo tienes
subido ya? Muchas gracias. Un saludoResponder
abr 28,2014 17:58
Joan Carles
Hola Buenas. De momento solo está disponible para Windows y para iOS.
En breve lo subiré para Linux y finalmente para Android.
Responder
abr 28,2014 23:46
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 26/39
Saludos
Juan Jose
Hola que tal en la parte donde coloco el siguiente comando cp -r
/usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa
Me arroja este error y no puedo continuar.
cp: no se puede efectuar `stat’ sobre «/usr/share/doc/openvpn/examples/easy-
rsa/2.0/*»: No existe el archivo o el directorio
Espero y me ayudes a resolver esto por favor
Responder
may 21,2014 20:54
Joan Carles
Hola Juan
No se si te podré ayudar mucho. Mejor explicado de lo que está en el
artículo no lo se explicar.
¿Qué sistema operativo usas?
¿Has instalado openvpn y openssl?
¿Has mirado si las carpetas a las que acceden existen?
Si no entiendes lo que estás haciendo te costará llegar hasta el final del
tutorial y que todo funcione bien. Tendrás que tener paciencia y poner
horas de dedicación por tu parte ya que el copiar, pegar no funciona
porqué muchas veces aparecen puntos en que los tienes que adaptar a tu
caso.
Saludos
Responder
may 21,2014 22:36
Juan Carlos
Felicidades por el blog y Gracias por este artículo tan bien explicado. Me estás
salvando la vida.
Ha caído en mis manos un Debian Wheezy con OpenVPN virtualizado con
WMware junto con tres windows 2008 server. Vamos un caramelo.
Todo funciona OK. Los usuarios de windows se conectan a la vpn con su
contraseña pero ahora tengo que añadir otro usuario y de linux ni papa.
Responder
may 31,2014 8:41
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 27/39
Dos dudas a ver si me puedes ayudar:
1- Entiendo que directamente voy al paso crear el certificado y las claves de los
clientes. Creo un usuario nuevo con ./build-key usuariovpn pero la serie de
preguntas que hace como averiguo el contenido del fichero vars si no lo cree
yo?
2- Cuando termine de crear al usuario, como saco los archivos del Debian? no
tiene entorno gráfico, y este comando cp /etc/openvpn/keys/* /media/usb no
funciona..
se agradece cualquier ayuda.
Joan Carles
Hola Juan Carlos. Respecto a tu pregunta no se como será el debian que
te cayo en tus manos. Lo de caer en tus manos tiene una ventaja y un
problema ya que ahora tienes un servidor openvpn, pero como no lo
instalaste tu mismo, ahora tienes estas dudas. En el post detallo la
ubicación del archivo vars. En el caso que no exista la ubicación del
archivo vars por tener la versión de easy-rsa 3.0, también explico como
generar los archivos para crear las claves y entre ellos está el vars. Las
claves no las podrás crear si tu servidor no tiene los scripts de easy-rsa.
Para sacar las claves con una memoria USB y la explicación que hago
para conectarse a los clientes de iOS o de Windows te debería ser
suficiente. Está explicado paso por paso y si lo haces bien y como está
explicado te tiene que funcionar. Si no te funciona mira que tengas
VMware configurado para que te detecte los USB.
Un saludo
Responder
may 31,2014 10:23
juan carlos
Gracias por los consejos Joan Carles.
Pero me crecen los enanos, se ve que ayer caduco el dyndns que teníamos y se
ha tostado el openvpn, me pide contraseña, la acepta pero el cliente se queda
con los dos iconos en amarillo con el letrero “conecting” y de ahí no pasa.
He editado con nano el client.conf y he cambiado el la línea donde estaba el
host de dyndns por la IP fija que he contratado. pero no se soluciono el
problema.
Me puedes echar un cable???
Responder
jun 9,2014 13:28
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 28/39
Joan Carles
Hola Buenas
Quizás sea un problema de firewall. ¿Tienes bien configurado el firewall y
tu router para redireccionar tus peticiones al servidor OpenVPN?
La verdad si no es esto no se que puede ser. Los cambios a realizar son
mínimos y lo que has hecho me parece correcto.
Prueba distintos clientes para ver si el problema se reproduce con todos
los clientes.
Responder
jun 9,2014 15:24
Juan Carlos
Mi duda es si después de modificar el client.conf tengo que volver generar los
archivos para los usuarios. Es decir lo que es guarda en la carpeta config. Si ha
cambiado la ip del rooter como sabe el openvpn de los usuarios en que
dirección esta el servidor?
Responder
jun 9,2014 16:16
Joan Carles
No tienes que crear claves nuevas para los clientes. Las que tienes sirven.
No se si tu servidor Openvpn tiene fines comerciales o no. Si tienes fines
comerciales deberás informar a todos tus clientes del cambio de IP y
pasarles el nuevo archivo de configuración con la nueva IP que espero
que sea fija. Con esto cada cliente sabrá al servidor donde tiene que
apuntar.
Saludos
Responder
jun 9,2014 17:51
Jose Luis
Para actualizar el repositorio si el siguiente comando no funciona:
sudo apt-get install openvpn openssl
Con el siguiente comando lo arreglan:
sudo apt-get update && sudo apt-get install ethtool
Responder
jun 12,2014 17:27
Jacob
jun 22,2014 4:19
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 29/39
Una consulta, ¿cuándo redactarás para configurarlo en android?Responder
Joan Carles
No lo se. Intento escribir cuando me apetece más que cuando planeo. La
explicación para conectarse en Android pienso que es la más complicada
de las 4 que me plantee realizar.
Pienso que en unos o 2 meses debería estar la explicación redacta.
Responder
jun 22,2014 10:24
Christian
Una consulta, he realizado los pasos según la configuración indica. Me conectan
los usuarios, pero solo el primero que se conecta llega a tener comunicaciones
con el server.
Pero los otros se conectan, les da ips, pero no llegan a tener comunicación con
el server, ¿qué puedo haber hecho mal ?
Responder
jun 22,2014 23:43
Joan Carles
No entiendo lo que que te pasa. Si se conectan quiere decir que tienen
conexión con el servidor y tu me dices que se conectan y no tienen
conexión con el servidor.
No entiendo lo que te pasa y no se que puedes estar haciendo bien o
mal. Si un cliente te va bien y otros no quizás sea tema de que el cliente
esté mal configurado.
Saludos
Responder
jun 23,2014 10:57
Christian
que el servidor OpenVpn le asigna direcciones ip a los clientes, pero solo el
primero puede hacer ping al servidor y los demás no pueden.Responder
jun 24,2014 22:11
Joan Carles
La información que proporcionas es incompleta. Dudo que yo mismo ni
nadie más te pueda ayudar con la información que proporcionas.
Responder
jun 25,2014 7:50
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 30/39
Luis
Escribo sólo para agradecer tu trabajo y animarte a completarlo (que parece
que no te apetece mucho ;) ) con la conexión en Android que personalmente
espero para probar.
Un saludo y ánimo.
Responder
jun 25,2014 3:22
Rick
Hola no se si haya un vídeo de referencia. Es la primera vez que uso Openvpn.
No me sale lo de hacer los certificados.
¿Si tengo una Ip estática como podría usar VPN en una red local(en mi propia
casa)?
¿Y como comparto archivos comparto archivos con winscp?
gracias
Responder
jun 25,2014 10:47
Joan Carles
De vídeos en youtube encontrarás. Pero que te pueda recomendar no se
ninguno.
Lo de los certificados está explicado paso por paso. Solo tienes que
seguir las instrucciones. Mejor no lo se detallar.
Si quieres testear el funcionamiento en tu red local tan solo tienes que
introducir la ip interna del servidor en el fichero de configuración del
cliente. En vez de la ip pública pones la Ip Interna.
No se lo que es winscp pero he buscado y veo que es un cliente ftp. Ftp
no tiene nada que ver con openvpn. Si te quieres conectar al servidor
openvpn lee en el post que lo explica. Te aconsejaría sustituir winscp por
Filezilla.
Por tus preguntas creo que no solo eres nuevo en Openvpn. Creo que
deberías ampliar tus conocimientos sobre redes. Sin unos conceptos
mínimos dudo que puedas armar el servidor. Aunque siempre puedes
copiar y pegar y debería funcionar…
Saludos
Responder
jun 25,2014 22:02
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 31/39
Rafael
Hola Joan Carles.
En primer lugar, felicitarte por la gran calidad de tu Blog. Es un placer encontrar
personas como tú en la red, dispuestas a ayudar sin dejar de lado
el rigor y el buen hacer.
Por otra parte me gustaría saber si me puedes aclarar una duda. Tengo que
montar una red VPN en mi empresa ya que tenemos varias oficinas en distintos
lugares geográficos.
He leído tus post sobre el tema, pero me surge una duda. En los post hablas de
montar un servidor VPN y yo creía que lo único que hacía falta era un router con
conexión VPN para montar la red. ¿Son necesarios los dos elementos, router y
servidor, o uno excluye al otro?. Además, ¿Es necesario que los routers en
ambos extremos de la red (oficinas) tengan conexión VPN?
Gracias por tu respuesta.
Responder
jul 1,2014 9:45
Joan Carles
Hola Buenas,
Hay Routers que traen incorporado el servidor VPN. Tendrás que mirar los
protocolos VPN que soporta el router, la conexiones simultaneas de
clientes que soportan, etc. Los Routers también requerirán de
configuración. Si el nombre de clientes es bajo con 2 o más Router
deberías tener suficiente para lo que quieres hacer.
También es posible usar un router normal y corriente y tener un servidor
virtual o real que actúe como servidor VPN.
Yo mucho más no te puedo decir. El informático y quien tiene que montar
esto eres tu. Yo por suerte o por desgracia no soy informático ni me
dedico a ello.
Saludos
Responder
jul 1,2014 21:03
Antonio
Para configurar el cliente openvpn también tenemos que coger la configuración
de ejemplo el el directorio /usr/share/doc/openvpn/examples/sample-config-
files/client.conf
y editarla en este otro directorio /etc/openvpn/
Responder
jul 2,2014 12:52
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 32/39
Has dicho que copiemos el server.conf pero no el client.conf, me imagino que
el archivo que editaremos cuando nos pides que modifiquemos el cliente es el
archivo client.conf que tenemos que copiar también en el directorio
/etc/openvpn/
Es por matizar :)
Gracias por tu trabajo me ayuda muchísimo, gracias!!!
Joan Carles
Depende Antonio. Hay versiones de Openvpn en que el fichero de
configuración del cliente se halla en
/usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz. Por
lo tanto al mismo tiempo que copiamos el fichero de ejemplo del
servidor también copiamos el del cliente. Este es el caso de Debian.
En el caso de Mint 17 o Ubuntu 14.04 si que tienes razón. Hay que
trasladar el fichero de muestra del cliente porqué está separado del
servidor. El Fichero de muestra del cliente se halla en la siguiente
dirección:
/usr/share/doc/openvpn/examples/sample-config-files/client.conf
Saludos
Responder
jul 5,2014 9:48
Jacob
Buena te cuento, logro seguir y hacer todos los pasos que detallas en la guía, al
conectar desde mi android al servidor no logro tener acceso a internet.
¿Qué pude haber echo mal?, Además en la aplicación de android solo me sale
que solo envío paquetes, pero no recibo desde el servidor. Saludos y buen día.
Responder
jul 6,2014 5:37
Joan Carles
Pues si sigues los pasos de la guía y te paso esto es que algún paso no
está bien realizado.
Si puedes enviar paquetes pero no los puedes recibir tu problema es
probable que el firewall de tu servidor no esté redirigiendo las peticiones
de forma adecuada.
Quizás también pueda ser algún parámetro de la configuración del
servidor. Tendrás que volver a repasar paso por paso lo realizado
Responder
jul 6,2014 9:26
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 33/39
entendiendo lo que haces en cada momento. Con la información
proporcionada poco más puedo decir.
David
hola , tengo una gran pregunta. Yo tengo sistema windows.
¿Cuál es el programa que tengo que descargar para poder editar los server ?
Responder
jul 13,2014 10:00
Joan Carles
No acabo de entender tu pregunta. ¿Qué es esto de editar el server?
Si quieres hacer lo mismo que el tutorial pero en Windows te aconsejo
que mires en la web oficial de Openvpn. Para serte sincero en Windows
no se como se hace y en estos momentos tampoco me interesa saber
como se hace. Para el 100% de servidores que montes GNU Linux es
infinitamente superior a Windows en todos los aspectos.
Responder
jul 13,2014 11:52
Ed Soprano
Hola, esta genial tu tutorial, me servio mucho con lo del TLS/auth, sabes como
son los pasos después de las configuraciones de servidor y clientes, para
windows server, pues lo he montado ahi y me gustaría hacer lo del dns y lo
demás que comentas, claro si es posible hacerlo, sin mas me despido. Gracias
Responder
jul 23,2014 2:25
Andrew
Estimado Amigo;
primero que todo, felicitarte por el excelente post, debo decirte que en gran
medida me he valido de lo que has presentado aquí para configurar mi servidor
vpn en windows, soy recién un principiante en esto y quizás lo que te pregunte
sea tonto, pero ya he recorrido por varias horas la web sin encontrar respuesta a
mi inquietud, la cual quiero hacerte presente:
Para la autentificación de clientes mediante login y password, tu presentas este
comando: useradd usuariovpn2 -M -s /bin/false ; mi pregunta es, este es el
mismo comando que debo usar en mi consola de comando en win para
generar la misma regla que tu propones?
hay alguna variante a considerar exepto usuariovpn2?
Responder
ago 16,2014 2:46
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 34/39
por favor, me gustaría que me orientaras y me eches una mano.
Desde ya te agradezco por este excelente post.
Joan Carles
Hola,
No sabia que la mayoría de cosas funcionarían en Windows. Nunca he
usado windows para configurar un servidor.
El comando useradd diría que en Windows no funciona porqué este
comando diría que solo funciona en sistemas Unix o derivados de Unix.
Pero lo puedes probar por si acaso no? Si quieres un equivalente en
windows simplemente no lo se. Si alguien lo sabe que lo ponga.
Referente a lo de las variantes no se muy bien a lo que te refieres. Pero te
puedo decir que puedes crear tantos usuarios como quieras. Así que si
tienes el usuariovpn2 y quieres crear otro usuario no tendrás problema
alguno.
Saludos
Responder
ago 16,2014 9:10
jordi
Buenas,
tienes un error en la ruta:
Pones:
plugin /usr/lib/openvpn/openvn-auth-pam.so /etc/pam.d/login
Pero debería ser:
plugin /usr/lib/openvpn/openvpn-auth-pam.so /etc/pam.d/login
Y el ta.key se debe copiar a “/etc/openvpn”
Responder
ago 20,2014 21:21
Joan Carles
Jordi, Gracias por tus aportaciones. Durante este fin de semana
solucionaré los puntos que mencionas.
Responder
ago 21,2014 21:47
Pablo
ago 26,2014 8:26
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 35/39
Gracias excelente tutorial. tengo un problema con
sudo apt-get install openvpn openssl
sudo: apt-get: command not found
lo estoy haciendo en centos 6.5 no quiero instalar de otra forma porque quiero
seguir este tutorial cual seria la solución gracias
Responder
Joan Carles
Hola. CentOS no utiliza el gestor de paquetes apt-get. Si no voy mal usa
yum. Por lo tanto usa los comandos equivalentes con el gestor de
paquetes yum. “sudo yum install openvpn openssl” . Para el resto de
comandos puedes mirarlos en google. Lo dificil es la configuración del
servidor y el servidor se configura igual en CentOS que en Debian, que en
windows.
CentOS no es precisamente una distro fácil. Viendo la pregunta que has
realizado dudo que CentOS sea la mejor opción para ti en estos
momentos. Si utilizas Debian o Ubuntu encontrarás mucha más
documentación y soporte de la comunidad.
Saludos
Responder
ago 26,2014 14:41
Luis
Buenas,
Cuando ejecuto “source vars”, me sale el mensaje:
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-
rsa/keys
Y no me deja continuar. Que hago mal??
Gracias por todo!!
Responder
ago 28,2014 12:18
Joan Carles
Hola Luis,
Por la pregunta que haces o no has leído el post o no entiendes lo que
estás haciendo. Si es el segundo caso es difícil que llegues al final con el
servidor funcionando.
Responder
ago 28,2014 22:02
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 36/39
No estás haciendo nada mal. Si te fijas verás que a mi también me sale
este mensaje.
Saludos
Juan
Hola de nuevo mi buen amigo y gracias por tu respuesta en el apartado
anterior. Tengo algunas dudas y quisiera por favor me pudieras orientar.
Para poder montar un servidor de las características de las que mencionas en tu
post, el SO Debian solo lo debo instalar con las herramientas estándar (es decir,
solo el entorno unix)sin entorno gráfico, sin laptop, server print y las demás
opciones que aparecen cuando se instala por primera vez Debian?
Cuando configuro rc.local, el fichero me aparece vacio sin ninguna regla para
iptables, y ahi es donde agrego las 3 lineas que mencionas, pero lo que me
confunde es que en la imagen del post tu tienes 2 lineas adicionales para este
fichero, dando un total de 5 lineas; quisiera me explicaras, apelando a tu
amabilidad, que significan las dos primeras lineas, si esas dos primeras lineas la
debo colocar o no y si donde aparece la ip 192.168.2.0/24 ahí debo ingresar
alguna dirección diferente a la que se ve (he buscado información sobre esto
pero me confunde mas ya que unos dicen una cosa y otros cosas muy
diferentes)
Si estoy detrás de un router, debo elegir manualmente la IP interna de mi server
en “configuración manual de la red” cuando se esta instalando Debian o lo
puedo cambiar después?
Por cierto, para quien no sepa, y si puedes agregar esto para quien no sea muy
entendido como yo para Iniciar el servidor de VPN;
teclear
cd /etc/openvpn/
openvpn server.conf
Por favor orientame, ya que he consultado sobre lo de iptables pero en vez de
avanzar me pierdo mas con las distintas versiones que encentro en la net.
Desde ya, muchas gracias
Responder
sep 3,2014 1:40
Joan Carles
Hola Juan
Para seguir las indicaciones del post lo puedes realizar con Debian y no
hace falta instalar el entorno gráfico, ni un servidor de impresión ni nada.
Responder
sep 5,2014 19:12
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 37/39
Con la instalación base del sistema es suficiente. Pero si quieres instalar
entornos gráficos, etc lo puedes hacer tranquilamente. Si quieres usar
Linux Mint, Ubuntu o cualquier otra distro diferente a Debian también lo
puedes hacer.
Las dos primeras lineas que no sabes lo que son no hacen referencia al
servidor OpenVPN. Hacen referencia a un servidor VPN con el protocolo
pptp. El significado de estas lineas se explica en el siguiente link.
http://geekland.hol.es/crear-un-servidor-vpn-pptp/
Un consejo. Si con OpenVPN no te sale puedes probar con pptp (el link
que te acabo de dar). El proceso de configuración para pptp es mucho
más sencillo que con OpenVPN. Verás que el único problema para hacerlo
con pptp es que la seguridad de tu servidor es menor pero para el uso
que le quieres dar imagino que la seguridad no es algo crítico.
Para hacer que tu ip se fija lo puedes hacer tranquilamente después de
instalar Debian.
Referente a iniciar el servidor diría que no hace falta poner los comandos
que mencionas. Una vez instalados los paquetes se autoinicia
automáticamente. Y si no lo hace y no te quieres complicar la vida la
próxima vez que reinicies ya se ejecutará automáticamente.
Saludos y espero que te haya sido de ayuda.
Andrew
Estimado Joan;
gracias por este tremendo tutorial, lo que quiero consultarte es lo siguiente:
Resulta que cuando inicio el servidor me dice que no esta cargado el modulo
tun. El módulo aparece como parte del kernel, pero al hacer modprobe tun no
me devuelve nada, al hacer modprobe tun.ko me dice FATAL:modulo tun.ko no
encontrado error:hd0, msdos1 read errorAl verificar con modinfo tun me
devuelve /lib/modules/3.2.0-4-686-pae/kernel/drivers/net/tun.ko, indicando
que se encuentra dicho modulo en el kernel de debian hay varias partes donde
dice si esta el archivo del modulo tun en /dev/net/tun y efectivamente esta ,
pero es un archivo que tiene 0 bytes; por otra parte hay quienes dicen que debo
crearlo con mknod tun c 10 200, es esto correcto?
Quisiera que me orientaras, estoy trabajando con debian 7.6, versión de kernel
3.2.0-4-686-pae
He intentado cargarlo pero no me resulta, apelo a tus conocimientos y por
favor me digas los pasos a seguir de:
Como lo cargo?
Responder
sep 11,2014 2:13
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 38/39
Si hay que compilarlo, Como lo compilo?
Si lo creo, que debe llevar en el contenido?
Una vez cargado, como verifico que esta activo y funcionando?
como lo incluyo en el arranque de sistema?
Por favor necesito tu ayuda…desde ya muchas gracias Joan
Joan Carles
Hola
Solo con hacer lo que se detalla en el tutorial levantaras la interfaz tun.
No hace falta compilar nada. Cuando arranques el servidor openvpn
podrás ver si tun se levanta con un ifconfig.
Saludos
Responder
sep 11,2014 10:09
Nelson
Buenas Caballero, esta muy bien esta documentación.
Ya prácticamente lo tengo funcionando, pero quería intentar habilitar Access
Server web UIs, para ingresar vía Web y realizar el resto de configuraciones del
Openvpn Server.
No he podido habilitarlo, será que tengo que descargarlo aparte?
Tienes un link para esta descarga?
Gracias por tus comentarios.
Responder
sep 19,2014 1:42
Joan Carles
Si que se puede hacer lo que quieres hacer. Para realizar esto encontrarás
los paquetes necesarios en este enlace:
https://openvpn.net/index.php/access-server/overview.html
Tienes que descargar el paquete, instalarlo ejecutarlo y configurar.
Después de esto podrás acceder a la configuración de tu servidor
Openvpn vía navegador. Si ya tienes realizados todos los pasos del
tutorial dudo que quieras empezar de nuevo todo el proceso. Todo lo
que hagas vía web se puede hacer por terminal consumiendo menos
recursos. Además si lo haces desde la raíz siempre comprendes mejor lo
que estás haciendo. De hecho en el post que escribo se realizan todas las
Responder
sep 19,2014 20:27
24/9/2014 Crear y configurar un servidor openvpn con tls-auth y dnsmasq
http://geekland.hol.es/crear-y-configurar-servidor-openvpn/ 39/39
configuraciones que seguramente necesites.
Saludos
Nelson
Gracias!! En efecto prefiero la línea de comandos, pero el mantenimiento de los
usuarios se lo debo dar a personal con poco conocimiento técnico, de allí que
deseo habilitar la opción WEB.
Ultima consulta, al instalar estos paquetes y entrar vía web, la configuración que
ya realice se mantendrá intacta cierto?
Responder
sep 19,2014 20:35
Joan Carles
Hola. Lo tendrás que probar tu mismo y sabrás la respuesta. Yo no lo se
porqué nunca lo he probado.
Una vez lo hayas hecho me gustaría que lo comentarás en el blog para
otras personas que tengan la misma duda que tu.
Saludos
Responder
sep 19,2014 20:40
top related