You are on page 1of 33

Curso de VPN en GNU/Linux (20 horas)

Teora, Gua de prcticas y ejercicios

Pgina 1 de 33

ndice de contenido Redes Privadas Virtuales, VPN...............................................................................3 Objetivos del curso..............................................................................................3 Requisitos.........................................................................................................3 Introduccin........................................................................................................3 Acceso mediante Internet y VPNs.......................................................................5 Usos de las VPN's................................................................................................5 Implementacin de VPN......................................................................................5 Diagramas de conexin:......................................................................................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 Encriptacin asimtrica con SSL/TLS...........................................................13 Seguridad SSL/TLS........................................................................................14 Ventajas y Desventajas de OpenVPN.................................................................14 Ventajas .........................................................................................................14 Desventajas ...................................................................................................16 Comparacin entre OpenVPN e IPsec VPN.......................................................16 Instalando OpenVPN.........................................................................................17 Casos prcticos de construccin de VPNs............................................................18 Configuracin de las direcciones IP de la VPN :...............................................18 Caso 1: Tnel simple sin seguridad...............................................................18 Caso 2: Tnel usando claves pre-compartida. Encriptacin simtrica .........19 Caso 3: Tnel con full seguridad basada en TLS. Encriptacin asimtrica
Pgina 2 de 33

con SSL/TLS...................................................................................................19 Construccin de los certificados y claves RSA..................................................19 Archivo de configuracin del servidor TLS....................................................22 Archivo de configuracin para el cliente TLS................................................23 Caso 4. Enrutamiento....................................................................................24 Caso 4. Firewall ................................................................................................25 Anexo A..................................................................................................................27 IPTABLES Bsico...............................................................................................27 Ejercicios con IPTABLES...............................................................................29 Indica las reglas que debes aadir a IPTABLES en cada uno de los siguientes casos..............................................................................................................30

Pgina 3 de 33

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 bsicos sobre GNU/Linux, TCP/IP y de Seguridad en Internet (firewall/iptables). Introduccin VPN (Virtual Private Network) es una extensin de una red local y privada que utiliza como medio de enlace una red publica como por ejemplo, Internet. Tambin es posible utilizar otras infraestructuras WAN (Redes de rea amplia) tales como Frame Relay, ATM (Modo de Transferencia Asncrona), etc.

Este mtodo permite enlazar dos o mas redes simulando una nica red privada permitiendo as la comunicacin entre computadoras como si fuera punto a punto.

Tambin un usuario remoto se puede conectar individualmente a una LAN utilizando una conexin VPN, y de esta manera utilizar aplicaciones, enviar datos, etc. de manera segura.

Las Redes Privadas Virtuales utilizan tecnologa de tnel (tunneling) para la transmisin de datos mediante un proceso de encapsulacin y en su defecto de encriptacin, esto es importante a la hora de diferenciar Redes Privadas Virtuales y Redes Privadas, ya que esta ultima utiliza lneas telefnicas dedicadas para formar la red. Mas adelante se explicar en profundidad el funcionamiento
Pgina 4 de 33

del tnel.

Diagrama lgico de una VPN La necesidad de mejorar la interconexin e intercambio de informacin entre sedes de diferentes instituciones y empresas ha conducido a soluciones mas eficientes y econmicas a las tradicionales como, por ejemplo, telnet, correo, fax, etc. Existen factores que hacen necesaria la implementacin de soluciones ms sofisticadas de conectividad entre las oficinas de las organizaciones a lo largo del mundo. Dichos factores son:

La aceleracin de los procesos de negocios y su consecuente aumento en la necesidad de intercambio flexible y rpido de informacin.

Pgina 5 de 33

Muchas organizaciones tienen varias sucursales en diferentes ubicaciones quienes necesitan intercambiar informacin sin ninguna demora, como si estuvieran fsicamente juntos.

La necesidad de las redes de computacin de cumplir altos estndares de seguridad que aseguren la autenticidad, integridad y disponibilidad.

