15
OpenVPN Configuración VPN Road Warrior (Host to LAN) Fig. 1. VPN Road Warrior 1. Preparando el Servidor VPN (1) Se debe tener instalado los siguientes paquetes: pam, openssl, lzo, openvpn. # rpm -q pam # rpm -q openssl # rpm -q lzo Paquetes necesarios para la compilación del OpenVPN # rpm -q lzo-devel # rpm q openssl-devel # rpm q make # rpm q gcc

Configuración VPN - OpenVPN

  • Upload
    jeler

  • View
    243

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Configuración VPN - OpenVPN

OpenVPN Configuración VPN

Road Warrior (Host to LAN)

Fig. 1. VPN Road Warrior

1. Preparando el Servidor VPN

(1) Se debe tener instalado los siguientes paquetes: pam, openssl, lzo, openvpn. # rpm -q pam

# rpm -q openssl

# rpm -q lzo

Paquetes necesarios para la compilación del OpenVPN # rpm -q lzo-devel

# rpm –q openssl-devel

# rpm –q make

# rpm –q gcc

Page 2: Configuración VPN - OpenVPN

(2) De faltar algún paquete hay que instalarlo:

Agregamos el repositorio rpmforge rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-

1.el5.rf.i386.rpm

Instalamos el paquete:

# yum install lzo

(3) Descargamos el paquete fuente de Openvpn: http://openvpn.net/index.php/open-source/downloads.html (3.1) Copiamos el paquete openvpn-2.0.9.tar.gz al directorio /usr/local y luego se descomprime y desempaqueta:

# tar -zxvf openvpn-2.0.9.tar.gz

(3.2) Ingresamos a la carpeta openvpn-2.0.9

# cd /usr/local/openvpn-2.0.9/

(3.3) Empezamos el proceso de instalación de OpenVPN

# ./configure

# make

# make install

# make check

(4) Comprobamos el funcionamiento de Openvpn # openvpn --genkey --secret key

# openvpn --test-crypto --secret key

Fig. 2. Verificando el correcto funcionamiento de Openvpn

Los pasos 1, 2, 3 y 4 se deben repetir exactamente igual en el equipo del cliente Linux

(5) Revisemos las direcciones IP pública y privada:

# ifconfig

eth0 Link encap:Ethernet HWaddr 00:0F:3D:CB:7B:74

inet addr:172.17.67.75 Bcast:172.17.67.255 Mask:255.255.255.0

inet6 addr: fe80::20f:3dff:fecb:7b74/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

Page 3: Configuración VPN - OpenVPN

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. Configuración del Servidor VPN

(1) Creamos el directorio /etc/openvpn/

(2) Copiar el directorio /usr/local/openvpn-2.2.0/easy-rsa/ hacia /etc/openvpn/

(3) Trasladarse al directorio /etc/openvpn/easy-rsa/2.0/

(4) Definimos permisos de ejecución en los scripts.

(5) Inicializamos las variables para poder trabajar con los scripts para la generación de las variables.

(6) Inicializamos el directorio de las claves.

Fig. 3. Configurar CA

(7) Procedemos a generar el certificado CA. Se nos pedirá una serie de información sobre

nuestra red/empresa que debemos llenar lo más fielmente posible. # sh build-ca

La variable que debemos explícitamente llenar es: Common Name.

Page 4: Configuración VPN - OpenVPN

Fig. 4. Generación del certificado CA

(8) Generación del certificado y de la clave de encriptación para el servidor.

En éste paso, también se nos pedirá nuevamente información 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

Page 5: Configuración VPN - OpenVPN

Fig. 5. Generación del certificado de servidor.

(9) El paso anterior nos genero dos archivos en el directorio /etc/openvpn/easy-rsa/2.0/keys/ que se copiarán dentro del mismo servidor hacia /etc/openvpn.

Page 6: Configuración VPN - OpenVPN

Fig. 6.

