Está en la página 1de 7

COMO: INSTALAR CONFIGURAR SERVIDOR DE

OPENVPN EN DEBIAN/UBUNTU
Siempre es bueno contar con una VPN, ya sea por que quieres salir con una IP de otro lugar para evitar las
restricciones geogrficas o por que estas en un hotspot publico y quieres tener esa pequea tranquilidad que otorga
el tener un VPN propia, as que aprovechando que aun tengo el ao gratis con amazon, pues instale y configure
OpenVPN.

Esta gua la instale tanto en ubuntu 14.04 y debian 8.0.

Instalacin y configuracin
Como siempre en Debian y sus derivados de antes de instalar hay actualizar tus paquetes, estoy asumiendo que
estas utilizando la cuenta root, para elevar permiso con tu cuenta actual puedes utilizarsudo su - o bien agregar
sudo a cada linea.
apt-get update
1

Ahora a instalar OpenVPN y Easy-RSA

apt-get install openvpn easy-rsa


1

Tomamos un archivo de los ejemplos de configuracin para iniciar

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
1
cd /etc/openvpn/
2
3 gunzip server.conf.gz

Vamos a editar el archivo que descomprimimos

vi /etc/openvpn/server.conf
1

Los parmetros que yo recomiendo cambiar, son los siguientes:

dh y cambiar 1024 por 2048, para subir el nivel de encriptacin.


server que es la red que se va asignar a los clientes el default es (10.8.0.0 mask 255.255.255.0), se recomienda
cambiar por algn bloque de red que no tenga conflicto con tu red.
client-config-dir ccd Si deseamos agregar rutas por cliente, estos archivos deben agregar en
/etc/openvpn/ccd/ClientName.
push redirect-gateway def1 bypass-dhcp si habilitamos esta politica, los clientes al conectarse su defatul
GW sera la VPN.
push dhcp-option DNS 208.67.222.222 si deseamos asignar a los clientes dns Custom.
user nobody y group nogroup es altamente recomendable cambiarlo, para reducir los privilegios del demonio.

IP Forward
Lo siguiente es habilitar habilitar reenvio de IP aka IP Forward, para habilitarlo hay varias formas.

Esto lo hace al vuelo pero no es permamente

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


1

Lo que hay que hacer para dejarlo de forma permamente es editar /etc/sysctl.conf

vi /etc/sysctl.conf
1

Y hay que descomentar la siguiente linea:

# Uncomment the next line to enable packet forwarding for IPv4


1
2
net.ipv4.ip_forward=1

Guardar cambios y cerrar.

Firewall
Si tenemos firwall tenemos que habilitar el puerto 1194 udp y activamos el enmascaramiento de las IPs de los
clientes de la vpn, en este caso 10.8.0.0/24, asumiendo que la tarjeta de red de salida es eth0, podremos activar
esto.

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE


1

Para hacerlo permanente podemos agregar esta linea en /etc/rc.local

Crear de autoridad certificadora, Certificado y Llave


OpenVPN utiliza certificados para encriptar el trafico, primero necesitamos configurar la Autoridad Certificadora
(CA).

Lo primero que hay que realizar es copiar Easy-RSA generation scripts

cp -r /usr/share/easy-rsa/ /etc/openvpn
1

Creamos la carpeta donde se guardaran las llaves

1 mkdir /etc/openvpn/easy-rsa/keys
Ahora hay que editar las variables de Easy-RSA el archivo a editar es/etc/openvpn/easy-rsa/vars los datos a editar
vienen casi al final del archivo y los datos que debemos de poner son los que desemos
export KEY_COUNTRY="MX"
1 export KEY_PROVINCE="NL"
2 export KEY_CITY="Monterrey"
3
4
export KEY_ORG="Nombre de la empresa"
5 export KEY_EMAIL="correo@ejemplo.com"
6 export KEY_OU="Unidad Organizacion"

En el archivo vars puedes utlizar server como el nombre de la llave. O bien si decidimos cambiarlo, tambien hay
que cambiar la referencia en el archivo /etc/openvpn/server.conf hacia los archivos server.key o server.crt, el
parametro es
export KEY_NAME="server"
1

Necesitamos generar el archivo Diffie-Hellman de acuerdo al parmetro que hayamos elegido en dh en el archivo
openvpn.conf, este comando puede demorar algunos minutos.
Para 1024

openssl dhparam -out /etc/openvpn/dh1024.pem 1024