Con el alto trfico vehicular caraqueo y ciudades satlites con dificultad de transporte, trabajar desde casa conectado va segura, el ahorro y productividad sera considerable.

Acceso mediante Internet y VPNs Con la llegada de Internet y la baja de costos en conectividad se desarrollaron nuevas tecnologas. Surgi entonces la idea de utilizar a Internet como medio de comunicacin entre los diferentes sitios de la organizacin. 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. Adems son privadas porque solo la gente debidamente autorizada puede leer los datos transferidos por este tipo de red logrando la seguridad mediante la utilizacin de modernos mecanismos de criptografa. Usos de las VPN's Las VPN's se usan generalmente para:

Conexin entre diversos puntos de una organizacin a travs de Internet Conexiones de trabajadores domsticos o de campo con IP's dinmicas Soluciones extranet para clientes u organizaciones asociadas con los cuales se necesita intercambiar cierta informacin en forma privada pero no se les debe dar acceso al resto de la red interna.

Pgina 6 de 33

Implementacin de VPN Supongamos que se tienen dos sitios de una organizacin conectados a Internet. En ambos se contar con un equipo de conexin a la red de redes que cumplir la funcin 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 algn dispositivo protegido por l. Una de los sitios ser el servidor y ser el sitio que contiene la informacin 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 an no es una VPN dado que falta implementar la privacidad, pues cualquier nodo intermedio de Internet puede leer la informacin que viaja sin proteccin. Lo que se debe hacer seguidamente es establecer mecanismos de encriptacin que mediante uso de claves aseguren que solo equipos o personas dueos de esas claves puedan acceder a los datos enviados por la VPN. Todos los datos enviados del punto A al B debern 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 implementacin de VPN de otra, son los mecanismos que utilicen para encriptar y distribuir claves a todos los integrantes de dicha red.

Diagramas de conexin: Hay varias posibilidades de conexiones VPN, esto ser definido segn los requerimientos de la organizacin, 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:

Pgina 7 de 33

De Cliente a Servidor: Un usuario remoto que solo necesita servicios o aplicaciones que corren en el mismo servidor VPN. Caso tpico 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 tpico para conexiones remotas desde casa, es decir, los tele trabajadores.

Pgina 8 de 33

De Red Interna a Red Interna: Esta forma supone la posibilidad de unir dos intranets a travs 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 continuacin se detallan:

Tener una conexin a Internet: ya sea por conexin IP dedicada, ADSL o dial-up.

Servidor VPN: bsicamente es una pc conectada a Internet esperando por conexiones de usuarios VPN y si estos cumplen con el proceso de autenticacin, el servidor aceptara la conexin y dar acceso a los recursos
Pgina 9 de 33

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 esttica y/o dinmica

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. Tericamente, las tecnologas implementadas en capa 2 pueden tunelizar cualquier tipo de paquetes y en la mayora de los casos lo que se hace es establecer un dispositivo virtual PPP5 con el cual se establece la conexin con el otro lado del tnel. Algunos ejemplos de estas tecnologas:

PPTP: Point to Point Tunneling Protocol. Desarrollado por Microsoft, es una extensin de PPP. Su principal desventaja es que solo puede establecer un tnel por vez entre pares. Poca seguridad.

L2F:

Layer

Forwarding.

Desarrollado

por

la

empresa

Cisco

principalmente, ofrece mejores posibilidades que PPTP principalmente en el uso de conexiones simultneas.
Pgina 10 de 33

L2TP: Layer 2 Tunneling Protocol. Usado por Cisco y otros fabricantes, se ha convertido en estndar de la industria y combina las ventajas de PPTP y L2F. Dado que esta solucin 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 solucin con seguridad, utiliza para ellos SSL/TLS aunque impone una sobrecarga bastante grande en la comunicacin para lograrlo.

