You are on page 1of 34

Curso de VPN en GNU/Linux (20 horas)

Teoría, Guía de prácticas y ejercicios

Página 1 de 34
Creative Commons
Reconocimiento­No comercial­Compartir bajo la misma licencia 
3.0

Usted es libre de:

• copiar, distribuir y reproducir públicamente la obra

• hacer obras derivadas

Bajo las siguientes condiciones:

• Reconocimiento. Debe reconocer los créditos de la obra de la


manera especificada por el autor o el licenciante (pero no de una manera
que sugiera que tiene su apoyo o apoyan el uso que hace de su obra).

• No comercial. No puede utilizar esta obra para fines comerciales.

• Compartir bajo la misma licencia. Si altera o transforma esta obra,


o genera una obra derivada, sólo puede distribuir la obra generada bajo
una licencia idéntica a ésta.
• Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de
la licencia de esta obra.
• Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del
titular de los derechos de autor
• Nada en esta licencia menoscaba o restringe los derechos morales del
autor.

Los derechos derivados de usos legítimos u otras limitaciones


reconocidas por ley no se ven afectados por lo anterior.
Esto es un resumen fácilmente legible del texto legal de versión original en
Idioma Inglés (la licencia completa)
http://creativecommons.org/licenses/by-nc-sa/3.0/ec/legalcode

Página 2 de 34
Índice de contenido

Redes Privadas Virtuales, VPN...............................................................................5


Objetivos del curso..............................................................................................5
Requisitos.........................................................................................................5
Introducción........................................................................................................5
Acceso mediante Internet y VPNs.......................................................................7
Usos de las VPN's................................................................................................7
Implementación de VPN......................................................................................7
Diagramas de conexión:......................................................................................8
De Cliente a Servidor:......................................................................................9
De Cliente a Red Interna:................................................................................9
De Red Interna a Red Interna:.......................................................................10
Requerimientos para el armado de una VPN................................................10
Protocolos..........................................................................................................11
Seguridad en VPN.............................................................................................13

Encriptación asimétrica con SSL/TLS...........................................................14

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

Objetivos del curso


Configurar accesos seguros desde Internet a nuestra red interna por medio de
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.

También un usuario remoto se puede conectar individualmente a una LAN


utilizando una conexión VPN, y de esta manera utilizar aplicaciones, enviar
datos, etc. de manera segura.

Las Redes Privadas Virtuales utilizan tecnología de túnel (tunneling) para la


transmisión de datos mediante un proceso de encapsulación y en su defecto de
encriptación, esto es importante a la hora de diferenciar Redes Privadas
Virtuales y Redes Privadas, ya que esta ultima utiliza líneas telefónicas dedicadas
para formar la red. Mas adelante se explicará en profundidad el funcionamiento
del túnel.

Página 5 de 34
Diagrama lógico de una VPN

La necesidad de mejorar la interconexión e intercambio de información entre


sedes de diferentes instituciones y empresas ha conducido a soluciones mas
eficientes y económicas a las tradicionales como, por ejemplo, telnet, correo, fax,
etc.
Existen factores que hacen necesaria la implementación de soluciones más
sofisticadas de conectividad entre las oficinas de las organizaciones a lo largo del
mundo.
Dichos factores son:
• La aceleración de los procesos de negocios y su consecuente aumento en la
necesidad de intercambio flexible y rápido de información.
• Muchas organizaciones tienen varias sucursales en diferentes ubicaciones
quienes necesitan intercambiar información sin ninguna demora, como si

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.

Acceso mediante Internet y VPNs


Con la llegada de Internet y la baja de costos en conectividad se desarrollaron
nuevas tecnologías. Surgió entonces la idea de utilizar a Internet como medio de
comunicación entre los diferentes sitios de la organización. Surge así la idea de
las VPN's que son “Virtuales” y “Privadas”. Virtuales porque no son redes
directas reales entre partes, sino solo conexiones virtuales provistas mediante
software sobre la red Internet. Además son privadas porque solo la gente
debidamente autorizada puede leer los datos transferidos por este tipo de red
logrando la seguridad mediante la utilización de modernos mecanismos de
criptografía.

Usos de las VPN's


