33
Curso de VPN en GNU/Linux (20 horas) Teoría, Guía de prácticas y ejercicios Página 1 de 33

Manual VPN

  • Upload
    jagui1

  • View
    42

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Manual VPN

Curso de VPN en GNU/Linux (20 horas)

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

Página 1 de 33

Page 2: Manual VPN

Índice de contenido

Redes Privadas Virtuales, VPN...............................................................................3

Objetivos del curso..............................................................................................3

Requisitos.........................................................................................................3

Introducción........................................................................................................3

Acceso mediante Internet y VPNs.......................................................................5

Usos de las VPN's................................................................................................5

Implementación de VPN......................................................................................5

Diagramas de conexión:......................................................................................6

De Cliente a Servidor:......................................................................................7

De Cliente a Red Interna:................................................................................7

De Red Interna a Red Interna:.........................................................................8

Requerimientos para el armado de una VPN..................................................8

Protocolos............................................................................................................9

Seguridad en VPN.............................................................................................11

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

Seguridad SSL/TLS........................................................................................14

Ventajas y Desventajas de OpenVPN.................................................................14

Ventajas .........................................................................................................14

Desventajas ...................................................................................................16

Comparación entre OpenVPN e IPsec VPN.......................................................16

Instalando OpenVPN.........................................................................................17

Casos prácticos de construcción de VPNs............................................................18

Configuración de las direcciones IP de la VPN :...............................................18

Caso 1: Túnel simple sin seguridad...............................................................18

Caso 2: Túnel usando claves pre-compartida. Encriptación simétrica .........19

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

Página 2 de 33

Page 3: Manual VPN

con SSL/TLS...................................................................................................19

Construcción de los certificados y claves RSA..................................................19

Archivo de configuración del servidor TLS....................................................22

Archivo de configuración para el cliente TLS................................................23

Caso 4. Enrutamiento....................................................................................24

Caso 4. Firewall ................................................................................................25

Anexo A..................................................................................................................27

IPTABLES Básico...............................................................................................27

Ejercicios con IPTABLES...............................................................................29

Indica las reglas que debes añadir a IPTABLES en cada uno de los siguientes

casos..............................................................................................................30

Página 3 de 33

Page 4: Manual VPN

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

Página 4 de 33

Page 5: Manual VPN

del túnel.

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.

Página 5 de 33

Page 6: Manual VPN

• Muchas organizaciones tienen varias sucursales en diferentes ubicaciones

quienes necesitan intercambiar información sin ninguna demora, como si

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.

Página 6 de 33

Page 7: Manual VPN

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á

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 7 de 33

Page 8: Manual VPN

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 8 de 33

Page 9: Manual VPN

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

Página 9 de 33

Page 10: Manual VPN

de la red interna.

• Cliente VPN: este puede ser un usuario remoto o un enrutador de otra

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.

Página 10 de 33

Page 11: Manual VPN

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

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 11 de 33

Page 12: Manual VPN

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 12 de 33

Page 13: Manual VPN

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 13 de 33

Page 14: Manual VPN

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.

Página 14 de 33

Page 15: Manual VPN

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.

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.

Página 15 de 33

Page 16: Manual VPN

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

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

Página 16 de 33

Page 17: Manual VPN

• 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

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 VPNIPsec OpenVPN

Estándar de la tecnología VPN Aun desconocida y no compatible con IPsec

Plataformas de hardware (dispositivos, aparatos)

Solo en computadoras, pero en todos los sistemas operativos disponibles

Tecnología conocida y probada Tecnología nueva y aun en crecimiento

Muchas interfaces gráficas disponibles

Sin interfaces gráficas profesionales, aunque ya existen algunos proyectos prometedores

Modificación compleja del stack IP Tecnología sencilla

Necesidad de modificaciones críticas al kernel

Interfaces de red y paquetes estandarizados

Necesidad de permisos de administrador

Ejecuta en el espacio del usuario y puede ser chroot-ed

Diferentes implementaciones de distintos proveedores pueden ser incompatibles entre si

Tecnologías de encriptamiento estandarizadas

Página 17 de 33

Page 18: Manual VPN

Configuración compleja y tecnología compleja

Facilidad, buena estructuración, tecnología modular y facilidad de configuración

Curva de aprendizaje muy pronunciada

Fácil de aprender

Necesidad de uso de muchos puertos y protocolos en el firewall

Utiliza solo un puerto del firewall

Problemas con direcciones dinámicas en ambas puntas

Trabaja con servidores de nombres dinámicos como DynDNS o No-IP con reconexiones rápidas y transparentes

Problemas de seguridad de las tecnologías IPsec

SSL/TLS como estándar de criptografía

Problemas si ambos lados necesitan NATP

Ningún problema con NAT (ambos lados 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.

Página 18 de 33

Page 19: Manual VPN

Para permitir paquetes entrantes al dispositivo TUN:

iptables -A INPUT -i tun+ -j ACCEPT

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

Página 19 de 33

Page 20: Manual VPN

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

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

Página 20 de 33

Page 21: Manual VPN

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

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:

Página 21 de 33

Page 22: Manual VPN

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

Country Name (2 letter code) [VE]: VEState or Province Name (full name) [DF]: DFLocality Name (eg, city) [CCS]: CCSOrganization Name (eg, company) [trs]: trsOrganizational Unit Name (eg, section) []:trs Common Name (eg, your name or your server's hostname) []:valiente01 Email Address [[email protected]]: [email protected] 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

Página 22 de 33

Page 23: Manual VPN

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

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/openvpn10.2 Ejecutar (cambie la ip por el valor apropiado): scp [email protected]:/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

Página 23 de 33

Page 24: Manual VPN

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

Página 24 de 33

Page 25: Manual VPN

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

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.

Página 25 de 33

Page 26: Manual VPN

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:

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.

Página 26 de 33

Page 27: Manual VPN

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

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 27 de 33

Page 28: Manual VPN

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 :

-t [tabla]

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

-[AIRDLFZNXP] [regla]

Hay 4 opciones básicas con las que se puede jugar en esta apartado del comando. Estas opciones básicas son las

Página 28 de 33

Page 29: Manual VPN

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.

[criterio]

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

-j [action]

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 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 29 de 33

Page 30: Manual VPN

Ejercicios con IPTABLES.1. ¿Con qué parámetro listamos todas las reglas introducidas en el

cortafuegos?1. -L2. -A3. -P4. -F

2. ¿Con qué parámetro añadimos una regla al cortafuegos?1. -F2. -P3. -A4. -s

3. Las reglas introducidas en el cortafuegos se ejecutan en orden. La primera regla introducida es la primera que se ejecuta

1. Verdadero2. Falso

4. Si queremos denegar la entrada a todos los paquetes en nuestro equipo, ejecutaríamos:

1. iptables -A INPUT -j ACCEPT2. iptables -A OUTPUT -j DROP3. iptables -A INPUT -j DROP4. 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 DROP2. iptables -A OUTPUT --dport 80 -p TCP -j DROP3. 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 DROP2. iptables -A OUTPUT -p ICMP -j DROP3. 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 DROP2. iptables -A OUTPUT -s 60.40.82.23 -j DROP3. 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 30 de 33

Page 31: Manual VPN

2. iptables -A INPUT -s 192.168.1.23 --dport 80 -j DROP3. 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 31 de 33

Page 32: Manual VPN

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.

Página 32 de 33

Page 33: Manual VPN

- Se permite el acceso al servidor web desde el exterior.

- Se permite acceder al servidor FTP

- Se permite acceder al servidor SSH desde el exterior.

Página 33 de 33