Tabla de Contenidos

212.5 OpenVPN

Pertenece a Topic 212: System Security

OpenVPN es un programa open source para la creación de túneles seguros (VPN, Virtual Private Network).

OpenVPN está disponible en Debian a través del paquete openvpn

A diferencia de las VPN habituales, no se basa en IPsec sino en SSL.

Proporciona servicios de:

Modos de funcionamiento

Creación de un túnel punto a punto

Gestión de la autenticación

Generamos el fichero de clave en el servidor:

openvpn --genkey --secret <archivo_clave.key>

Ejemplo:

# cat archivo_clave.key
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
ae11344ce37de44dcce059ecf9fa573f
a2694d5531bc7ed144a12a099c4ef8ce
(...)
1d37552cd4f29ff6b719588056a60777
579cc2aff71bf339f5293bf08f2ce4df
-----END OpenVPN Static key V1-----

Es necesario que el cliente tenga la clave creada en el servidor, así que se la pasamos:

scp archivo_clave.key root@cliente:/root

Archivos de configuración

Los archivos de configuración se encuentran por defecto en el directorio /etc/openvpn y suelen llamarse client.conf y server.conf:

remote <servidor>
dev tun
ifconfig <IP_local> <IP_remota>
secret <archivo_clave>
route <red_remota> <máscara>

Iniciamos el servicio (cliente / servidor):

/etc/init.d/openvpn start

Ejemplo completo:

# En el servidor
# vi /etc/openvpn/server.conf

dev tun
ifconfig 10.8.0.1 10.8.0.2
secret secret.key
# En el cliente
# vi /etc/openvpn/client.conf

remote vpn.example.com
dev tun
ifconfig 10.8.0.2 10.8.0.1
secret secret.key
route 192.168.1.0 255.255.255.0

Se puede comprobar el correcto funcionamiento con el comando ping.

OpenVPN por defecto, utiliza el puerto 1194/UDP.

Para obtener la información de routing y la lista de clientes actualmente conectados podemos ejecutar en el servidor el comando:

/etc/init.d/openvpn status

Ejemplo de una sesión:

servidor# ifconfig tun0
tun0: error fetching interface information: Device not found

servidor# /etc/init.d/openvpn start
Starting virtual private network daemon: client.

servidor# ifconfig tun0
tun0    Link encap:UNSPEC    HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
        inet adr:10.8.0.2 P-t-P:10.8.0.1 Mask:255.255.255.255
        UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
        RX packets:0 errors:0 dropped:0 overruns:0 frame:0
        TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100
        RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

servidor# ping 10.8.0.1
PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.
64 bytes from 10.8.0.1: icmp_seq=1 ttl=64 time=0.864 ms