1

Para 2048

openssl dhparam -out /etc/openvpn/dh2048.pem 2048


1

Ahora nos vamos a la carpeta /etc/openvpn/easy-rsa y ejecutamos lo siguiente


cd /etc/openvpn/easy-rsa
1
2
. ./vars

Nos saldr la siguiente informacin

NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys

Si estuvimos haciendo pruebas, se recomienda ejecutar ./clean-all

./clean-all
1

Ahora creamos la CA con los datos que hemos configurado en vars por lo que solo hay que dar enter a las opciones

./build-ca
1

Pues bien ahora toca el turno de generar la llave y el certificado para server o el nombre que le hayamos
asignado en KEY_NAME
./build-key-server server
1
Desplegara los datos que hemos capturado en vars, pero ahora solicitara algunos datos extra.

Please enter the following 'extra' attributes


1 to be sent with your certificate request
2
3
A challenge password []:
4 An optional company name []:

Dejamos estos en blanco, dando enter, tambin nos preguntara si deseamos firmar el certificado y si deseamos
hacer commit de los cambios, a ambas preguntas damos y

Sign the certificate? [y/n]y


1
2
1 out of 1 certificate requests certified, commit? [y/n]y

Al final sabremos que hicimos todo bien cuando muestra

Write out database with 1 new entries


1
2
Data Base Updated

Copiamos los archivos server.key, server.crt y ca.crt a /etc/openvpn

cp /etc/openvpn/easy-rsa/keys/server.crt /etc/openvpn
1
cp /etc/openvpn/easy-rsa/keys/server.key /etc/openvpn
2
3 cp /etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn

Si todo va bien, deberamos poder iniciar el servicio sin problema

service openvpn start


1

Revisamos el estatus

service openvpn status


1
En Debian debera mostrar algo as

service openvpn status


1 openvpn.service - OpenVPN service
2 Loaded: loaded (/lib/systemd/system/openvpn.service; enabled)
3
Active: active (exited) since Mon 2015-09-07 18:21:36 EDT; 35s ago
4
5 Process: 10906 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
6 Main PID: 10906 (code=exited, status=0/SUCCESS)
7 CGroup: /system.slice/openvpn.service

En ubuntu algo as

service openvpn status


1
2
* VPN 'server' is running

Generar Certificados y llaves para los Cliente

Cada cliente deberia tener su propio certificado y llave, principalmente por que OpenVPN no permite conexin
mltiple utilizando el mismo certificado.

Para crear los diferentes acceso basta con usar ./build-key NombreCliente reemplazando NombreCliente por el
nombre que le desemos dar a este cliente.

cd /etc/openvpn/easy-rsa
1
. ./vars
2
3 ./build-key NombreCliente

Nuevamente saldran los datos que hemos capturado en vars, con los datosextra.

Please enter the following 'extra' attributes


1 to be sent with your certificate request
2
3
A challenge password []:
4 An optional company name []:
Dejamos estos en blanco, dando enter, tambin nos preguntara si deseamos firmar el certificado y si deseamos
hacer commit de los cambios, a ambas preguntas damos y

Sign the certificate? [y/n]y


1
2
1 out of 1 certificate requests certified, commit? [y/n]y

Ahora copiamos el archivo de ejemplo de configuracin

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/easy-
1 rsa/keys/NombreCliente.ovpn

Hay que copiar los siguientes archivos hacia la maquina cliente

/etc/openvpn/ca.crt
1 /etc/openvpn/easy-rsa/keys/NombreCliente.crt
2
3
/etc/openvpn/easy-rsa/keys/NombreCliente.key
4 /etc/openvpn/easy-rsa/keys/Nombrecliente.ovpn

Editamos el archivo NombreCliente.ovpn y los datos relevantes para nuestra configuracin son
# Aqui pondremos la ip o hostname de nuestro servidor OpenVPN
1
remote hostname-de-nuestro-server 1194
2
3 # Si utilizamos linux como cliente, que se ejecute sin privilegios
4 user nobody
5
group nogroup
6
7
8 # La ruta de nuestro certificados, llave y ca
9 ca ca.crt
10 cert NombreCliente.crt
11
key NombreCliente.key

Windows

En Microsoft Windows estos archivos se deben copiar en C:\Program Files\OpenVPN\config y OpenVPN se


debe ejecutar con privilegios de administrador.

En android e IOS usar la aplicacin OpenVPN connect

También podría gustarte