Implementaciones de capa 3 - Red IPsec es la tecnologa ms aceptada en este punto y fue desarrollada como un estndar de seguridad de Internet en capa 3. IPsec se puede utilizar para encapsular cualquier trfico de capa 3 pero no el trfico 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 prcticamente en cualquier plataforma existiendo una gran variedad de soluciones tanto de software como de hardware. Existen dos mtodos principales usados por IPsec:

Modo Tunnel. Todos los paquetes IP son encapsulados en un nuevo paquete y enviados a travs del tnel 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 seccin 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 podrn ver quien se est comunicando con quien.
Pgina 11 de 33

Implementacin OpenVPN OpenVPN es una excelente nueva solucin para VPN que implementa conexiones de capa 2 o 3, usa los estndares de la industria SSL/TLS ( Secure Sockets Layer / Transport Layer Security) para encriptar y combina todos las caractersticas 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 ningn problema mediante software.

Seguridad en VPN Para encriptar datos se usan Passwords o claves de encriptacin. OpenVPN tiene dos modos considerados seguros, uno basado en claves estticas pre-compartidas y otro en SSL/TLS usando certificados y claves RSA. RSA es una empresa dedicada a la criptografa.

Cuando ambos lados usan la misma clave para encriptar y desencriptar los datos, estamos usando el mecanismo conocido como clave simtrica y dicha clave debe ser instalada en todas las mquinas que tomarn parte en la conexin VPN. Si bien SSL/TLS + claves RSA es por lejos la opcin ms segura, las claves estticas cuentan con la ventaja de la simplicidad. Veremos a continuacin ese mtodo y otros que aporta mayor seguridad y facilidad de distribucin.

Pgina 12 de 33

Encriptacin simtrica y claves pre-compartidas Ver aplicacin en el Caso 2 discutido ms adelante.

Cualquiera que posea la clave podr desencriptar el trfico, por lo que si un atacante la obtuviese comprometera el trfico completo de la organizacin ya que tomara parte como un integrante ms de la VPN. Es por ello que mecanismos como IPsec cambian las claves cada cierto perodo de tiempo asociando a las mismas ciertos perodo de tiempo de validez llamados tiempo de vida o lifetime. Una buena combinacin de tiempo de vida y largo de la clave asegurarn 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 an no ha sido terminado.

Pgina 13 de 33

Encriptacin asimtrica con SSL/TLS Ver aplicacin en el Caso 3 discutido ms adelante. SSL/TLS usa una de las mejores tecnologas de encriptacin para asegurar la identidad de los integrantes de la VPN. Cada integrante tiene dos claves, una pblica y otra privada. La pblica es distribuida y usada por cualquiera para encriptar los datos que sern enviados a la contraparte quien conoce la clave privada que es la nica que sirve para desencriptar los datos. El par de clave pblica/privada es generado a partir de algoritmos matemticos que aseguran que solo con la clave privada es posible leer los datos originales. El da que alguien encuentre algn defecto a ese algoritmo, todos aquellos conectados a Internet estarn comprometidos en forma instantnea.

Pgina 14 de 33

Es de destacar que la clave privada debe permanecer secreta mientras que la clave pblica 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 encriptacin y autenticacin basadas en certificados. Los certificados generalmente son emitidos por entidades de reconocida confiabilidad aunque tambin podemos emitirlos nosotros mismos y usarlos en nuestra propia VPN. Con un certificado firmado, el dueo del mismo es capaz de probar su identidad a todos aquellos que confen en la autoridad certificadora que lo emiti.

Ventajas y Desventajas de OpenVPN Ventajas OpenVPN provee seguridad, estabilidad y comprobados mecanismos de

encriptacin sin sufrir la complejidad de otras soluciones VPN como las de IPsec. Adems ofrece ventajas que van ms all que cualquier otra solucin como son:

Posibilidad de implementar dos modos bsicos en capa 2 o capa 3 con lo que se logran tneles capaces de enviar informacin en otros protocolos no-IP como IPX o broadcast (NETBIOS).

