Sie sind auf Seite 1von 40

Crear y Configurar Servidor

Openvpn
En pasados post vimos como podamos crear muy fcilmente nuestro propio servidor VPN
mediante el protocolo pptp.

http://geekland.eu/crear-un-servidor-vpn-pptp/

Pudimos constatar y experimentar que la instalacin y configuracin del servidor era


sumamente sencilla y era altamente compatible con la totalidad de sistemas operativos
existentes, pero como punto negativo tambin vimos que a da 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 transmisin de informacin
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 continuacin.

TIPO DE CONFIGURACIN VPN QUE VAMOS A


USAR
Hay distintas formas de configurar un servidor mediante OpenVPN. Los distintos tipos de
configuracin existentes 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 ms
popular de todos y el que seguramente se adaptar a prcticamente las necesidades de de
cualquier usuario.
La configuracin Road to Warrior (Host to LAN mediante tnel) permitir que mltiples
dispositivos u ordenadores se puedan conectar simultneamente 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 ms informacin acerca de este tipo de configuracin puede
consultar el siguiente enlace.

La configuracin Host to Host, a diferencia del modo de configuracin anterior,


nicamente nos permitir la conexin entre 2 mquinas o dispositivos conectados a
Internet o dentro de una red local. Por lo tanto en este caso solamente existe un cliente y un
servidor. Adems ests 2 mquinas o dispositivos no podrn compartir recursos e
informaciones con otros equipos que estn conectados en la misma red LAN.
Para finalizar tenemos la configuracin Net to Net, Red-red, o LAN to LAN. Esta
configuracin mayoritariamente es usada en el mundo empresarial. Esta configuracin lo
que hace es unir redes locales (LAN) ubicadas en distintas ubicaciones geogrficas
para de esta forma poder compartir informacin entre todos los clientes de todas las redes.
De este modo cada una de las redes locales LAN tiene un punto de acceso o puerta de
enlace que proporciona un canal de transmisin seguro entre 2 o ms redes.

ASEGURAR QUE EL SERVIDOR OPENVPN TENGA


IP FIJA EN LA RED LOCAL
Es muy importante asegurar que nuestro servidor disponga de una IP interna fija en la red
local. Es importante porqu cuando recibamos una peticin de los clientes VPN, el router
tendr que saber a que IP interna tiene que redireccionar la peticin 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.eu/configurar-ip-fija_o_estatica_ipv4/
Nota: El mtodo descrito en el enlace es vlido en el caso que estis usando un
servidor sin entorno grfico. En el caso que el servidor que usis disponga de entorno
grfico tendris que configurar este aspecto a travs de las interfaces visuales de vuestro

w
gestor de red que probablemente ser network manager o icd.

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 los clientes al servidor OpenVPN.

REDIRECCIONAMIENTO DINMICO NO-IP

Cuando tengamos nuestro servidor VPN funcionando, lo ms 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 Pblica pero
desafortunadamente en la gran mayora de casos la IP que tenemos es dinmica. Por lo
tanto se puede dar perfectamente el caso que en el momento de conectarnos no sepamos
la IP Pblica de nuestro servidor.

Para solucionar este problema tenemos que asociar la IP Pblica de nuestro servidor a
un dominio. Para poder realizar este paso tan solo tienen que seguir las indicaciones
del siguiente enlace:

http://geekland.eu/encontrar-servidor-con-dns-dinamico/

Una vez realizados estos pasos tendris vuestra IP Pblica asociada a un dominio. En mi
caso mi IP Pblica est asociada al dominio geekland.sytes.net
INSTALACIN DEL SERVIDOR

La instalacin del servidor la vamos a realizar en un sistema operativo Debian Wheezy. La


totalidad del procedimiento descrito tiene que funcionar en cualquier distribucin que
buntu, Crunchbang, Linux Mint, Kubuntu, etc.
derive de Debian como pueden ser U