Las VPN's se usan generalmente para:
• Conexión entre diversos puntos de una organización a través de Internet
• Conexiones de trabajadores domésticos o de campo con IP's dinámicas
• Soluciones extranet para clientes u organizaciones asociadas con los cuales
se necesita intercambiar cierta información en forma privada pero no se les
debe dar acceso al resto de la red interna.

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.

Las posibilidades son:

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.

De Cliente a Red Interna:


Un usuario remoto que utilizará servicios o aplicaciones que se encuentran en
uno o mas equipos dentro de la red interna. Caso típico para conexiones remotas
desde casa, es decir, los tele trabajadores.

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.

Requerimientos para el armado de una VPN

Para el correcto armado de una VPN, es necesario cumplir con una serie de
elementos y conceptos que a continuación se detallan:

• Tener una conexión a Internet: ya sea por conexión IP dedicada, ADSL o


dial-up.

• Servidor VPN: básicamente es una pc conectada a Internet esperando por


conexiones de usuarios VPN y si estos cumplen con el proceso de
autenticación, el servidor aceptara la conexión y dará acceso a los recursos
de la red interna.
• Cliente VPN: este puede ser un usuario remoto o un enrutador de otra

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.

Implementaciones de capa 2 - Enlace


El encapsulamiento a este nivel ofrece ciertas ventajas ya que permite
transferencias sobre protocolos no-IP, como por ejemplo IPX4 de Netware
Systems. Teóricamente, las tecnologías implementadas en capa 2 pueden
tunelizar cualquier tipo de paquetes y en la mayoría de los casos lo que se hace
es establecer un dispositivo virtual PPP5 con el cual se establece la conexión con
el otro lado del túnel.
Algunos ejemplos de estas tecnologías:
• PPTP: Point to Point Tunneling Protocol. Desarrollado por Microsoft, es una
extensión de PPP.
Su principal desventaja es que solo puede establecer un túnel por vez entre
pares. Poca seguridad.
• L2F: Layer 2 Forwarding. Desarrollado por la empresa Cisco
principalmente, ofrece mejores posibilidades que PPTP principalmente en
el uso de conexiones simultáneas.
• L2TP: Layer 2 Tunneling Protocol. Usado por Cisco y otros fabricantes, se
ha convertido en estándar de la industria y combina las ventajas de PPTP y
L2F.

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.

Implementaciones de capa 3 - Red


IPsec es la tecnología más aceptada en este punto y fue desarrollada como un
estándar de seguridad de Internet en capa 3. IPsec se puede utilizar para
encapsular cualquier tráfico de capa 3 pero no el tráfico de capas inferiores, por
lo que no se podrá utilizar para protocolos no-IP como IPX o mensajes de
broadcast. Su principal ventaja es que puede ser usado prácticamente en
cualquier plataforma existiendo una gran variedad de soluciones tanto de
software como de hardware.
Existen dos métodos principales usados por IPsec:
• Modo Tunnel. Todos los paquetes IP son encapsulados en un nuevo paquete
y enviados a través del túnel siendo desempaquetados en el otro extremo y
posteriormente dirigidos a su destinatario final. En este modo, se protegen
las direcciones IP de emisor y receptor así como el resto de los metadatos
de los paquetes.
• Modo Transporte. Solo la carga útil (payload) de la sección de datos es
encriptada y encapsulada. La sobrecarga entonces, es sensiblemente
menor que en el caso anterior, pero se exponen los metadatos a posibles
atacantes que podrán ver quien se está comunicando con quien.

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

Ver aplicación en el Caso 2 discutido más adelante.

Cualquiera que posea la clave podrá desencriptar el tráfico, por lo que si un


atacante la obtuviese comprometería el tráfico completo de la organización ya
que tomaría parte como un integrante más de la VPN.
Es por ello que mecanismos como IPsec cambian las claves cada cierto período
de tiempo asociando a las mismas ciertos período de tiempo de validez llamados
“tiempo de vida” o “lifetime”. Una buena combinación de tiempo de vida y largo
de la clave asegurarán que un atacante no pueda desencriptar la clave a tiempo,
haciendo que cuando finalmente la obtenga (porque lo hará), ya no le sirva por
estar fuera de vigencia. IPSec utiliza su propio protocolo para intercambiar
claves llamado IKE9 que ha sido desarrollado desde mediados de los noventa y
aún no ha sido terminado.