Proteccin de los usuarios remotos. Una vez que OpenVPN ha establecido un tnel el firewall de la organizacin proteger el equipo remoto an 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 proteccin en ambos sentidos.

Pgina 15 de 33

Conexiones OpenVPN pueden ser realizadas a travs de casi cualquier firewall. Si se posee acceso a Internet y se puede acceder a sitios HTTPS, entonces un tnel OpenVPN debera funcionar sin ningn problema.

Soporte para proxy. Funciona a travs de proxy y puede ser configurado para ejecutar como un servicio TCP o UDP y adems 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 mltiples conexiones en el mismo puerto TCP o UDP.

Las interfaces virtuales (tun0, tun1, etc.) permiten la implementacin de reglas de firewall muy especficas.

Todas las conceptos de reglas, restricciones, reenvo y NAT pueden ser usados en tneles OpenVPN.

Alta flexibilidad y posibilidades de extensin mediante scripts. OpenVPN ofrece numerosos puntos para ejecutar scripts individuales durante su arranque.

Soporte transparente para IPs dinmicas. Se elimina la necesidad de usar direcciones IP estticas en ambos lados del tnel.

Ningn problema con NAT. Tanto los clientes como el servidor pueden estar en la red usando solamente IPs privadas.
Pgina 16 de 33

Instalacin sencilla en cualquier plataforma. Tanto la instalacin como su uso son increblemente simples.

Diseo modular. Se basa en un excelente diseo modular con un alto grado de simplicidad tanto en seguridad como en red.

Desventajas No es IPsec-compatible siendo que justamente IPsec es el estndar actual para soluciones VPN. Falta de masa crtica. Todava existe poca gente que conoce como usar OpenVPN. An no posee interfaz grfica, aunque esto para algunos pueda significar en realidad una ventaja. Al da de hoy solo se puede conectar a otras computadores. Pero esto est cambiando, dado que ya existe compaas desarrollando dispositivos con clientes OpenVPN integrados.

ComparacinentreOpenVPNeIPsecVPN
IPsec Estndar de la tecnologa VPN Plataformas de hardware (dispositivos, aparatos) Tecnologa conocida y probada Muchas interfaces grficas disponibles Modificacin compleja del stack IP Necesidad de modificaciones crticas al kernel Necesidad de permisos de administrador Diferentes implementaciones de distintos proveedores pueden ser incompatibles entre si OpenVPN Aun desconocida y no compatible con IPsec Solo en computadoras, pero en todos los sistemas operativos disponibles Tecnologa nueva y aun en crecimiento Sin interfaces grficas profesionales, aunque ya existen algunos proyectos prometedores Tecnologa sencilla Interfaces de red y paquetes estandarizados Ejecuta en el espacio del usuario y puede ser chroot-ed Tecnologas de encriptamiento estandarizadas

Pgina 17 de 33

Configuracin compleja y tecnologa Facilidad, buena estructuracin, tecnologa compleja modular y facilidad de configuracin Curva de aprendizaje muy pronunciada Necesidad de uso de muchos puertos y protocolos en el firewall Problemas con direcciones dinmicas en ambas puntas Problemas de seguridad de las tecnologas IPsec
P

Fcil de aprender Utiliza solo un puerto del firewall Trabaja con servidores de nombres dinmicos como DynDNS o No-IP con reconexiones rpidas y transparentes SSL/TLS como estndar de criptografa

Problemas si ambos lados necesitan Ningn problema con NAT (ambos lados NAT 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 tnel): #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 lnea 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.

Pgina 18 de 33

Para permitir paquetes entrantes al dispositivo TUN:

iptables -A INPUT -i tun+ -j ACCEPT

Casos prcticos de construccin de VPNs. Configuracin 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 segn el escenario por nombres. La IP pueden ser IP pblicas si la conexin es a travs de Internet. IP de los extremos del TUNEL: Deben ser IP privadas y que no estn 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: Tnel 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
Pgina 19 de 33

--verb 3 Verificamos con el comando ping que el tnel est trabajando En PC A: ping 10.4.0.2 En PC B: ping 10.4.0.1

