Está en la página 1de 11

LABORATORIO

Instalacin y configuracin de OpenVPN


En este laboratorio el alumno aprender a:

Instalar OpenVPN.
Configurar una VPN en modo Road Warrior.

1. Configuracin de Open VPN en Firewall Bastin CentOS 6.8


Esquema de la red:
LAN: 192.168.2.0/24
WAN: 192.168.23.0/24
LAN OpenVPN: 192.168.3.0/24

192.168.3.0/
24

Preparando el Servidor VPN


(1) Descargamos e instalamos el paquete para luego agregar el repositorio EPEL:
# yum y install epel-release
(2) Instalamos OpenVPN:
# yum y install openvpn easy-rsa
(3) Comprobamos el funcionamiento de Openvpn
# openvpn --genkey --secret key
# openvpn --test-crypto --secret key
Los pasos 1 y 2 se deben repetir exactamente igual si el equipo cliente es Linux.
(4) Revisemos las direcciones IP pblica y privada:
# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0F:3D:CB:7B:74
inet addr:192.168.23.x Bcast:192.168.132.255 Mask:255.255.255.0
inet6 addr: fe80::20f:3dff:fecb:7b74/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2764 errors:0 dropped:0 overruns:0 frame:0
TX packets:682 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000

RX bytes:1362998 (1.2 Mb) TX bytes:100959 (98.5 Kb)