Para instalar el servidor OpenVPN lo primero que tenemos que hacer es abrir una
terminal. Dentro de la terminal t eclean el siguiente comando:

sudo apt-get install openvpn openssl

Ahora ya tenemos instalado el servidor.

CREAR UNA AUTORIDAD DE CERTIFICACIN

OpenVPN es un protocolo de VPN basado SSL/TLS mediante certificados y claves RSA


creadas mediante openssl. 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 certificacin para a posteriori generar los certificados.

Nota: La principal funcin de una autoridad de certificacin es la de emitir y revocar


certificados digitales para terceros. Para quien necesite ms informacin puede consultar
el siguiente enlace.
Crear el certificado raz ca para firmar y revocar los certificados de los clientes

Para poder emitir y revocar la claves necesitamos crear nuestra propia autoridad
certificadora y disponer de nuestro certificado raz ca.ctr y de nuestra clave ca.key
para poder crear y firmar las claves de los 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 la ubicacin /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 configuracin de OpenVPN, que se


hallan en la ubicacin /usr/share/doc/openvpn/examples/easy-rsa/2.0/, dentro de
la carpeta easy-rsa que acabamos 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
continuacin:
En el caso que que vuestra distro trabaje con la versin 3 de easy-rsa, en el momento de
introducir el ltimo comando, obtendris 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 comando para instalar el paquete easy-rsa.

apt-get install easy-rsa


Seguidamente borran la carpeta easy-rsa que habamos creado inicialmente introduciendo
el siguiente comando en la terminal:

rm -R /etc/openvpn/easy-rsa

Finalmente para obtener los scripts para la creacin de claves en la terminal introducimos el
siguiente comando:

make-cadir /etc/openvpn/easy-rsa

Nota: Algunas de las distros que funcionan con easy-rsa 3.0 son Ubuntu 14.04, Linux
Mint 16, etc.

Para ejecutar los scripts que acabamos de copiar o de obtener, tenemos que ir a la
ubicacin 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
parmetros. Para modificar el fichero vars se tiene que introducir el siguiente comando en
la terminal:

nano vars
Tamao de las claves

Una vez abierto el editor de texto tenemos que localizar y modificar la siguiente lnea:

export_KEY_SIZE=1024

Una vez encontrada la sustituyen por la siguiente linea:

export_KEY_SIZE=2048

Nota: Con esta modificacin estamos incrementando el tamao de la claves privadas


(.key) que vamos a generar y tambin del parmetro de Diffie Hellman. Con esta
modificacin incrementarios del tamao de las claves de 1024 bits a 2048 bits. Tambin
seria posible usar 4096 bits. Este parmetro no tiene porqu penalizar en exceso el
rendimiento del servidor. nicamente penalizar el proceso autentificacin Handshake de
SSL/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(arroba)myhost.mydomain

export KEY_EMAIL=mail(arroba)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 podran ser:

export KEY_COUNTRY=ES Poner las 2 iniciales de tu pas


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 organizacin
export KEY_EMAIL=xxxxxxx(arroba)gmail.com Usar vuestra direccin de email
export KEY_EMAIL=xxxxxxx(arroba)gmail.com Usar vuestra direccin 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 tambin podemos configurar el tiempo de validez que
tendr nuestra entidad certificadora y el tiempo de validez que tendrn los certificados y
claves que crearemos. El valor estndar de validez son 3650 das 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 podran existir en la ubicacin /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 parmetros de Diffie Hellman. Los parmetros de Diffie
Hellman se utilizarn para poder intercambiar las claves ente cliente y servidor de forma
segura. Para poder realizar este paso tenemos que teclear el siguiente comando en la
terminal:

./build-dh

Al terminar el proceso dentro de la ubicacin /etc/openvpn/easy-rsa/keys se habr


creado el archivo dh2048.pem que contiene los parmetros Diffie Hellman.