Página 14 de 34
Encriptación asimétrica con SSL/TLS
Ver aplicación en el Caso 3 discutido más adelante.

SSL/TLS usa una de las mejores tecnologías de encriptación para asegurar la


identidad de los integrantes de la VPN.
Cada integrante tiene dos claves, una pública y otra privada.
La pública es distribuida y usada por cualquiera para encriptar los datos que
serán enviados a la contraparte quien conoce la clave privada que es la única
que sirve para desencriptar los datos. El par de clave pública/privada es
generado a partir de algoritmos matemáticos que aseguran que solo con la clave
privada es posible leer los datos originales. El día que alguien encuentre algún
defecto a ese algoritmo, todos aquellos conectados a Internet estarán
comprometidos en forma instantánea.

Es de destacar que la clave privada debe permanecer secreta mientras que la


clave pública debe ser intercambiada para que nos puedan enviar mensajes.

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 y Desventajas de OpenVPN

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).

• Protección de los usuarios remotos. Una vez que OpenVPN ha establecido


un túnel el firewall de la organización protegerá el equipo remoto aún
cuando no es un equipo de la red local. Por otra parte, solo un puerto de
red podrá ser abierto hacia la red local por el remoto asegurando
protección en ambos sentidos.

• Conexiones OpenVPN pueden ser realizadas a través de casi cualquier


firewall. Si se posee acceso a Internet y se puede acceder a sitios HTTPS,
entonces un túnel OpenVPN debería funcionar sin ningún problema.

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).

• Solo un puerto en el firewall debe ser abierto para permitir conexiones,


dado que desde OpenVPN 2.0 se permiten múltiples conexiones en el
mismo puerto TCP o UDP.

• Las interfaces virtuales (tun0, tun1, etc.) permiten la implementación de


reglas de firewall muy específicas.

• Todas las conceptos de reglas, restricciones, reenvío y NAT pueden ser


usados en túneles OpenVPN.
• Alta flexibilidad y posibilidades de extensión mediante scripts. OpenVPN
ofrece numerosos puntos para ejecutar scripts individuales durante su
arranque.

• Soporte transparente para IPs dinámicas. Se elimina la necesidad de usar


direcciones IP estáticas en ambos lados del túnel.

• Ningún problema con NAT. Tanto los clientes como el servidor pueden
estar en la red usando solamente IPs privadas.

• Instalación sencilla en cualquier plataforma. Tanto la instalación como su


uso son increíblemente simples.
• Diseño modular. Se basa en un excelente diseño modular con un alto grado

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

2. #aptitude install openssh

3. Verificar que el controlador TUN/TAP (para las interfaces virtuales del túnel):

#locate if_tun.h

esto debe mostrar un archivo como /usr/include/linux/if_tun.h

#modprobe tun

4. verificar el archivo /etc/modules, debe aparecer una línea con tun

5. Habilitar IP forwarding:

echo 1 > /proc/sys/net/ipv4/ip_forward

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.

Para permitir paquetes entrantes al dispositivo TUN:

iptables -A INPUT -i tun+ -j ACCEPT

Página 19 de 34
Casos prácticos de construcción de VPNs.

Configuración de las direcciones IP de la VPN :


En estas practicas estaremos utilizando y trabajando en pareja. De manera que
tendremos:
PC A ( 192.168.1.20)
PC B (192.168.5.10)
Sustituya las IP por valores apropiados según el escenario ó por nombres. La IP
pueden ser IP públicas si la conexión es a través de Internet.
IP de los extremos del TUNEL: Deben ser IP privadas y que no estén en uso en
ambos extremos. Podemos utilizar por ejemplo las siguientes (puede seleccionar
otra)
PC A: 10.4.0.1
PC B: 10.4.0.2

Caso 1: Túnel simple sin seguridad

PC A:

openvpn --remote 192.168.5.10 --dev tun1 --ifconfig 10.4.0.1 10.4.0.2


--verb 3

PC B:

openvpn --remote 192.168.1.20 --dev tun1 --ifconfig 10.4.0.2 10.4.0.1


--verb 3

Verificamos con el comando ping que el túnel está trabajando

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

openvpn --genkey --secret key-estatica

Este comando generará un archivo de clave aleatoria llamada key-estatica


(en formato ascii ).

3. Copia key-estatica desde PC B al PC A a través de ssh, esto es, utiliza el


comando scp . (preguntar al instructor si no recuerda el comando)

4. Ejecutar en el PC A:

openvpn --remote 192.168.5.10 --dev tun1 --ifconfig 10.4.0.1 10.4.0.2 --verb 3


--secret key-estatica

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

Verificamos con el comando ping que el túnel está trabajando


En PC A: ping 10.4.0.2
En PC B: ping 10.4.0.1

Caso 3: Túnel con full seguridad basada en TLS. Encriptación asimétrica


con SSL/TLS
En este caso es necesario definir quien será el servidor TLS y quien el cliente
TLS.
PC A: Cliente TLS
PC B: Servidor TLS (Máquina gestora de claves)

Construcción de los certificados y claves RSA

Se van a construir certificados y claves RSA utilizando el comando openssl,


incluido en la distribución de la biblioteca OpenSSL.

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.

1. Seleccionamos el Servidor PC B para que sea el gestor de claves.

2. Cuando se instaló OpenVPN, se creó automáticamente el directorio easy-rsa.


Ese directorio contiene scripts que facilitan la creación de los certificados y las
llaves. Lo vamos a copiar en /etc/openvpn:

cp -R /usr/share/doc/openvpn/examples/easy-rsa /etc/openvpn

3. Nos cambiamos a /etc/openvpn/easy-key y ejecutamos el scrip vars para


iniciar las variables de entorno que vamos a utilizar:

cd /etc/openvpn/easy-rsa

./vars

4. Ejecutar el script clean-all para limpiar el directorio donde podrían existir


certificados y llaves viejas:

./clean-all

5. Ejecutar el script build-ca para crear una Autoridad de Certificación maestra,


un par certificado/clave privada, válida por 10 años.

./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

chequear los certificados creados:

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 .

Aquí se crearán servidor.crt y servidor.key, los cuales copiaremos en


/etc/openvpn:

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.

./build-key cliente1 y contestar igual que en el paso 6, salvo el Common


name que colocamos: clientes

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

9. Terminamos de copiar el resto de los archivos necesarios en el servidor:


ca.crt, ca.key y dh1024.pem

cp /etc/openvpn/easy-rsa/keys/dh1024.pem /etc/openvpn/

Repetir para los otros dos archivos.

10. Copiar cliente1.crt, cliente1.key y ca.crt al PC A desde el gestor PC B


a través de scp , aunque actualmente solo los archivos .key deben
considerarse no-públicos.

10.1 En el PC cliente (PC A) cambiarse a /etc/openvpn


10.2 Ejecutar (cambie la ip por el valor apropiado):
scp root@192.168.1.10:/etc/openvpn/easy-rsa/keys/cliente1.crt/ .

Repetir 10.2 para los archivos cliente1.key y ca.crt

Archivo de configuración del servidor TLS


11. Vamos a crear ahora el archivo de configuración con el cual arrancaremos el
servidor. Lo llamaremos servidor.conf.

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

#Direcciones que se asignaran a los

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

12. Arrancamos el servidor TLS (PC B):

cd /etc/openvpn

openvpn --config servidor.conf

Si todo fue Ok. Deberíamos ver al final de la consola algo así:

Mon Jul 14 13:35:30 2008 us=329016 Initialization Sequence Completed

Archivo de configuración para el cliente TLS


13. Vamos a crear ahora el archivo de configuración con el cual arrancaremos
los clientes. Lo llamaremos cliente1.sh.

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

chmod 700 /etc/openvpn/cliente1.sh

14. Arrancamos el cliente TLS (PC A):

Página 25 de 34
cd /etc/openvpn

./cliente1.sh

Si todo fue Ok. Deberíamos ver al final de la consola algo así:

Mon Jul 14 13:35:30 2008 us=329016 Initialization Sequence Completed

15. Verificamos con el comando ping que el túnel está trabajando