Interrupt:185 Base address:0xb800
eth1 Link encap:Ethernet HWaddr 00:15:E9:B0:22:7C
inet addr:192.168.2.1 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: fe80::215:e9ff:feb0:227c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:330 errors:0 dropped:0 overruns:0 frame:0
TX packets:20 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:33440 (32.6 Kb) TX bytes:1822 (1.7 Kb)
Interrupt:169 Base address:0xb400
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:322 errors:0 dropped:0 overruns:0 frame:0
TX packets:322 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:23316 (22.7 Kb) TX bytes:23316 (22.7 Kb)
1.1. Configuracin del Servidor VPN
(1) Creamos el directorio /etc/openvpn/easy-rsa/keys
# mkdir p /etc/openvpn/easy-rsa/keys
(2) Copiar el directorio /usr/share/easy-rsa/2.0/* hacia /etc/openvpn/easy-rsa/
# cp a /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
Configuracin de Autoridad de Certificacin
(3) Trasladarse al directorio /etc/openvpn/easy-rsa/
# cd /etc/openvpn/easy-rsa/
(4) Inicializamos las variables para poder trabajar con los scripts para la generacin de las
variables.
# source ./vars
(5) Inicializamos el directorio de las claves.
# sh clean-all

(7) Procedemos a generar el certificado CA. Se nos pedir una serie de informaciones sobre
nuestra red/empresa que debemos llenar lo ms fielmente posible.
# sh build-ca

La variable que debemos explcitamente llenar es: Common Name.

Crear certificados del servidor


(8) Generacin del certificado y de la clave de encriptacin para el servidor.
En ste paso, tambin se nos pedir nuevamente informacin sobre el certificado propio
del servidor. Ingresar en Common Name un nombre diferente al anteriormente escogido.
En este ejercicio: server
# sh build-key-server server

(9) El paso anterior nos gener dos archivos en el directorio /etc/openvpn/easy-rsa/2.0/keys/


que se copiarn dentro del mismo servidor hacia /etc/openvpn.
El archivo ca.key debe ser protegido.
Crear certificados del cliente
(10) Generando certificados y claves privadas para los clientes.
Cada cliente debe tener su propio certificado y clave de seguridad, para cada cliente
que tengamos deberemos repetir el siguiente paso. Los archivos obtenidos debemos
copiarlos hacia el directorio /etc/openvpn/ de los equipos cliente.

En el caso de que nuestros clientes estn en Windows, debemos copiarlos hacia el


directorio c:\program files\openvpn\
Para generar el certificado y claves privadas para el cliente, ejecutamos en nuestro
servidor, dentro del directorio /etc/openvpn/easy-rsa/
# cd /etc/openvpn/easy-rsa/
# sh build-key cliente1

En el ejemplo anterior generamos la clave y el certificado para un cliente llamado cliente1.

Debemos hacer notar que al ejecutar el programa sh build-key, le pasamos como


parmetro el nombre del cliente (cliente1 en el ejemplo anterior) el cual debe ser diferente
para cada cliente. En el commoName ponemos el nombre del cliente (cliente1 en ste
ejemplo) tal y como le pasamos de parmetro.
(11) Se pueden generar tantas claves como sean necesarias, para cada cliente:
# sh build-key cliente2
# sh build-key cliente3
Esto nos generar dos claves y certificados ms, para cliente2 y cliente3, por favor, en
Common Name debemos poner cliente2 cliente3 para cada caso.
Crear tipo de criptografa para las conexiones
(12) El parmetro de Diffie-Hellman debemos generarlo:
# sh build-dh

(13) Archivos a copiar al servidor VPN:


Hacia el directorio /etc/openvpn del servidor copiamos los siguientes archivos: ca.crt,
ca.key y dh1024.pem estos archivos estn presentes en el siguiente directorio
/etc/openvpn/easy-rsa/keys/
# cd /etc/openvpn/easy-rsa/keys/
# cp ca.crt dh2048.pem server.crt server.key /etc/openvpn
# ls /etc/openvpn/
Configuracin del servidor VPN
(14) Archivo de configuracin del servidor.

Creamos el archivo /etc/openvpn/server.conf, debe quedar como se muestra:


#Puerto por defecto
port 1194
#Protocolo por defecto
proto udp
# Tipo de dispositivo virtual a utilizar (roadwarrior usa tun)
dev tun
# Le dice que no reinicie la interfaz de red
persist-tun
# Le dice que no lea la llave ante un reinicio
persist-key
# Certificado Raz
ca ca.crt
# Certificado de Servidor
cert server.crt
# Llave privada del servidor
key server.key
# Llave Algoritmo DH
dh dh2048.pem
# Nombre de Red y mscara para la red VPN (El servidor por defecto es
el .1)
server 192.168.3.0 255.255.255.0
#Archivo donde guardar un cache con las direcciones IP de clientes
ifconfig-pool-persist ipp.txt
#Ruta para que los clientes alcancen la red local del server (2.0/24)
push "route 192.168.2.0 255.255.255.0"
#Mensajes para evitar cierre de conexin (Uno cada 10 segundos
#y cierre de conexin luego de 120 segundos de inactividad)
keepalive 10 120
# Modo de compresin
comp-lzo
user nobody
group nobody
#Cantidad de informacin para guardar en el log (de 0 a 11)
verb 3
#Archivo log
status /var/log/openvpn-status.log
log-append /var/log/openvpn.log
Como podemos ver, hay nuevos parmetros, los ms importantes son:
push de la ruta hacia la red local interna del servidor. Es la ruta esttica permitir
que el road warrior vea a las mquinas de la red interna.
server: Indica el rango de direcciones que se asignar a los clientes que se
conecten, deben ser direcciones no similares a las de la red local.
2. Preparando el cliente VPN
(1) Descargar e instalar software cliente en equipo Windows
Descargar el software cliente openvpn-install-2.3.6-l003-x86_64.exe desde:
https://openvpn.net/index.html.php/open-source/downloads.html
Instalar el software.
(2) Archivos a copiar al equipo del cliente
Descargar el WinSCP desde:
http://winscp.net/eng/download.php

Instalar el software y ejecutarlo:

Hacia el directorio C:\Archivos de programa\OpenVPN/config/ de cada cliente copiamos


los siguientes archivos: ca.crt, server.crt, clienteX.crt y clienteX.key
Tenga en cuenta que X es un nmero que se corresponde con el cliente (para el cliente 2
sera: cliente2.crt y cliente2.key por ejemplo).
Estos 4 archivos deben copiarse de forma segura hacia el cliente, quiz mediante scp o
algn medio magntico seguro. No deben enviarse por mail puesto que contienen la clave
(.key) de encriptacin del cliente. Estos archivos estn presentes en: /etc/openvpn/easyrsa/keys del servidor.
Este paso lo realizamos netamente desde el equipo del cliente:

Configuracin del cliente VPN


(4) Configuracin en el equipo del cliente:

En este caso, la configuracin es en el directorio C:\Archivos de


programa\OpenVPN/config/ del equipo cliente. Crearemos el archivo C:\Archivos de
programa\OpenVPN/config/client.ovpn, as quedara el archivo de configuracin:
# Configuracin cliente
client
# Protocolo por defecto
proto udp
# Tipo de dispositivo virtual a utilizar (roadwarrior usa tun)
dev tun
# Direccin y puerto del servidor vpn
remote 192.168.23.x 1194
# Si hay problemas de resolucin, intenta infinitamente
resolv-retry infinite
# No hace binding de un puerto local en particular (no sabemos cul
est libre)
nobind
#Las dos siguientes opciones no van en windows
user nobody
group nobody
# Le dice que no lea la llave ante un reinicio
persist-key
# Le dice que no reinicie la interfaz de red
persist-tun
# Certificado Raz (el que copiamos)
ca ca.crt
# Certificado cliente (el que copiamos)
cert cliente1.crt
# Llave cliente (el que copiamos)
key cliente1.key
# Modo de compresin
comp-lzo
#Cantidad de informacin para guardar en el log (de 0 a 11)
verb 3
Las configuraciones ms interesantes son:
client: indica que algunas configuraciones las tomar del servidor.
nobind: que no acte como servidor, que solamente vaya como cliente.
Recordar que cert y key deben ser nicas para cada cliente
3. Activando la red VPN
(1) Iniciamos el servicio openvpn en el lado del servidor
# service openvpn start
(2) Revisemos la nueva direccin IP de la tarjeta tun0 del servidor VPN
# ifconfig tun0
(3) Comprobar la tabla de rutas:
# route -n
(4) Ahora iniciamos el servicio openvpn en el equipo del cliente VPN
Ejecutamos OpenVPN GUI.

(5) Revisemos la nueva direccin IP de la tarjeta tun0 del cliente VPN


C:\> ipconfig /all
(6) Comprobar la tabla de rutas:
C:\> route print
(7) Del lado del equipo cliente realizo un ping a las direcciones IP del servidor VPN
# ping -c3 192.168.23.x
# ping -c3 192.168.2.2
4. Accediendo a la red VPN
(1) En el servidor VPN activamos el reenvi de paquetes y el registro de paquetes:
Configurando el Reenvi IP, editar el archivo /etc/sysctl.conf:
net.ipv4.ip_forward = 1
Activando los cambios:
# sysctl -p
Enmascarando la red LAN:
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE
# iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 1194
-j ACCEPT
# iptables -A INPUT -i tun+ -j ACCEPT
# iptables -A OUTPUT -o tun+ -j ACCEPT
# iptables -A FORWARD -j LOG
# service iptables save
# service iptables restart
# service openvpn start
# chkconfig openvpn on
(2) Iniciamos el Servidor Web en el equipo 192.168.2.2
# /etc/init.d/iptables stop
# /etc/init.d/httpd start
(3) En la barra de direcciones del navegador web en el equipo cliente ingreso la IP del Servidor
Web de la red interna.

(4) En el servidor VPN podemos monitorear


# cat /var/log/messages | grep 192.168.23.y