(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 estén 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/2.0/ # cd /etc/openvpn/easy-rsa/2.0/

# 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 parámetro 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 parámetro.

(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 más, para cliente2 y cliente3, por favor, en Common Name debemos poner cliente2 ó cliente3 para cada caso.

Page 7: Configuración VPN - OpenVPN

Fig. 7. Generación del certificado del cliente

(12) El parámetro de Diffie-Hellman debemos generarlo: # sh build-dh

Page 8: Configuración VPN - OpenVPN

Fig. 8.

(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 están presentes en el siguiente directorio /etc/openvpn/easy-rsa/2.0/keys/

# cd /etc/openvpn/easy-rsa/2.0/keys/

# cp ca.crt ca.key dh1024.pem /etc/openvpn

# ls /etc/openvpn/

Fig. 9.

(14) Archivo de configuración 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 Raíz

ca ca.crt

# Certificado de Servidor

cert server.crt

# Llave privada del servidor

key server.key

# Llave Algoritmo DH

dh dh1024.pem

# Nombre de Red y máscara 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 conexión (Uno cada 10 segundos

#y cierre de conexión luego de 120 segundos de inactividad)

keepalive 10 120

# Modo de compresión

comp-lzo

user nobody

group nobody

Page 9: Configuración VPN - OpenVPN

#Cantidad de información para guardar en el log (de 0 a 11)

verb 4

#Archivo log

status /var/log/openvpn-status.log

Como podemos ver, hay nuevos parámetros, los más importantes son:

push de la ruta hacia la red local interna del servidor. Es la ruta estática permitirá que el road warrior vea a las máquinas 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) Archivos a copiar al equipo del cliente Hacia el directorio /etc/openvpn de cada cliente copiamos los siguientes archivos: ca.crt, clienteX.crt y clienteX.key Tenga en cuenta que X es un número que se corresponde con el cliente (para el cliente 2 sería: cliente2.crt y cliente2.key por ejemplo). Estos 3 archivos deben copiarse de forma segura hacia el cliente, quizá mediante scp o algún medio magnético seguro. No deben enviarse por mail puesto que contienen la clave (.key) de encriptación del cliente. Estos archivos están presentes en: /etc/openvpn/easy-rsa/2.0/keys del servidor. Este paso lo realizamos netamente desde el equipo del cliente:

# scp 172.17.67.75:/etc/openvpn/easy-rsa/2.0/keys/ca.crt /etc/openvpn

The authenticity of host '190.12.79.79 (190.12.79.79)' can't be established.

RSA key fingerprint is 8f:38:bb:2a:7b:74:02:71:6c:40:0f:b0:3d:a2:d1:b0.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '190.12.79.79' (RSA) to the list of known hosts.

Password:

ca.crt 100% 1265 1.2KB/s 00:00

# scp 172.17.67.75:/etc/openvpn/easy-rsa/2.0/keys/cliente1.crt /etc/openvpn

Password:

client1.crt 100% 3583 3.5KB/s 00:00

# scp 172.17.67.75:/etc/openvpn/easy-rsa/2.0/keys/cliente1.key /etc/openvpn

Password:

client1.key 100% 887 0.9KB/s 00:00

(2) Configuración en el equipo del cliente: En este caso, la configuración es en el directorio /etc/openvpn/ del equipo cliente. Crearemos el archivo /etc/openvpn/cliente.conf, así quedaría el archivo de configuración:

# Somos cliente

client

# Protocolo por defecto

dev tun

# Tipo de dispositivo virtual a utilizar (roadwarrior usa tun)

proto udp

Page 10: Configuración VPN - OpenVPN

# Dirección y puerto del servidor vpn

remote 172.17.67.75 1194

# Si hay problemas de resolución, intenta infinitamente

resolv-retry infinite

# No hace binding de un puerto local en particular (no sabemos cual 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 Raíz (el que copiamos)

ca ca.crt

# Certificado cliente (el que copiamos)

cert cliente1.crt

# Llave cliente (el que copiamos)

key cliente1.key

# Modo de compresión

comp-lzo

#Cantidad de información para guardar en el log (de 0 a 11)

verb 4

#Archivo log

status /var/log/vpn.log

Las configuraciones más interesantes son:

client: indica que algunas configuraciones las tomará del servidor.

nobind: que no actúe 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 # cd /etc/openvpn/

# openvpn server.conf &

Page 11: Configuración VPN - OpenVPN

Fig. 10.

(2) Revisemos la nueva dirección IP de la tarjeta tun0 del servidor VPN # ifconfig tun0

Fig. 11.

(3) Comprobar la tabla de rutas:

Page 12: Configuración VPN - OpenVPN

Fig. 12.

(4) Ahora iniciamos el servicio openvpn en el equipo del cliente VPN # cd /etc/openvpn/

# openvpn cliente.conf &

Fig. 13.

(5) Revisemos la nueva dirección IP de la tarjeta tun0 del cliente VPN # ifconfig tun0

Page 13: Configuración VPN - OpenVPN

Fig. 14.

(6) Comprobar la tabla de rutas:

Fig. 15.

(7) Del lado del equipo cliente realizo un ping a las direcciones IP del servidor VPN

# ping -c3 192.168.1.250

# ping -c3 192.168.3.1

Page 14: Configuración VPN - OpenVPN

Fig. 16.

4. Accediendo a la red VPN

(1) En el servidor VPN activamos el reenvió de paquetes y el registro de paquetes: # echo 1 > /proc/sys/net/ipv4/ip_forward

# iptables -A FORWARD -j LOG

(2) Iniciamos el Servidor Web en el equipo 192.168.2.2 # /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.

Page 15: Configuración VPN - OpenVPN

Fig. 17

(4) En el servidor VPN podemos monitorear

Fig. 18.