Caso 2: Tnel usando claves pre-compartida. Encriptacin simtrica 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 travs 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 tnel est trabajando En PC A: ping 10.4.0.2 En PC B: ping 10.4.0.1 Caso 3: Tnel con full seguridad basada en TLS. Encriptacin asimtrica con SSL/TLS En este caso es necesario definir quien ser el servidor TLS y quien el cliente
Pgina 20 de 33

TLS. PC A: Cliente TLS PC B: Servidor TLS (Mquina gestora de claves) Construccin de los certificados y claves RSA Se van a construir certificados y claves RSA utilizando el comando openssl, incluido en la distribucin de la biblioteca OpenSSL. Los certificados RSA son claves pblicas que tambin tienen otros campos seguros insertados en ellos tales como el Nombre Comn o la direccin email del propietario del certificado. OpenVPN provee la posibilidad de escribir scripts para probar estos campos antes de la autenticacin. 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 automticamente el directorio easy-rsa. Ese directorio contiene scripts que facilitan la creacin 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 podran existir certificados y llaves viejas:
Pgina 21 de 33

./clean-all 5. Ejecutar el script build-ca para crear una Autoridad de Certificacin maestra, un par certificado/clave privada, vlida por 10 aos. ./build-ca Nos preguntarn una serie de datos que debemos recordar. Por ejemplo:
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 preguntarn lo mismo del paso anterior. Conteste igual, salvo Common
Name

que debe utilizar el argumento del script ejecutado. En nuestro caso sera

servidor . Aqu se crearn servidor.crt y servidor.key, los cuales copiaremos en /etc/openvpn: cp /etc/openvpn/easy-rsa/keys/servidor.* /etc/openvpn

Pgina 22 de 33

7. Con el prximo 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 parmetros 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 travs de scp , aunque actualmente solo los archivos .key deben considerarse no-pblicos. 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 configuracin del servidor TLS 11. Vamos a crear ahora el archivo de configuracin con el cual arrancaremos el
Pgina 23 de 33

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. Deberamos ver al final de la consola algo as: Mon Jul 14 13:35:30 2008 us=329016 Initialization Sequence Completed Archivo de configuracin para el cliente TLS 13. Vamos a crear ahora el archivo de configuracin con el cual arrancaremos los clientes. Lo llamaremos cliente1.sh.

Pgina 24 de 33

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. Deberamos 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 tnel 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 travs del tnel, el prximo paso es rutear la subred real a travs del tnel Nuestro objetivo es conectar de manera segura ambas redes privadas.

Pgina 25 de 33

PC A: 192.168.1.0/24 PC B: 192.168.5.0/24 Ejecutamos en ambos equipos para habilitar el bit de reenvo: echo 1 > /proc/sys/net/ipv4/ip_forward y habilitamos los paquetes de reenvo del dispositivo TUN a travs del firewall: iptables -A FORWARD -i tun+ -j ACCEPT En el PC A creamos la ruta esttica 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 esttica 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 mquina en el segmento privado del PC A (192.168.1.0/24) puede conectarse a cualquier mquina en el segmento privado del PC B (192.168.5.0/24) a travs del tnel seguro VPN. Lo mismo desde la sede B a la sede A.

Pgina 26 de 33

Caso4.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 pblica de conexin 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 podra ser adecuada si una de las parejas (el cliente) tiene IP dinmica, como es el caso de clientes con servicio ADSL.

Debemos agregar tambin una regla al firewall para que permita trfico 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

Pgina 27 de 33

Anexo A IPTABLES Bsico Este es el camino que seguira un paquete en el kernel:

