KELA Presentacion Costa Rica 2024 - evento Protégeles
OpenVPN como solución de Redes Privadas Virtuales Corporativas
1. Encuentro Nacional
de Linux 2012
Seguridad Corporativa
Mediante redes Privadas Virtuales con
OpenVPN
Filein Rommel León Méndez
Blog: http://blog.oaxrom.com
2. ¿ Qué es una Red Privada
Virtual ?
●
Una Red Privada Virtual es una red segura y encriptada que se
establece entre 2 puntos remotos dentro de otra red LAN, WAN,
GSM/GPRS, Internet, etc.
3. ¿ Para que sirve una VPN ?
●
Conectarse de forma remota y segura a una aplicación
corporativa, por ejemplo aplicación web, base de datos, etc., sin
tener que exponer el puerto de la aplicación directamente en
internet y tener latente un ataque de crackers que quieran obtener
acceso.
●
Extensiones VoIP remotas: Podemos conectarnos a un servidor de
telefonía usando el protocolo SIP o IAX2 desde un softphone
todo esto a través de una VPN por lo que evitamos los bloqueos
de puertos de telefonía IP en redes 3G, así como exponemos
tener nuestro conmutador abierto ante posibles ataques y
obtención de acceso de extraños que nos generen llamadas a
Cuba, Afganistan, Irán, Liberia, etc.
4. ¿ Para que sirve una VPN ?
●
Permitir a computadoras remotas conectarse desde cualquier acceso
de internet a los servicios de la intranet sin exponer passwords en
internet públicos ante la presencia de posibles sniffers.
●
Conectar 2 redes remotas a través de una VPN cómo si
estuvieran en la misma red local para compartición de recursos y
comunicación entre las computadoras de las 2 redes.
●
Acceso a computadoras remotas a toda la red local y servicios
internos que estén detrás del firewall y servidor VPN.
5. ¿ Qué es OpenVPN ?
● OpenVPN es una solución Open Source
multiplataforma de conectividad empresarial
para redes virtuales, que permite establecer
VPNs de forma segura, encriptada, fácil,
rápida y con múltiples características para uso
diversos en implementación de redes virtuales
corporativas basadas en SSL(Secure Socket
Layer ).
● OpenVPN comenzó a desarrollarse a partir del
2001 y se puede obtener desde
http://www.openvpn.org
6. Características de OpenVPN
●
Conexiones capa 2 o 3
●
Estándares SSL/TSL
●
Multiplataforma (Linux & Unix, Windows, MacOS X, Android,
iOS, Windows Mobile.
●
Encriptación por claves estáticas, certificados & claves RSA
●
Funcionamiento en modo Road Warrior (PC to LAN)
●
Funcionamiento en modo Bridge (LAN to LAN)
●
Transporte de protocolos no-IP como IPX o broadcast.
●
Asignación de IP Virtuales estática o dinámica
7. Ventajas de OpenVPN
●
Solo se establece un puerto de red TCP o UDP Público, por lo
que no se expone todos los servicios internos de la red
empresarial para acceso remoto.
●
Conexiones VPN remotas son establecidas a través de casi
cualquier firewall sin necesidad de abrir puertos en el cliente
remoto.
●
Permite la integración de reglas del firewall sobre una interfaz
tun0, tun1, etc.
●
Todos los conceptos de reglas, reenvío, NAT, se pueden
establecer sobre un Tunel VPN.
●
Soporte transparente para Ips dinámicas.
8. Ventajas de OpenVPN
●
Ningún problema de NAT, incluso en una misma red local todos
puedes estar trabajando con una ip virtual.
●
Configuración sencilla tanto para el servidor como para el cliente.
●
Protección de usuarios remotos para evitar conexiones entre si.
●
Deployment de configuración y llaves, rápida y sencilla.
●
¡Es software Libre!
9. Desventajas de OpenVPN
●
Incompatibilidad con Ipsec, que es el protocolo estándar de la
industria para soluciones VPN.
●
Falta de Masa Crítica
●
Existen apenas contadas soluciones de hardware que soporten
OpenVPN como solución VPN.
10. Modos de funcionamiento de
OpenVPN
●
Modo Road Warrior: Servidor Multipunto – Interfaz Tun
Permite conectar múltiples clientes remotos al servidor VPN en
modo punto-multipunto.
Computadoras se conectan desde internet al servidor de internet y
tienen acceso a la red local detrás del servidor VPN.
Clientes VPN por configuración pueden o no comunicarse entre sí
Servidor VPN
11. Modos de funcionamiento de
OpenVPN
●
Modo Bridge: LAN To LAN - Interfaz TAP
Permite conectar clientes remotos que pueden distribuir la conexión a
otros equipos de la red remota permitiendo establecer redes virtuales
LAN to LAN
Un LAN to LAN es como llevar un cable de red de nuestra LAN a
través de internet por un tunel seguro, conectarlo a un “Router VPN
switch” y de ahí conectar otros equipos a este switch para “cascadear”
la red virtual.
12. ¿ Como instalamos OpenVPN ?
●
Debian & Ubuntu
– sudo apt-get install openvpn
●
Red Hat, Cent OS & Fedora
– yum install opevpn
●
Código fuente
●
Router WRT54GL con firmware DDWRT con soporte Open VPN
13. ¿ Que necesitamos para
implementar OpenVPN ?
●
Certificados de Seguridad del Servidor VPN
●
Llave Pública & Privada del Servidor
●
Archivo de configuración del servidor
●
Llave del cliente remoto.
●
Configuración del cliente remoto
●
Tener instalado el software de OpenVPN en el cliente remoto.
14. Preparemos los ingredientes
●
Instalamos OpenVPN la distribución de Linux es al gusto
– sudo apt-get install openvpn
●
Copiamos el ejemplo para crear los certificados de seguridad del
servidor para la versión de OpenVPN 2.X :
sudo cp /usr/share/doc/openvpn/examples/easy-rsa/2.0
/etc/openvpn
cd /etc/openvpn/2.0
cp openssl-1.0.0.cnf openssl.cnf
Editamos los datos para crear el certificado de seguridad
sudo nano vars
Editamos los valores de KEY_*
15. Creando los certificados & llaves
del servidor
●
Nos validamos como root
– su
●
Preparamos las variables de entorno
. ./vars
sh clean all
●
Creamos el certificado CA:
– sh build-ca
●
Creamos las Llaves del Servidor:
– sh build-key-server OAXROM-SERVER
16. Creamos las llaves de los clientes
●
Podemos crear una llave por cada cliente VPN y definir en el
archivo de configuración del servidor que cada cliente VPN
tendrá su propia llave o permitir que todos los clientes VPN usen
la misma llave
– sudo sh buil-key CLIENTE1
– sudo sh buil-key CLIENTE2
●
Creamos los parámetros Diffie Hellman para el servidor
– sudo sh build-dh
El protocolo criptográfico Diffie-Hellman, es un protocolo de establecimiento de claves entre partes
que no han tenido contacto previo, utilizando un canal inseguro, y de manera anónima (no
autenticada)
17. Archivos Resultantes
●
Nos crea los archivos generados en /etc/openvpn/2.0/keys
– ca.crt : certificado de seguridad
– ca.key: llave del certificado de seguridad
– OAXROM-SERVER.crt: Certificado del servidor
– OAXROM-SERVER.key: Llave privada del
servidor
– dh1024.pem: Archivo Diffie Hellman
– CLIENTE1.key: llave p ú blica del cliente
– CLIENTE1.crt: Certificado del cliente
18. Archivo de Configuración del
Servidor Modo RoadWarrior
sudo nano /etc/openvpn/servidor.cnf
port 1190
proto udp
dev tun
ca "/etc/openvpn/keys/ca.crt"
cert "/etc/openvpn/keys/OAXROM-SERVER.crt"
key "/etc/openvpn/keys/OAXROM-SERVER.key"
dh "/etc/openvpn/keys/dh1024.pem"
server 192.168.26.0 255.255.255.0
ifconfig-pool-persist ipp.txt
#push "dhcp-option DNS 208.67.222.222"
#push "dhcp-option WINS 192.168.26.1"
19. Archivo de Configuración del
Servidor Modo RoadWarrior
client-to-client
#push "route 192.168.100.0 255.255.255.0"
duplicate-cn
comp-lzo
max-clients 60
persist-key
persist-tun
verb 3
status openvpn-status.log
keepalive 10 120
suppress-timestamps
20. Ejecutamos el servidor
sudo openvpn –config /etc/openvpn/servidor.cnf
Al iniciar si la configuración y las llaves son correctas, al final de
ejecutar el servidor veríamos algo como los siguiente:
IFCONFIG POOL: base=192.168.26.4 size=62, ipv6=0
Initialization Sequence Completed
Para verificar hacemos un ifconfig y deberíamos ver la interfaz del
tunel virtual con la dirección IP 192.168.26.1 asignada
tun1
Link encap:UNSPEC direcci ó nHW 00-00-00-00-00-00-00-00-00-
00-00-00-00-00-00-00
Direc. inet:192.168.26.1 P-t-P:192.168.26.2
M á sc:255.255.255.255
21. Archivo de Configuración del
Cliente de OpenVPN
client
proto udp
dev tun
remote SERVIDORIPOPENVPN.homeip.net 1190
resolv-retry infinite
nobind
persist-key
persist-tun
ca "/home/cloudvoox/clientevpn/ca.crt"
cert "/home/cloudvoox/clientevpn/CLIENTE1.crt"
key "/home/cloudvoox/clientevpn/CLIENTE1.key"
comp-lzo
verb 3
22. Ejecución del cliente VPN
sudo openvpn –config /home/user/clientevpn/cliente.ovpn
Si la ejecución fue correcta al final de ejecutarlo veríamos Initialization
Sequence Completed
Previamente veríamos la IP que nos asignó el servidor VPN y las rutas
de red que mandó crear el servidor en el cliente para el ruteo de
segmentos de red.
Thu Oct 25 01:17:32 2012 /sbin/ifconfig tun0 192.168.26.58 pointopoint
192.168.26.57 mtu 1500
Thu Oct 25 01:17:32 2012 /sbin/route add -net 192.168.100.0 netmask
255.255.255.0 gw 192.168.26.57
Thu Oct 25 01:17:32 2012 /sbin/route add -net 192.168.26.0 netmask
255.255.255.0 gw 192.168.26.57
23. OpenVPN modo Bridge Lan 2 Lan
En la configuración del cliente y servidor solo se cambian las interfaces de
Tun a Tap.
Se crean reglas de firewall para el ruteo entre el segmento real de la
red interna y el segmento virtual de la VPN