En PC A: ping 10.4.0.2 y En PC B: ping 10.4.0.1
# iptables -A INPUT -i tun0 -j ACCEPT
# iptables -A FORWARD -s 192.168.3.0/24 -d 10.255.255.0/24 -j ACCEPT
# iptables -A FORWARD -d 192.168.3.0/24 -s 10.255.255.0/24 -j ACCEPT

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

Ejecutamos en ambos equipos para habilitar el bit de reenvío:

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:

iptables -A FORWARD -i tun+ -j ACCEPT

En el PC A creamos la ruta estática para acceder a la red privada remota en PC


B. Utilizaremos IPROUTE2:

ip route add 192.168.5.0/24 via 10.4.0.2

En el PC B creamos la ruta estática para acceder a la red privada remota en PC


A:

ip route add 192.168.1.0/24 via 10.4.0.1

Ahora cualquier máquina en el segmento privado del PC A (192.168.1.0/24)


puede conectarse a cualquier máquina en el segmento privado del PC B
(192.168.5.0/24) a través del túnel seguro VPN. Lo mismo desde la sede B a la
sede A.

Caso 4. Firewall 
Adicionar las siguientes reglas en el firewall de las sedes :

iptables -A INPUT -p udp -s 1.2.3.4 --dport 1194 -j ACCEPT

Donde 1.2.3.4 representan la IP pública de conexión a Internet de los equipos


firewall respectivos.

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:

iptables -A INPUT -i tun+ -j ACCEPT

Igualmente, agregar una regla para permitir paquetes entrantes desde


dispositivos TUN ser reenviados a otros hosts de la red local:

iptables -A FORWARD -i tun+ -j ACCEPT

Página 28 de 34
Anexo A

IPTABLES Básico

Este es el camino que seguiría un paquete en el kernel:

Cuando un paquete u otra comunicación llega al kernel con iptables se sigue este camino.

La estructura de un comando iptables es la siguiente :

iptables -t [tabla] -[AIRDLFZNXP] [regla] [criterio] -j [acción]

Vamos a ver que es cada cosa :

Esta parte del comando especifica cual es la tabla en la que


queremos añadir la regla. Existen 3 tipos de tablas válidas :
nat, filter y mangle, siendo filter la tabla por defecto si se
omite esta parte del comando. Nat se refiere a las conexiones
que serán modificadas por el firewall, como por ejemplo,
-t [tabla] enmascarar conexiones, realizar redirecciones de puertos,
etc. Filter es la tabla donde se añaden las relacionadas con
el filtrado. Mangle también modifica paquetes pero, a
diferencia de Nat, es mucho mas potente. Con Mangle
podemos modificar cualquier aspecto del paquete (flags, TTL,
etc).
- Hay 4 opciones básicas con las que se puede jugar en esta
[AIRDLFZNXP apartado del comando. Estas opciones básicas son las
] [regla]

Página 29 de 34
siguientes :

• A es para añadir (Append) una regla. Reglas válidas


son INPUT, FORWARD y OUTPUT.
• L es para listar las reglas.
• F es para borrar todas las reglas o en el caso de INPUT,
FORWARD o OUTPUT sean dados como argumento se
borraran las reglas asociadas solo a esa clase.
• P establece la política por defecto del firewall. Por
defecto es aceptar todas las conexiones.
Aquí es donde se especificarán las características del tipo de
paquete que casará con esta regla. Para establecer reglas
sencillas (reglas stateless), podemos operar con las
siguientes opciones : -s (ip/red fuente), -d (ip/red destino),
--sport (puerto fuente), --dport (puerto destino), y -p
(protocolo). Un ejemplo de comando de la sintaxis de un
[criterio]
comando iptables sencillo podría ser este (la parte en que se
define el criterio de la regla está en negrita) :

iptables -A FORWARD -p [protocolo] -s [ip/red fuente]


--sport [puerto fuente] -d [ip/red destino] --dport
[puerto destino] -j DROP
Aquí establecemos que es lo que hay que hacer con el
paquete. Las posibles opciones son : ACCEPT, REJECT, DROP,
REDIRECT, LOG (existen más, pero estas son las básicas).

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

You might also like