Página 1 de 34
Creative Commons
ReconocimientoNo comercialCompartir bajo la misma licencia
3.0
Página 2 de 34
Índice de contenido
Seguridad SSL/TLS........................................................................................16
Ventajas y Desventajas de OpenVPN.................................................................16
Ventajas .........................................................................................................16
Desventajas ...................................................................................................18
Comparación entre OpenVPN e IPsec VPN.......................................................18
Instalando OpenVPN.........................................................................................19
Casos prácticos de construcción de VPNs............................................................20
Configuración de las direcciones IP de la VPN :...............................................20
Caso 1: Túnel simple sin seguridad...............................................................21
Caso 2: Túnel usando claves pre-compartida. Encriptación simétrica .........21
Caso 3: Túnel con full seguridad basada en TLS. Encriptación asimétrica
con SSL/TLS...................................................................................................22
Página 3 de 34
Construcción de los certificados y claves RSA..................................................22
Archivo de configuración del servidor TLS....................................................25
Archivo de configuración para el cliente TLS................................................26
Caso 4. Enrutamiento....................................................................................26
Caso 4. Firewall ................................................................................................28
Anexo A..................................................................................................................29
IPTABLES Básico...............................................................................................29
Ejercicios con IPTABLES...............................................................................31
Indica las reglas que debes añadir a IPTABLES en cada uno de los siguientes
casos..............................................................................................................32
Página 4 de 34
Redes Privadas Virtuales, VPN
Requisitos
Profesionales con experiencia previa en comunicaciones. Requiere conocimientos
básicos sobre GNU/Linux, TCP/IP y de Seguridad en Internet (firewall/iptables).
Introducción
VPN (Virtual Private Network) es una extensión de una red local y privada que
utiliza como medio de enlace una red publica como por ejemplo, Internet.
También es posible utilizar otras infraestructuras WAN (Redes de área amplia)
tales como Frame Relay, ATM (Modo de Transferencia Asíncrona), etc.
Este método permite enlazar dos o mas redes simulando una única red privada
permitiendo así la comunicación entre computadoras como si fuera punto a
punto.
Página 5 de 34
Diagrama lógico de una VPN
Página 6 de 34
estuvieran físicamente juntos.
• La necesidad de las redes de computación de cumplir altos estándares de
seguridad que aseguren la autenticidad, integridad y disponibilidad.
• Con el alto tráfico vehicular caraqueño y ciudades satélites con
dificultad de transporte, trabajar desde casa conectado vía segura, el
ahorro y productividad sería considerable.
Implementación de VPN
Supongamos que se tienen dos sitios de una organización conectados a Internet.
En ambos se contará con un equipo de conexión a la red de redes que cumplirá
Página 7 de 34
la función de ruteo hacia y desde Internet así como firewall para protegerse de
accesos no autorizados. El software VPN debe estar instalado en ese firewall o
algún dispositivo protegido por él. Una de los sitios será el “servidor” y será el
sitio que contiene la información y sistemas que queremos compartir, mientras
que al otro lo llamaremos “cliente”. El servidor será entonces configurado para
aceptar conexiones desde el cliente (y viceversa). Llegado este punto habremos
logrado tener dos sitios comunicados como en una red directa real pero aún no
es una VPN dado que falta implementar la “privacidad”, pues cualquier nodo
intermedio de Internet puede leer la información que viaja sin protección. Lo que
se debe hacer seguidamente es establecer mecanismos de encriptación que
mediante uso de claves aseguren que solo equipos o personas dueños de esas
claves puedan acceder a los datos enviados por la VPN. Todos los datos enviados
del punto A al B deberán ser encriptados antes de ser enviados y desencriptados
en el otro extremo para posteriormente ser entregados normalmente a su
destinatario final. Uno de los factores que diferencian a una implementación de
VPN de otra, son los mecanismos que utilicen para encriptar y distribuir claves a
todos los integrantes de dicha red.
Diagramas de conexión:
Hay varias posibilidades de conexiones VPN, esto será definido según los
requerimientos de la organización, por eso es aconsejable hacer un buen
levantamiento a fin de obtener datos como por ejemplo si lo que se desea enlazar
son dos o mas redes, o si solo se conectaran usuarios remotos.
Página 8 de 34
De Cliente a Servidor:
Un usuario remoto que solo necesita servicios o aplicaciones que corren en el
mismo servidor VPN. Caso típico para los administradores de Seguridad.
Página 9 de 34
De Red Interna a Red Interna:
Esta forma supone la posibilidad de unir dos intranets a través de dos
enrutadores, el servidor VPN en una de las intranets y el cliente VPN en la otra.
Aquí entran en juego el mantenimiento de tablas de ruteo y enmascaramiento.
Para el correcto armado de una VPN, es necesario cumplir con una serie de
elementos y conceptos que a continuación se detallan:
Página 10 de 34
LAN.
• Asegurarse que la VPN sea capaz de:
-Encapsular los datos
-Autentificar usuarios.
-Encriptar los datos.
-Asignar direcciones IP de manera estática y/o dinámica
Protocolos
Las soluciones de VPN pueden ser implementadas a diferentes niveles del
modelo OSI de red.
Página 11 de 34
Dado que esta solución no ofrece mecanismos de seguridad, para su uso
deberá ser combinada con otros mecanismos generalmente implementados en
capa 3 del modelo OSI.
• L2Sec: Layer 2 Security Protocol. Desarrollado para proveer una solución
con seguridad, utiliza para ellos SSL/TLS aunque impone una sobrecarga
bastante grande en la comunicación para lograrlo.
Página 12 de 34
Implementación OpenVPN
OpenVPN es una excelente nueva solución para VPN que implementa conexiones
de capa 2 o 3, usa los estándares de la industria SSL/TLS ( Secure Sockets
Layer / Transport Layer Security) para encriptar y combina todos las
características mencionadas anteriormente en las otras soluciones VPN. Su
principal desventaja por el momento es que hay muy pocos fabricantes de
hardware que lo integren en sus soluciones. De todos modos no hay que
preocuparse siempre que contemos con un Linux en el cual podremos
implementarlo sin ningún problema mediante software.
Seguridad en VPN
Para encriptar datos se usan Passwords o claves de encriptación.
OpenVPN tiene dos modos considerados seguros, uno basado en claves estáticas
pre-compartidas y otro en SSL/TLS usando certificados y claves RSA. RSA es una
empresa dedicada a la criptografía.
Cuando ambos lados usan la misma clave para encriptar y desencriptar los datos,
estamos usando el mecanismo conocido como “clave simétrica” y dicha clave
debe ser instalada en todas las máquinas que tomarán parte en la conexión VPN.
Si bien SSL/TLS + claves RSA es por lejos la opción más segura, las claves
estáticas cuentan con la ventaja de la simplicidad.
Veremos a continuación ese método y otros que aporta mayor seguridad y
facilidad de distribución.
Página 13 de 34
Encriptación simétrica y claves pre-compartidas
Página 14 de 34
Encriptación asimétrica con SSL/TLS
Ver aplicación en el Caso 3 discutido más adelante.
Página 15 de 34
Seguridad SSL/TLS
Las bibliotecas SSL/TLS son parte del software OpenSSL que vienen instaladas
en cualquier sistema moderno e implementan mecanismos de encriptación y
autenticación basadas en certificados. Los certificados generalmente son
emitidos por entidades de reconocida confiabilidad aunque también podemos
emitirlos nosotros mismos y usarlos en nuestra propia VPN. Con un certificado
firmado, el dueño del mismo es capaz de probar su identidad a todos aquellos
que confíen en la autoridad certificadora que lo emitió.
Ventajas
OpenVPN provee seguridad, estabilidad y comprobados mecanismos de
encriptación sin sufrir la complejidad de otras soluciones VPN como las de IPsec.
Además ofrece ventajas que van más allá que cualquier otra solución como son:
• Posibilidad de implementar dos modos básicos en capa 2 o capa 3 con lo
que se logran túneles capaces de enviar información en otros protocolos
no-IP como IPX o broadcast (NETBIOS).
Página 16 de 34
• Soporte para proxy. Funciona a través de proxy y puede ser configurado
para ejecutar como un servicio TCP o UDP y además como servidor
(simplemente esperando conexiones entrantes) o como cliente (iniciando
conexiones).
• Ningún problema con NAT. Tanto los clientes como el servidor pueden
estar en la red usando solamente IPs privadas.
Página 17 de 34
de simplicidad tanto en seguridad como en red.
Desventajas
No es IPsec-compatible siendo que justamente IPsec es el estándar actual para
soluciones VPN. Falta de masa crítica. Todavía existe poca gente que conoce
como usar OpenVPN. Aún no posee interfaz gráfica, aunque esto para algunos
pueda significar en realidad una “ventaja”. Al día de hoy solo se puede conectar
a otras computadores. Pero esto está cambiando, dado que ya existe compañías
desarrollando dispositivos con clientes OpenVPN integrados.
Comparación entre OpenVPN e IPsec VPN
IPsec OpenVPN
Estándar de la tecnología VPN Aun desconocida y no compatible con IPsec
Plataformas de hardware Solo en computadoras, pero en todos los
(dispositivos, aparatos) sistemas operativos disponibles
Tecnología conocida y probada Tecnología nueva y aun en crecimiento
Sin interfaces gráficas profesionales,
Muchas interfaces gráficas
aunque ya existen algunos proyectos
disponibles
prometedores
Modificación compleja del stack IP Tecnología sencilla
Necesidad de modificaciones Interfaces de red y paquetes
críticas al kernel estandarizados
Necesidad de permisos de Ejecuta en el espacio del usuario y puede
administrador ser chroot-ed
Diferentes implementaciones de
Tecnologías de encriptamiento
distintos proveedores pueden ser
estandarizadas
incompatibles entre si
Configuración compleja y tecnología Facilidad, buena estructuración, tecnología
compleja modular y facilidad de configuración
Curva de aprendizaje muy
Fácil de aprender
pronunciada
Necesidad de uso de muchos
Utiliza solo un puerto del firewall
puertos y protocolos en el firewall
Problemas con direcciones Trabaja con servidores de nombres
Página 18 de 34
dinámicos como DynDNS o No-IP con
dinámicas en ambas puntas
reconexiones rápidas y transparentes
Problemas de seguridad de las
SSL/TLS como estándar de criptografía
tecnologías IPsec
Problemas si ambos lados necesitan Ningún problema con NAT (ambos lados
NAT P pueden ser redes NATeadas)
Instalando OpenVPN
1. #aptitude install openvpn
3. Verificar que el controlador TUN/TAP (para las interfaces virtuales del túnel):
#locate if_tun.h
#modprobe tun
5. Habilitar IP forwarding:
6. Ajustes en el Firewall:
Si existen firewall entre los dos equipos, estos deben ser configurados para
reenviar paquetes UDP por el puerto 1194 en ambas direcciones.
Página 19 de 34
Casos prácticos de construcción de VPNs.
PC A:
PC B:
En PC A: ping 10.4.0.2
En PC B: ping 10.4.0.1
Página 20 de 34
Caso 2: Túnel usando claves pre-compartida. Encriptación simétrica
1. Cambiarse al directorio /etc/openvpn
2. Crear la clave en solo extremo NO en ambos. Por ejemplo en PC B.
Ejecutar
4. Ejecutar en el PC A:
5. Ejecutar en el PC B:
openvpn --remote 192.168.1.20 --dev tun1 --ifconfig 10.4.0.2 10.4.0.1 --verb 3
--secret key-estatica
Los certificados RSA son claves públicas que también tienen otros campos
Página 21 de 34
seguros insertados en ellos tales como el Nombre Común o la dirección email
del propietario del certificado. OpenVPN provee la posibilidad de escribir scripts
para probar estos campos antes de la autenticación.
Las claves privadas deben mantenerse protegidas siempre. Los archivos con los
certificados pueden publicarse libremente o compartirse.
cp -R /usr/share/doc/openvpn/examples/easy-rsa /etc/openvpn
cd /etc/openvpn/easy-rsa
./vars
./clean-all
./build-ca
Nos preguntarán una serie de datos que debemos recordar. Por ejemplo:
Página 22 de 34
Country Name (2 letter code) [VE]: VE
State or Province Name (full name) [DF]: DF
Locality Name (eg, city) [CCS]: CCS
Organization Name (eg, company) [trs]: trs
Organizational Unit Name (eg, section) []:trs
Common Name (eg, your name or your server's hostname) []:valiente01
Email Address [vcasti@cantv.net]: vcasti@cantv.net
ls -l /etc/openvpn/easy-rsa/keys
6. Ejecutar el script build-key-server para crear la llave del servidor TLS. Note
que este caso el script se ejecuta con argumento:el nombre de la clave que la
llamaremos servidor.
./build-key-server servidor
Nos preguntarán lo mismo del paso anterior. Conteste igual, salvo Common
Name que debe utilizar el argumento del script ejecutado. En nuestro caso sería
servidor .
cp /etc/openvpn/easy-rsa/keys/servidor.* /etc/openvpn
7. Con el próximo script a ejecutar vamos a crear los clientes de la vpn. Clientes
TLS. De manera que vamos crear, por ahora, nuestro primer cliente TLS:
cliente1 y su llave:cliente1.key y certificado: cliente1.crt.
Página 23 de 34
8. Ejecutar el script build-dh para establecer los parámetros Diffie Hellman
para el servidor TLS. El protocolo Diffie Hellman permite el intercambio
secreto de claves entre dos partes que no han tenido contacto previo.
./build-dh
cp /etc/openvpn/easy-rsa/keys/dh1024.pem /etc/openvpn/
nano /etc/openvpn/servidor.conf
port 1194
proto udp
dev tun1
persist-tun
ca ca.crt
cert servidor.crt
key servidor.key
dh dh1024.pem
Página 24 de 34
#clientes, el server es .1
server 10.4.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 5
Grabamos y salimos
cd /etc/openvpn
nano /etc/openvpn/cliente1.sh
#!/bin/sh
cd /etc/openvpn
openvpn --remote 192.168.1.10 --dev tun1 –tls-client --ca ca.crt --cert cliente1.crt --key \
cliente1.key --verb 5
#fin del script
Página 25 de 34
cd /etc/openvpn
./cliente1.sh
Caso 4. Enrutamiento.
Supongamos que tanto el PC A como el PC B son servidores de VPN en sus
respectivas sedes. Por tanto tienen 2 tarjetas de red: Una conectada a la red
privada y otra a Internet. Asumiendo que podemos hacer ping a través del túnel,
el próximo paso es rutear la subred real a través del túnel Nuestro objetivo es
conectar de manera segura ambas redes privadas.
PC A: 192.168.1.0/24
PC B: 192.168.5.0/24
Página 26 de 34
echo 1 > /proc/sys/net/ipv4/ip_forward
y habilitamos los paquetes de reenvío del dispositivo TUN a través del firewall:
Caso 4. Firewall
Adicionar las siguientes reglas en el firewall de las sedes :
Esta regla permitirá paquetes entrantes en el puerto UDP de Open VPN por
default 1194 .
La regla:
iptables -A INPUT -p udp --dport 1194 -j ACCEPT
podría ser adecuada si una de las parejas (el cliente) tiene IP dinámica, como es
Página 27 de 34
el caso de clientes con servicio ADSL.
Debemos agregar también una regla al firewall para que permita tráfico entrante
en el dispositivo TUN:
Página 28 de 34
Anexo A
IPTABLES Básico
Cuando un paquete u otra comunicación llega al kernel con iptables se sigue este camino.
Página 29 de 34
siguientes :
ACCEPTaceptaráelpaquete.
REJECT o DROP lo desecharán, la diferencia entre ellos
-j [action]
reside en que DROP descartará el paquete silenciosamente y
REJECT emitirá un paquete ICMP Port Unreachable,
indicando que está cerrado.
REDIRECT redirigirá el paquete a donde se indique en el
criterio del comando y por último...
LOG lo logeará para su posterior análisis.
Página 30 de 34
Ejercicios con IPTABLES.
1. ¿Con qué parámetro listamos todas las reglas introducidas en el
cortafuegos?
1. -L
2. -A
3. -P
4. -F
2. ¿Con qué parámetro añadimos una regla al cortafuegos?
1. -F
2. -P
3. -A
4. -s
3. Las reglas introducidas en el cortafuegos se ejecutan en orden. La primera
regla introducida es la primera que se ejecuta
1. Verdadero
2. Falso
4. Si queremos denegar la entrada a todos los paquetes en nuestro equipo,
ejecutaríamos:
1. iptables -A INPUT -j ACCEPT
2. iptables -A OUTPUT -j DROP
3. iptables -A INPUT -j DROP
4. iptables -j INPUT -A DROP
5. Si queremos denegar el acceso a nuestro servidor web, ¿cuál de las
siguientes reglas añadirías a IPTABLES?
1. iptables -A INPUT --dport 80 -j DROP
2. iptables -A OUTPUT --dport 80 -p TCP -j DROP
3. iptables -A INPUT -p TCP --dport 80 -j ACCEPT
6. Si queremos que no se pueda hacer ping a nuestro equipo, ¿cuál de las
siguientes reglas añadirías?
1. iptables -A INPUT -p ICMP -j DROP
2. iptables -A OUTPUT -p ICMP -j DROP
3. iptables -A INPUT -p ICMP -j ACCEPT
7. No deseamos que la entrada de paquetes que vengan de la dirección IP
60.40.82.23, ¿qué regla añadirías a IPTABLES?
1. iptables -A INPUT -s 60.40.82.23 -j DROP
2. iptables -A OUTPUT -s 60.40.82.23 -j DROP
3. iptables -A INPUT -d 60.40.82.23 -j DROP
8. Si queremos dejar pasar todos los paquetes que vengan de la dirección
192.168.1.23 por el puerto 80, ¿cuál de las siguientes reglas añadirías a
IPTABLES?
1. iptables -A INPUT --dport 80 -d 192.168.1.23 -j ACCEPT
Página 31 de 34
2. iptables -A INPUT -s 192.168.1.23 --dport 80 -j DROP
3. iptables -A INPUT -s 192.168.1.23 -p TCP --dport 80 -j ACCEPT
Indica las reglas que debes añadir a IPTABLES en cada uno de los
siguientes casos.
1. Cerrar conexiones entrantes desde eth0 y hacia el puerto (local) 80 (HTTP)
2. Enmascarar por las conexiones procedentes de la red 10.0.0.0 como si lo
hicieran desde la ip configurada en la interfaz eth0. (típica regla en un
router linux compartiendo la conexión eth0 con la red local conectada a
eth1)NOTA: Para que esta regla funcione correctamente, así como todas
las reglas FORWARD, PREROUTING, etc, es necesario activar el forwardeo
entre interfaces en el kernel :
#echo 1 > /proc/sys/net/ipv4/ip_forward
3. Redireccionar al puerto 3128 (proxy) todos los paquetes que entran por
eth1 y con destino puerto 80 (HTTP), de esta manera conseguimos un
proxy transparente
4. Detener todas las conexiones entrantes desde la interfaz eth0 menos la
conexiones al servicio ssh. La primera regla deja pasar los paquetes al 22 y
la segunda cierra todo lo demás. Sin embargo todas las conexiones que se
realicen desde la máquina (como navegar, consultar correo, etc) estarán
permitidas por que no son conexiones iniciadas desde "fuera"
5. Deshabilitar los paquetes ICMP entrantes para el firewall (regla ?) y la
red protegida (regla ?).
6. Lista todas las reglas o cadenas introducidas en el cortafuegos.
7. Borra todas las reglas introducidas en el cortafuegos.
8. Añade una regla para eliminar todos los paquetes de salida (es decir, que
desde tu equipo no pueda salir ningún paquete). Comprueba después que
no tienes acceso a Internet.
9. Elimina la regla introducida anteriormente y comprueba que de nuevo
tienes acceso a Internet.
Página 32 de 34
10. Añade una regla para no dejar pasar ningún paquete de entrada.
Comprueba en este caso que tampoco tienes conexión a Internet.
11. Borra la regla introducida en la pregunta 10.
12. Añade una regla para dejar pasar todos los paquetes que salgan de tu
equipo.
13. Tenemos un servidor web instalado y queremos permitir el acceso desde
el exterior. Añade la regla necesaria al cortafuegos.
14. Tenemos un servidor ftp funcionando y queremos permitir el acceso ftp
desde el exterior. Añade la regla necesaria en IPTABLES.
15. Si quieres denegar el acceso por debajo del puerto 1024. ¿Qué reglas
debes añadir a IPTABLES?
16. Rechaza todos los paquetes que vengan de la dirección 80.100.30.27
17. Borra todas las reglas introducidas y añade una para que no se pueda
hacer ping a nuestro equipo.
18. Añade una regla para dejar pasar todos los paquetes que procedan de
127.0.0.1 (loopback) y vayan dirigidos al equipo 80.90.1.150
19. No queremos permitir que el equipo con ip 80.90.100.110 se pueda
conectar a nuestro servidor web. Añadir una regla para denegar el acceso
al servidor web a ese equipo.
20. Añade una regla para permitir el acceso vía ssh (puerto 22) al equipo con
ip 90.80.70.60
21. Añade una regla cuya función sea hacer ping desde nuestra propia
máquina (protocolo icmp).
22. Añade una regla para que el equipo que tienes situado a tu derecha no
obtenga respuesta al hacer ping.
23. Añade una regla para impedir conectarse mediante FTP al equipo con IP
192.168.1.15
24. Crea un pequeño script que contemple los siguientes casos:
- La política por defecto es no dejar entrar ningún paquete al equipo.
- Se permite el acceso al servidor web desde el exterior.
Página 33 de 34
- Se permite acceder al servidor FTP
- Se permite acceder al servidor SSH desde el exterior.
Página 34 de 34