Nota: Para quien requiera informacin adicional de los parmetros de Diffie Hellman
nlace. E ste parmetro se usar poder un intercambio de
puede consultar el siguiente e

claves entre 2 participantes de forma segura.

En la siguiente captura de pantalla podrn 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

Durante el proceso de creacin se les har una serie de preguntas para incorporar
informacin dentro del certificado que se crear. Como anteriormente hemos editado el
fichero vars ahora solo nos tenemos que limitar a aceptar el valor por defecto de las
preguntas que nos hacen.

Al terminar el proceso dentro de la ubicacin /etc/openvpn/easy-rsa/keys se ha creado


ca.crt y ca.key:

ca.crt: Es el certificado raz pblico de la autoridad de certificacin (CA)

ca.key: Este fichero contiene la clave privada de la autoridad de certificacin (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 LA CLAVE DEL


SERVIDOR OPENVPN
A 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 tenis que introducir el nombre
que vosotros queris.
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 ubicacin /etc/openvpn/easy-rsa/keys se habrn


creado los siguientes archivos:

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 c


ertificado pblico del servidor.

whezzyVPN.csr: Este archivo es la peticin de certificado que se enva a la autoridad


de certificacin. Mediante la informacin que contiene el archivo .csr, la autoridad de
certificacin 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 LAS CLAVES DE LOS
CLIENTES
El siguiente paso es crear los certificados y las claves de los clientes que se podrn
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 vuestro caso

suariovpn por el nombre que queris.


tendris que reemplazar u

Una vez introducido este comando se nos har una serie de preguntas. Simplemente tienen
ars.
que contestar el valor por defecto ya que anteriormente hemos editado el fichero v

Al terminar el proceso dentro de la ubicacin /etc/openvpn/easy-rsa/keys se habrn


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 pblico del


servidor.

usuariovpn.csr: Este archivo es la peticin de certificado que es enva a la autoridad


de certificacin. Mediante la informacin contenida en el archivo .csr, la autoridad de
certificacin podr realizar el certificado del cliente una vez hayan realizado las
comprobaciones de seguridad pertinentes.
Nota: El procedimiento de generacin de clientes se deber repetir tantas veces como
clientes queris 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:
FORTIFICAR LA SEGURIDAD DEL SERVIDOR
OPENVPN CON TLS-AUTH

Nota: Esto paso en principio no es necesario pero lo realizaremos para incrementar la


seguridad de nuestro servidor VPN.

Ahora generamos otra clave. Esta clave nos servir para agregar soporte para usar la
autentificacin 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 ubicacin /etc/opnevpn/easy-rsa/keys tecleamos 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 ubicacin dnde 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 verificar la 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 conexin se rechazar
automticamente. Adems con el uso de autentificacin TLS tambin conseguiremos
prevenir los siguientes ataques:

oS.
1. Ataques de denegacin de servicio D

2. Ataques de denegacin de servicio por inundacin UDP al puerto del VPN.

3. Escaneo de puertos en nuestro servidor para intentar averiguar vulnerabilidades.

UBICACIN DE LAS CLAVES GENERADAS


A estas alturas hemos generado multitud de claves y certificados. Si se han seguido los
pasos detalladamente, la totalidad de claves se hallan en la ubicacin
/etc/openvpn/easy-rsa/keys.
Anteriormente ya he detallado el uso de cada una de la claves. Seguidamente pasar a
detallar la ubicacin de cada una de las claves:

Archivo Descripcin Ubicacin Secreto

dh2048.pem Parmetros Diffie Hellman Servidor (/etc/openvpn) S

ca.crt Certificado raz de la Servidor (/etc/openvpn) y No


entidad certificadora cliente

ca.key Clave de la entidad Servidor (/etc/openvpn) S


certificadora

whezzyVPN.key Clave del servidor VPN Servidor (/etc/openvpn) S

whezzyVPN.crt Certificado del servidor VPN Servidor (/etc/openvpn) y No


cliente

whezzyVPN.csr Archivo de peticin de Servidor (/etc/openvpn) No


certificado

usuariovpn.key Clave privada del cliente Cliente S


VPN

usuariovpn.crt Certificado del cliente VPN Cliente No

usuariovpn.csr Archivo de peticin de Servidor (/etc/openvpn) No


certificado

ta.key Clave para la Servidor (/etc/openvpn) y S


Autentificacin TLS cliente
Nota: Tienen que trasladar cada una de las llaves mencionadas en las ubicaciones
que se detallan en el cuadro. Recuerden transmitir y trasladar las claves y certificados del
servidor al cliente por un canal seguro.

ASEGURAR QUE LAS PETICIONES DNS SE


REALIZAN POR EL VPN
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 el siguiente enlace.

Para que nadie capture nuestras peticiones DNS lo que realizaremos es canalizar la
totalidad de nuestras peticiones a travs del tnel del servidor OpenVPN. As las
peticiones DNS se enviarn al servidor VPN de forma cifrada y ser el servidor OpenVPN el
encargado de resolverlas. Para poder realizar 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 al servidor VPN. Para ello accedemos al archivo de configuracin
introduciendo el siguiente comando en la terminal:

nano /etc/dnsmasq.conf
Una vez abierto el editor de texto introducen las siguientes lneas:

listen-address=127.0.0.1,10.8.0.1

bind-interfaces

Nota: Introduciendo la primera lnea lo que estamos haciendo es que Dnsmasq

solamente tenga en cuenta las peticiones DNS que se dirijan a las interfaces [lo]:
127.0.0.1 y [tun0]: 10.8.0.1 que es la de nuestro servidor VPN.
Nota: Con la segunda lnea estamos habilitando que dnsmasq tenga la capacidad de
escuchar solo determinadas interfaces como por ejemplo las dos que hemos definido
antes. La [lo] 127.0.0.1 y la [tun0] 10.8.0.1

Ahora tan solo tienen que guardar los cambios y salir del archivo de configuracin. La
configuracin ha terminado y solamente hace falta reiniciar los servicios openvpn y
dnsmasq. Para ello teclean los siguientes comandos 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 captura de la pantalla:
Starting DNS forwarder and DHCP server: dnsmasq

dnsmasq: failed to creat listening to socket for 10.8.0.1: No se puede


asignar la direccin 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 y que dnsmasq puede realizar su funcin 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
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 modo cuando se reinicialice dnsmasq la interfaz [tun0] ya
estar levantada.

Nota: Para que dnsmasq funcione tienen que tener configurado el servidor VPN tal y
como se detalla en el apartado Configurar el servidor.

CONFIGURAR EL SERVIDOR OPENVPN

Existen ficheros de configuracin standard que deberan funcionar out of the box y que
podemos aprovechar para realizar nuestra configuracin. Los ficheros de ejemplo que
podemos usar para ver la totalidad de opciones que tenemos disponibles se hallan
comprimidos en la siguiente ubicacin ubicacin:

/usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz

Para consultarlos teclear el siguiente comando para acceder a la ubicacin 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


configuracin en la ubicacin /etc/openvpn. Para ello tecleamos el siguiente comando:

cp -a
/usr/share/doc/openvpn/examples/sample-config-files/server.conf.g
z /etc/openvpn/

Seguidamente accedemos a la ubicacin donde hemos copiado el archivo comprimido que


contiene los archivos de configuracin:

cd /etc/openvpn

Para descomprimir el archivo que contiene los archivos de configuracin tecleamos:

gunzip server.conf.gz

Una vez descomprimido el archivo ya podemos consultar los ejemplos de


configuracin tanto del cliente como del servidor. Para ver y modificar la configuracin
estndar 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 podrn ver de forma detallada las opciones de
configuracin de ejemplo del servidor. Ahora tendris que comprobar que la totalidad de
parmetros que se muestran en la tabla de este apartado estn dentro del fichero de
configuracin de ejemplo que es el que vamos a usar. En el caso de que los parmetros
estn comentados habr que descomentarlos, en el caso que no existen se debern aadir
y/o modificar.

Parmetro Descripcin

dev tun Dispositivo virtual en el cual se creara el tnel.

proto udp Protocolo de la conexin VPN. Tambin podramos 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 parmetro de Diffie Hellman.

Server 10.8.0.0 Indicamos que a los clientes del VPN se les asignar IP del
255.255.255.0 tipo 10.8.0.0/24

ifconfig-pool-persist ipp.txt Se crea un fichero ipp.txt en el que se registran las IP de los


clientes que se conectan al servidor VPN.
push route 192.168.1.0 Con esta lnea hacemos que los paquetes que tengan como
255.255.255.0 92.168.1.0 viajen por la interfaz del tnel
destino la red 1
(tun0). De esta forma el cliente VPN se podr comunicar con
92.168.1.0.
cualquier mquina de la red 1

keepalive 10 120 El servidor VPN enviar un ping cada 10 segundos y como


mximo esperar 120 segundos para que el cliente de una
contestacin.

tls-aut ta.key 0 Activacin de la autentificacin TLS en el servidor.

comp-lzo Activar compresin LZO para la transmisin de datos.

max-clients 10 Nmero mximo de clientes que se pueden conectar de


forma simultanea. El valor se puede modificar segn las
necesidades.

user nobody Para limitar los privilegios del demonio de VPN hacemos que
obody.
funcione con el usuario n

group nogroup Para limitar los privilegios del demonio de VPN hacemos que
ogroup.
funcione con el grupo n

push redirect-gateway Para que la totalidad de trfico vaya a travs de nuestro VPN
def1

push dhcp-option DNS Estamos definiendo que las peticiones DNS de los clientes
10.8.0.1 0.8.0.1
se hagan a travs del servidor VPN ubicado en 1

cipher AES-256-CBC Por defecto el algoritmo de cifrado de OpenVPN es Blowfish


con un tamao de clave de 128 bits. Quien crea que no es
suficiente puede aadir esta lnea para cambiar el algoritmo
de cifrado a AES con un clave de cifrado de 256 bits. Para
ver todos los algoritmos de cifrado disponibles teclear
openvpn show-ciphers en la terminal.

persist-key En caso que el servidor OpenVPN se caiga las claves no


tendrn que ser analizadas de nuevo.

persist-tun El dispositivo t un0 no tendr que ser reabierto ni cerrado en


el caso que tengamos que reiniciar el servidor.

status openvpn-status-log Log donde se guardar informacin respecto al tnel creado.

plugin Activacin del script encargado de realizar la autenticacin


/usr/lib/openvpn/openvpn- del usuario y del cliente. (Ver el apartado Autentificacin del
auth-pam.so/etc/pam.d/lo cliente mediante usuario y password)
gin

verb 3 Grado de detalle del estado del tnel en los logs.

Una vez tenemos listo el fichero de configuracin tan solo tenemos que guardar los cambios
y cerrarlo.

Nota: Si queremos que los clientes que estan conectados al servidor VPN puedan
comunicarse entre ellos tenemos que aadir la frase client-to-client en el fichero de
configuracin del servidor.
Nota: Si leis con detalle el fichero de configuracin podris aplicar configuraciones
distintas a las que se detallan en el post.

Nota: La configuracin propuesta en este apartado se tendr que adaptar a las

caractersticas de vuestra red y a vuestras necesidades.

CONFIGURAR EL CLIENTE OPENVPN


Una vez configurado el servidor ahora pasaremos a configurar el cliente. Para ello dentro de
la ubicacin /etc/openvpn tecleamos el siguiente comando:

nano client.conf

Se abrir el fichero de configuracin en el que podrn ver un ejemplo de configuracin para


un cliente estndar. Aseguramos que el fichero de configuracin estndar tenga los
parmetros que se muestran en la tabla de este apartado. En caso de no tenerlos habr
que aadirlos manualmente, en el caso de que los parmetros estn comentados habr que
descomentarlos y en el caso que no existan se debern aadir y/o modificar.

Parmetro Descripcin

dev tun Dispositivo virtual en el cual se creara el tnel.

proto udp Protocolo de transmisin de paquetes del servidor VPN. Se puede


usar TCP.
remote Direccin IP pblica/Host DNS dinmico y puerto de escucha del
geekland.sytes.net 194 se puede cambiar. Si lo cambiamos
servidor VPN. El puerto 1
1194 deberemos adaptar el resto de configuraciones al nuevo puerto

resolv-retry infinite El cliente intentar de forma indefinida resolver la direccin o


nombre de host indicado por la directiva remote
(geeekland.sytes.net).

nobind A los clientes se les asignar puertos dinmicos (no privilegiados)


cuando haya retorno de paquetes del servidor al cliente.

user nobody Para limitar los privilegios de los clientes que se conectan al VPN
obody. (no necesario para windows)
les asignamos el usuario n

group nogroup Para limitar los privilegios de los clientes que se conectan al VPN
ogroup. (no necesario para windows)
les asignamos el grupo n

persist-key En caso que el servidor OpenVPN sea reiniciado no se tendrn


que volver a leer las claves.

persist-tun El dispositivo t un0 no tendr que ser reabierto ni cerrado en el


caso que tengamos 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 podramos
aplicar otras alternativas similares como por ejemplo
remote-cert-tls server.
tls-auth ta.key 1 Activacin de la autentificacin TLS en el cliente.

cipher Por defecto el algoritmo de cifrado de OpenVPN es Blowfish con


AES-256-CBC un tamao de clave de 128 bits. Quien crea que no es suficiente
puede aadir esta lnea para cambiar el algoritmo de cifrado a AES
con un clave de cifrado de 256 bits. Para ver todos los algoritmos
penvpn show-ciphers en la
de cifrado disponibles teclear o
terminal.

auth-user-pass Para indicar que el cliente tiene que introducir un nombre de


usuario y un password.

auth-nocache Para evitar que los password queden almacenados en la memoria


cache de los clientes.

comp-lzo Activar compresin LZO para la transmisin de datos.

verb 3 Grado de detalle del estado del tnel

AUTENTIFICACIN DEL CLIENTE MEDIANTE LOGIN


Y PASSWORD
A pesar de toda la seguridad que hemos implementado hasta el momento podra darse el
caso que alguien robar nuestro ordenador. Si alguien robar nuestro ordenador,
telfono o tablet podra encontrarse con la totalidad de nuestras claves criptogrficas
y de esta forma podra acceder fcilmente 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 aadir uno o los
usuarios que queramos.

Para aadir un usuario, como por ejemplo el usuariovpn2, tienen que teclear el siguiente
comando en la terminal:
useradd usuariovpn2 -M -s /bin/false

Una vez creado el usuario tenemos que definir un password del usuariovpn2. 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
despus nos pedir confirmacin.

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:
Nota: Para que la autentificacin mediante usuario y password funcione tienen que
tener configurado el servidor y el cliente tal y como se detalla en los apartados Configurar
el servidor y configurar el cliente.

CONFIGURAR IPTABLES PARA EL ENRUTAMIENTO


DE PETICIONES
Cuando el servidor OpenVPN reciba las peticiones de los clientes se debern enrutar
adecuadamente, y adems tendremos que tener configurar el firewall de nuestro
equipo para que permita el trfico a travs del tnel 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 IP Forwading de forma permanente t ecleamos 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 trfico por nuestro tnel
VPN, y adems tenemos que hacer que los clientes VPN puedan acceder a redes externas
pblicas y otras subredes dentro de 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 funcin de las caractersticas de vuestra red y configuracin de vuestro

firewall es posible que tenga que implementar reglas adicionales a las que se muestran
en este ejemplo.

Con la primera de las reglas estamos permitiendo el trfico por el dispositivo virtual en que
que se crea el tnel.

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 e
th0.

Con la tercera de las reglas estamos diciendo al servidor OpenVPN que cuando reciba
una peticin de cualquiera de los clientes, proceda el mismo a resolverla y enviarla en
representacin 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 ABRIR EL PUERTO
DEL SERVIDOR OPENVPN

Ya para finalizar solo nos falta configurar nuestro router, para que redirija las
peticiones de los clientes al servidor Opevpn, y abrir el puerto del servidor OpenVPN.
Para realizar esto tenemos que 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 y contrasea:
Una vez introducida la informacin accederemos a la configuracin de nuestro router.
Seguidamente, tal y como se puede ver en la captura de pantalla, tenemos que acceder a
los mens Advanced / NAT / Virtual Servers:

dd y nos aparecer la siguiente pantalla:


Seguidamente presionamos el botn A
Tal y como se puede ver en la captura de pantalla, en en el campo custom server hay que
escribir un nombre 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. En mi 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 nuestro servidor OpenVPN
(1194) en los puertos internos y externos.

Presionamos el botn Apply/Save y de esta forma todas las peticiones exteriores que
194 sern redirigidas a nuestro servidor OpenVPN.
lleguen a nuestro router por el puerto 1

COMO CONECTARNOS AL SERVIDOR OPENVPN


Seguidamente 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
fcilmente el funcionamiento de nuestro servidor Openvpn.

SEGURIDAD QUE NOS APORTAR EL SERVIDOR


OPENVPN
Si se configura el servidor Openvpn, tal y como se detalla en el post, se obtendr un nivel
de seguridad muy elevado y resultar prcticamente invulnerable frente a ataques.

La seguridad que aportar el servidor OpenVPN que acabamos de configurar estar


compuesta por 3 capas:

Capa 1 Autentificacin TLS: Con la autentificacin TLS estamos introduciendo una firma
digital HMAC a los paquetes antes de empezar la autentificacin reciproca entre cliente y
servidor. Si no se pasa el test de la firma HMAC, no se llegar ni a iniciar el proceso de
autenticacin 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 claves criptogrficas.

Capa 3 Cifrado: Dispone de varios tipos de cifrado disponibles en la transmisin de datos


entre el cliente y el servidor. Adems podemos aplicar medidas para los privilegios del
demonio de OpenVPN sean los mnimos para poder realizar la funcin que tiene que
realizar.

Todas estas caractersticas, ms las que se detallan en el post, hacen que OpenVPN sea
una opcin muy vlida para la transmisin segura de datos sensibles. Por esto motivo
OpenVPN es el protocolo que utilizan muchas organizaciones en el mundo empresarial.
Adems OpenVPN es una solucin multiplataforma y dentro de lo que cabe no es difcil de
configurar si lo comparamos con por ejemplo I psec.
En lo que a seguridad se refiere tambin tenemos que destacar que aparte de las 3 capas
de seguridad, tambin hemos implementado un mtodo para que los clientes del VPN
tengan que introducir un usuario y un Password. Adems la totalidad del trfico, incluyendo
la resolucin de las peticiones DNS, ser a travs del servidor OpenVPN que acabamos
instalar y de configurar.

Cabe decir que actualmente no se conocen vulnerabilidades importantes en este tipo de


servidor VPN. Es posible que se descubran vulnerabilidades pero si vamos aplicando las
actualizaciones de seguridad no deberamos tener problema alguno en lo que a seguridad
se refiere.

Referencia:

http://geekland.eu/crear-y-configurar-servidor-openvpn/

Das könnte Ihnen auch gefallen