Cuando un paquete u otra comunicacin 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 [accin] Vamos a ver que es cada cosa : Esta parte del comando especifica cual es la tabla en la que queremos aadir la regla. Existen 3 tipos de tablas vlidas : nat, filter y mangle, siendo filter la tabla por defecto si se omite esta parte del comando. Nat se refiere a las conexiones que sern modificadas por el firewall, como por ejemplo, enmascarar conexiones, realizar redirecciones de puertos, etc. Filter es la tabla donde se aaden las relacionadas con el filtrado. Mangle tambin modifica paquetes pero, a diferencia de Nat, es mucho mas potente. Con Mangle podemos modificar cualquier aspecto del paquete (flags, TTL, etc).

-t [tabla]

Hay 4 opciones bsicas con las que se puede jugar en esta [AIRDLFZNXP apartado del comando. Estas opciones bsicas son las ] [regla]
Pgina 28 de 33

siguientes :

A es para aadir (Append) una regla. Reglas vlidas 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 poltica por defecto del firewall. Por defecto es aceptar todas las conexiones.

[criterio]

Aqu es donde se especificarn las caractersticas 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 podra 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 ms, pero estas son las bsicas). ACCEPTaceptarelpaquete. REJECT o DROP lo desecharn, 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 anlisis.

-j [action]

Pgina 29 de 33

Ejercicios con IPTABLES.


1. Con qu parmetro listamos todas las reglas introducidas en el cortafuegos? 1. -L 2. -A 3. -P 4. -F 2. Con qu parmetro aadimos 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, ejecutaramos: 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, cul de las siguientes reglas aadiras 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, cul de las siguientes reglas aadiras? 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 direccin IP 60.40.82.23, qu regla aadiras 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 direccin 192.168.1.23 por el puerto 80, cul de las siguientes reglas aadiras a IPTABLES? 1. iptables -A INPUT --dport 80 -d 192.168.1.23 -j ACCEPT
Pgina 30 de 33

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 aadir 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. (tpica regla en un router linux compartiendo la conexin 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 3. el kernel : #echo 1 > /proc/sys/net/ipv4/ip_forward 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 dems. Sin embargo todas las conexiones que se realicen desde la mquina (como navegar, consultar correo, etc) estarn permitidas por que no son conexiones iniciadas desde "fuera" 5. Deshabilitar los paquetes ICMP entrantes red protegida (regla ?). 6. Lista todas las reglas o cadenas introducidas en el cortafuegos. 7. Borra todas las reglas introducidas en el cortafuegos. 8. Aade una regla para eliminar todos los paquetes de salida (es decir, que desde tu equipo no pueda salir ningn paquete). Comprueba despus que no tienes acceso a Internet. 9. Elimina la regla introducida anteriormente y comprueba que de nuevo tienes acceso a Internet.
Pgina 31 de 33

para el firewall (regla ?) y la

10. Aade una regla para no dejar pasar ningn paquete de entrada. Comprueba en este caso que tampoco tienes conexin a Internet. 11. Borra la regla introducida en la pregunta 10. 12. Aade 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. Aade la regla necesaria al cortafuegos. 14. Tenemos un servidor ftp funcionando y queremos permitir el acceso ftp desde el exterior. Aade la regla necesaria en IPTABLES. 15. Si quieres denegar el acceso por debajo del puerto 1024. Qu reglas debes aadir a IPTABLES? 16. Rechaza todos los paquetes que vengan de la direccin 80.100.30.27 17. Borra todas las reglas introducidas y aade una para que no se pueda hacer ping a nuestro equipo. 18. Aade 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. Aadir una regla para denegar el acceso al servidor web a ese equipo. 20. Aade una regla para permitir el acceso va ssh (puerto 22) al equipo con ip 90.80.70.60 21. Aade una regla cuya funcin sea hacer ping desde nuestra propia mquina (protocolo icmp). 22. Aade una regla para que el equipo que tienes situado a tu derecha no obtenga respuesta al hacer ping. 23. Aade una regla para impedir conectarse mediante FTP al equipo con IP 192.168.1.15 24. Crea un pequeo script que contemple los siguientes casos: - La poltica por defecto es no dejar entrar ningn paquete al equipo.
Pgina 32 de 33

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

Pgina 33 de 33

You might also like