Tutorial Openvpn

32
Un Mundo Libre OpenSource Tu Guia de Networking Cisco, linux, Unix, Mac, Windows y Mucho Mas. Pages OpenVPN COMO OpenVPN en Centos, RHEL, FC OpenVPN RoadWarrior Centos 5 OpenVPN, Manual para Novatos PRIMEROS PASOS EN LINUX Quien Soy? SAMBA como PDC Calendario Libre Noviembre 2008 LMXJVSD « Oct 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 Blogroll Centos Cisco PIX 515e Quick Start Guide Debian 4.0_R5 Distribuciones de Linux Mas conocidas Fedora Core Gentoo Linux Knoppix Linux Knoppix Linux Get Mandriva Linux Mepis Linux PCLinuxOS Periodico Digital CLAVEDigital.com PIX/ASA: Easy VPN with an PIX 515E Samba Samba3-ByExample Samba3-HOWTO Slackware Linux Ubuntu Ubuntu Es Administracion Iniciar sesión RSS de Entradas RSS de los comentarios WordPress.org Archivo Libre Noviembre 2008 (12) Octubre 2008 (37) Entrada recientes Libre Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/ 1 de 32 06/11/2008 02:10 p.m.

Transcript of Tutorial Openvpn

Page 1: Tutorial Openvpn

Un Mundo Libre OpenSourceTu Guia de Networking Cisco, linux, Unix, Mac, Windows y Mucho Mas.

PagesOpenVPN COMOOpenVPN en Centos, RHEL, FCOpenVPN RoadWarrior Centos 5OpenVPN, Manual para NovatosPRIMEROS PASOS EN LINUXQuien Soy?SAMBA como PDC

Calendario LibreNoviembre 2008

L M X J V S D

« Oct

1 23 4 5 6 7 8 910 11 12 13 14 15 1617 18 19 20 21 22 2324 25 26 27 28 29 30

BlogrollCentosCisco PIX 515e Quick Start GuideDebian 4.0_R5Distribuciones de Linux Mas conocidasFedora CoreGentoo LinuxKnoppix LinuxKnoppix Linux GetMandriva LinuxMepis LinuxPCLinuxOSPeriodico Digital CLAVEDigital.comPIX/ASA: Easy VPN with an PIX 515ESambaSamba3-ByExampleSamba3-HOWTOSlackware LinuxUbuntuUbuntu Es

AdministracionIniciar sesiónRSS de EntradasRSS de los comentariosWordPress.org

Archivo LibreNoviembre 2008 (12)Octubre 2008 (37)

Entrada recientes Libre

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

1 de 32 06/11/2008 02:10 p.m.

Page 2: Tutorial Openvpn

Horde Groupware Webmail en CentOS 5horde groupware webmailFiltro de contenidos de páginas web con Squid y SquidguardSquid-SquidGuard en Ubutntu (Debian)Añadiendo filtrado de contenidos al Squid

Noticias CLAVE DigitalComicios en EEUU “enseñaron al mundo el camino a seguir por la libertad”, según FernándezEl presidente dominicano felicita al Barack Obama por su triunfo

Comentarios Libresmarketing y publicidad el Añadiendo filtrado de contenidos al Squidbase de datos de argentina ,chile , brasil, españa y uruguay el Active Directory Integracion

Categorias LibresCisco Networking Plug (1)Comandos linux (3)DNS Serever (1)Linux Network Plus (15)Mac OSx Loepard en Tu PC (1)PDC Samba (3)Proxy Squid Server (10)Seguridad de Redes (2)Temas Varios (22)Ultimas Noticias (3)Video y Audio Stream Linux (3)VPN Linux (7)VPN Windows (3)Webmail (2)Windows Networking (1)WordPrees (5)

EtiquetasAñadir nueva etiqueta Bloquear MSN Webmail WordPress Upgrade

homeOpenVPN COMOOpenVPN en Centos, RHEL, FCOpenVPN RoadWarrior Centos 5OpenVPN, Manual para NovatosPRIMEROS PASOS EN LINUXQuien Soy?SAMBA como PDC

Manual OpenVPN25th Octubre 2008

INTRODUCCIÓN

OpenVPN es una solución de conectividad basada en software: SSL(Secure Sockets Layer) VPNVirtual Private Network [red virtual privada],OpenVPN ofrece conectividad punto-a-punto con validación, jerárquica de usuarios y host conectados remotamente, resulta una muy buena opciónen tecnologías Wi-Fi (redes inalámbricas EEI 802.11) y soporta una amplia configuración, entre ellas balanceo de cargas entre otras.

Está publicado bajo licencia de código-libre (Open Source).

Tipo de configuración.

En esta ocasión se realizará una configuración tipo VPN Intranet.

Este tipo de redes es creado entre una oficina central [servidor] y una o varias oficinas remotas [clientes]. El acceso viene del exterior. Se utilizaeste tipo de VPN cuando se necesita enlazar a los sitios que son parte de una compañía, en nuestro caso será compuesto por un servidor Central queconectará a muchos clientes VPN entre si.

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

2 de 32 06/11/2008 02:10 p.m.

Page 3: Tutorial Openvpn

La información y aplicaciones a las que tendrán acceso los directivos móviles en el VPN, no serán las mismas que aquellas en donde puedenacceder los usuarios que efectúan actividades de mantenimiento y soporte, esto como un ejemplo de lo que se podrá realizar con esta configuración.

Ademas de que podrá conectarse vía Terminal Server [en el caso de clientes Linux] a terminales Windows de la red VPN así como de ClientesWindows a computadoras con el mismo sistema operativo [mediante RDP].

Nota Importante: Enfocado a esta configuración .. Una vez que los clientes [Win/Linux] se conecten a la red VPN quedarán automáticamente sinconexión a Internet, lo cual NO podrán acceder a la red mundial. Esto puede ser modificable en el servidor VPN.

Diagrama OpenVPN

Servidor de Pasarela OpenVpn con clientes [Win/Linux] remotos

El servidor VPN hace de pasarela para que todos los clientes [Windows/Linux] puedan estar comunicados a través del túnel OpenVpn, estos alconectarse por medio de Internet al túnel automáticamente quedan sin linea a la red mundial quedando como una red local, esto claro esta a travésdel VPN.

Cada cliente se encuentra en lugares diferentes [ciudad/estado/país] con diferentes tipos de segmento de red, al estar conectados mediante el túnelVPN se crea un red virtual y se asigna un nuevo segmento de red proporcionada por el servidor principal en este caso con segmento[10.10.0.0/255.255.255.255].

INSTALACIÓN VPN CON OPENVPN

Actualización del Sistema

Antes que nada debemos actualizar todo nuestro sistema, si cuenta con acceso a Internet así como también correctamente configurado sus depósitosyum se hará de la siguiente forma:

yum -y update

Lo anterior bajará lo paquetes actualizados de Internet así como sus dependencias en caso de ser necesario.

Paquetes Requeridos

Instalación a partir de RPM

Se necesita los paquetes OpenVPN y lzo, se podrá hacer de la siguiente forma, si cuenta en sus depósitos con la paquetería AL Desktop:

yum -y install openvpn lzo

Instalación a partir de paquete TAR.

En caso de no contar con paquetes RPM puede hacerlo de forma manual.

Se requiere utilizar la compresión sobre el enlace VPN, para esto instale la biblioteca LZO [http://www.oberhumer.com/opensource/lzo/].

Si utiliza un Linux 2.2 o anterior descargue el controlador TUN/TAP [http://vtun.sourceforge.net/tun/].

Los usuarios de Linux 2.4.7 o superior deberían tener el controlador TUN/TAP ya incluido en su kernel.

Usuarios de Linux 2.4.0 -> 2.4.6 deberían leer la advertencia al final del fichero INSTALL.

Descargue ahora la última release de OpenVPN:

http://www.openvpn.net

[http://prdownloads.sourceforge.net/openvpn/]

Gui para Windows XXXX

http://www.openvpn.se

Instalar desde paquete .tar, descomprima el paquete donde x.x-x es la versión del Openvpn:

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

3 de 32 06/11/2008 02:10 p.m.

Page 4: Tutorial Openvpn

tar zxvf openvpn-x.x-x.tar.gz

Compilar OpenVPN:

cd openvpn-x.x../configuremakemake install

Si no se descargó la biblioteca LZO, añada –disable-lzo al comando configure. Se pueden habilitar otras opciones como el soporte parapthread(./configure –enable-pthread) para mejorar la latencia durante los intercambios dinámicos de clave SSL/TLS.

Si desea mas información acerca de todas las opciones de configuración para OpenVPN puede usar el comando.

./configure –help

Preparación de guiones (script) RSA.

Para la administración de la PKI (Infraestructura de Llave Publica - Public Key Infrastructure) usaremos los guiones que vienen junto con OpenVPN(easy-rsa) la versión reciente trae consigo muchas mejoras, es esta easy-rsa 2.0.

cp -Rp /usr/share/doc/openvpn-x.x-x/easy-rsa/ /etc/openvpncp /etc/openvpn/easy-rsa/openssl.cnf /etc/openvpn

A continuación será modificar la Autoridad Certificadora ( CA) para generar las llaves, para esto se edita el fichero /etc/openvpn/easy-rsa/vars dela siguiente forma, por ejemplo:

export KEY_COUNTRY=MXexport KEY_PROVINCE=MiEstado/Provinciaexport KEY_CITY=MiCiudadexport KEY_ORG=”midominio.com”export KEY_EMAIL=”[email protected]

• KEY_COUNTRY: Especifica el país donde se encuentra el servidor vpn

• KEY_PROVINCE: Provincia o estado donde se encuentra este.

• KEY_CITY: Ciudad ubicado el servidor vpn.

• KEY_ORG: Dominio o departamento de la organización/Empresa.

• KEY_MAIL: Correo electrónico de la organización/empresa.

Importante: Se deben de llenar todos los parámetros ya que son indispensables para los certificados que serán creados.

Seguidamente se ejecutarán los guiones (scripts) para general las llaves correspondientes de la siguiente forma:

Inicializando Autoridad Certificadora el CA

Para generar el CA deberá realizar los siguientes pasos:

cd /etc/openvpn/source easy-rsa/2.0/./varssh easy-rsa/2.0/clean-allsh easy-rsa/2.0/build-cacd /etc/openvp

Generando Parametros Diffie Hellman.

Los parámetros Diffie Hellman deben de ser generados en el Servidor OpenVPN, para realizar esto deberá ejecutar el guión de la siguienteforma:

sh easy-rsa/2.0/build-dh

Generación de llaves.

Para generar el certificado y llave privada para el SERVIDORserá de la siguiente forma:

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

4 de 32 06/11/2008 02:10 p.m.

Page 5: Tutorial Openvpn

sh easy-rsa/2.0/build-key-server miservidor

En donde [miservidor] es una variable para identificar la llave privada del servidor.

Para generar el certificado y llave para los CLIENTESse hará de la siguiente forma:

Recomendación: Cada cliente deberá tener su propia llave.

sh easy-rsa/2.0/build-key clientesh easy-rsa/2.0/build-key cliente1sh easy-rsa/2.0/build-key cliente2

Una ves que se han generado las llaves correspondientes a los clientes y servidor, se podrá rescatar estas en el directorio /etc/openvpn/easy-rsa/2.0/keys

CONFIGURACIÓN.

Configuración del Servidor Linux VPN

Para la creación del servidor OpenVPN se deberá crear un archivo de configuración UDP para el este en el directorio /etc/openvpn/ con el nombreservidorvpn-udp-1194.conf

port 1194proto udpdev tun#—- Seccion de llaves —–ca keys/ca.crtcert keys/server.crtkey keys/server.keydh keys/dh1024.pem#—————————-server 10.11.0.0 255.255.255.0ifconfig-pool-persist ipp.txtkeepalive 10 120comp-lzopersist-keypersist-tunstatus openvpn-status-servidorvpn-udp-1194.logverb 3

Descripción:

Port: Especifica el puerto que será utilizado para que los clientes vpn puedan conectarse al servidor.

Proto: tipo de protocolo que se empleará en a conexión a través de VPN

dev: Tipo de interfaz de conexión virtual que se utilizará el servidor openvpn.

ca: Especifica la ubicación exacta del fichero de Autoridad Certificadora [.ca].

cert: Especifica la ubicación del fichero [.crt] creado para el servidor.

key: Especifica la ubicación de la llave [.key] creada para el servidor openvpn.

dh: Ruta exacta del fichero [.pem] el cual contiene el formato de Diffie Hellman (requirerido para –tls-server solamente).

server: Se asigna el rango IP virtual que se utilizará en la red del túnel VPN.

Ifconfig-pool-persist: Fichero en donde quedarán registrado las direcciones IP de los clientes que se encuentranconectados al servidor OpenVPN.

Keepalive 10 120 : Envía los paquetes que se manejan por la red una vez cada 10 segundos; y asuma que el acoplamiento esabajo si ninguna respuesta ocurre por 120 segundos.

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

5 de 32 06/11/2008 02:10 p.m.

Page 6: Tutorial Openvpn

comp-lzo: Especifica los datos que recorren el túnel vpn será compactados durante la trasferencia de estos paquetes.

persist-key: Esta opción soluciona el problema por llaves que persisten a través de los reajustes SIGUSR1, así que nonecesitan ser releídos.

Persist-tun: Permite que no se cierre y re-abre los dispositivos TAP/TUN al correr los guiones up/down

status: fichero donde se almacenará los eventos y datos sobre la conexión del servidor [.log]

verb: Nivel de información (default=1). Cada nivel demuestra todo el Info de los niveles anteriores. Se recomienda el nivel3 si usted desea un buen resumen de qué está sucediendo.

0 –No muestra una salida excepto errores fatales. 1 to 4 –Rango de uso normal. 5 –Salida R y Wcaracteres en la consolapar los paquetes de lectura y escritura, mayúsculas es usada por paquetes TCP/UDP minúsculas es usada para paquetesTUN/TAP.

Para la configuración del Servidor VPN necesitamos insertar el módulo (tun) para controlar los interfaces /dev/net/tunX que se necesiten en lesistema, así pues creamos el directorio /var/empty para hacer chroot y seguidamente reiniciamos el servicio OpenVPN:

Cargamos el módulo:

modprobe tun

Y habilitamos el IP forwarding:

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

Comprobamos que tenemos /dev/net/tun, si no existelo lo creamos con:

mknod /dev/net/tun c 10 200

A continuación se creará un directorio para hacer chroot [jaula], en el cual solamente seráusado para configuración de clientes Linux(no-Windows), de la siguienteforma:

mkdir /var/empty

Ahora signamos el tipo de usuarios y grupo como [nobody]..

chown nobody.nogroup /var/empty

Para la ejecución del servidor OpenVPN puede utilizar el siguiente guión y guardarlo con el nombre de [iniciovpnserver], tendrá el siguientecontenido:

#!/bin/bash##– Variables –RUTACONFIG=”/etc/openvpn/”NOMCONFIG=”servidorvpn-udp-1198.conf”##– Ejecuciónde la configuraciónpara el servicioOpenVPN#$RUTACONFIG./$NOMCONFIG#exit 0

Y damos los permiso de ejecución correspondientes:

chmod +x iniciovpnserver

Para ejecutar nuestro guión al inicio del sistema (arranque), puede colocar lo siguiente dentro del fichero /etc/rc.local

#inicia la configuración OpenVPN/donde/este/tu/fichero/iniciovpnserver

Configuración del cortafuego [Shorewall]

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

6 de 32 06/11/2008 02:10 p.m.

Page 7: Tutorial Openvpn

Acerca de shorewall

Shorewall (Shoreline Firewall) es una robusta y extensible herramienta de alto nivel para la configuración de muros cortafuego. Shorewallsolo necesita se le proporcionen algunos datos en algunos ficheros de texto simple y éste creará las reglas de cortafuegos correspondientes a travésde iptables. Shorewall puede permitir utilizar un sistema como muro cortafuegos dedicado, sistema de múltiples funciones como puerta de enlace,dispositivo de encaminamiento y servidor.

URL: http://www.shorewall.net/

En esta ocasión se supone que el servidor VPN se encuentra en el mismo Firewall.

Procedimiento

Fichero de configuración /etc/shorewall/zones

En este fichero se definirá las zonas que se administrarán con Shorewall. La zona fw está presente en el fichero /etc/shorewall.conf comoconfiguración predefinida. En el siguiente ejemplo se registrarán las zonas de Internet (net), Red Local (loc) y el túnel virtual tun para el vpn (rem):

#ZONE DISPLAY OPTIONSfw firewallnet ipv4loc ipv4# OpenVPN —-rem ipv4#LAST LINE — ADD YOUR ENTRIES BEFORE THIS ONE — DO NOT REMOVE

Fichero de configuración /etc/shorewall/interfaces

En éste se establecen cuales serán las interfaces para las tres diferentes zonas. Se establecen las interfaces que corresponden a la Internet, virtualtun y Red Local.

A continuación se cuenta con una interfaz ppp0 para acceder hacia Internet, una interfaz eth0 para acceder hacia la LAN y una interfaz rem paraacceder hacia la red virtual tun, y en todas se solicita se calcule automáticamente la dirección de transmisión (Broadcast):

#ZONE INTERFACE BROADCAST OPTIONS GATEWAYnet ppp0 detectloc eth0 detect# OpenVPN —-rem tun0 detect#LAST LINE — ADD YOUR ENTRIES BEFORE THIS ONE — DO NOT REMOVE

Fichero de configuración /etc/shorewall/policy

En este fichero se establece como se accederá desde una zona hacia otra y hacia la zona de Internet.

#SOURCE DEST POLICY LOG LIMIT:BURSTloc net ACCEPTfw net ACCEPT# OpenVpn —-rem fw ACCEPTfw rem ACCEPTnet rem ACCEPTrem net ACCEPT# ————net all DROP infoall all REJECT info#LAST LINE — ADD YOUR ENTRIES BEFORE THIS ONE — DO NOT REMOVE

Lo anterior hace lo siguiente:

1. La zona de la red local puede acceder hacia la zona de Internet.

2. La zona virtual tun (rem) puede acceder hacia el cortafuegos, viceversa y también hacia la zona de Internet.

3. El corta fuegos mismo puede acceder hacia la zona de Internet.

4. Se impiden conexiones desde Internet hacia el resto de las zonas.

5. Se establece una política de rechazar conexiones para todo lo que se haya omitido.

Fichero de configuración /etc/shorewall/tunnels

En éste se establecen el tipo de conexión vpn. Puesto que es un servidor VPN se le indicará a al cortafuego que en el servidor vpn se utilizará elpuerto que nosotros le indiquemos así como también la IP donde se encuentra este, en nuestro caso siguiendo el tipo de configuración será en la red

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

7 de 32 06/11/2008 02:10 p.m.

Page 8: Tutorial Openvpn

192.168.2.0/24:

#TYPE ZONE GATEWAY GATEWAY# ZONEopenvpnserver:1194 rem 192.168.2.0/24#LAST LINE — ADD YOUR ENTRIES BEFORE THIS ONE — DO NOT REMOVE

Fichero de configuración /etc/shorewall/rules

Todos los puertos están cerrados de modo predefinido, así que se deberá habilitar el puerto configurado para el túnel vpn en el cual fueespecificado en la configuración del servidor OpenVpn. Esto debe ser especificado con la acción [ACCEPT] en [rules].

ACCEPT

La acción ACCEPT se especificará que se permiten conexiones para el puerto OpenVpn desde o hacia una(s) zona (s) un protocolo(s) y puerto(s)en particular. A continuación se permiten conexiones desde Internet hacia el firewall y viceversa por el puerto UDP [1194]. Los nombres de losservicios se asignan de acuerdo a como estén listados en el fichero /etc/services.

#ACTION SOURCE DEST PROTO DEST# PORT# OpenVPn —ACCEPT net fw udp 1194ACCEPT fw net udp 1194#LAST LINE — ADD YOUR ENTRIES BEFORE THIS ONE — DO NOT REMOVE

Configuración de Clientes VPN con OpenVPN.

Clientes Windows

Para la configuración de clientes OpenVPN utilizaremos el programa OpenVPN GUI para Windows.

OpenVPN GUI para Windows corre normalmente en una ventana de consola, al ser conectado al servidor remoto/local VPN le da un aviso en elárea de notificación (el área de abajo a la derecha por el reloj en la barra ), desde allí puede tener el control de iniciar/parar el Cliente OpenVPN,consultar los avisos (log), incluso cambiar su contraseña.

Puede ser descargado en el sitio OpenVPN GUI for Windows [http://openvpn.se].

Preparativos y configuración

A continuación deberá copiar los siguientes ficheros:

• ca.crt.

• cliente1.crt.

• cliente1.csr.

• cliente1.key

Estos fueron creados en el directorio /etc/openvpn/easy-rsa/2.0/keys y deberán ser colocados en la máquina cliente dentro de C:ProgramFilesOpenVPN config o a su vez en C:|Archivos de Programa|OpenVPN|config

Se creará un fichero de configuración cliente para el OpenVPN dentro del directorio C:|Archivos de ProgramaOpenVPN config con el nombre decliente1-udp-1194.ovpn.

Tendrá la siguiente configuración:

clientdev tunproto udpremote dominio-o-ip.del.servidor.vpn 1194floatresolv-retry infinitenobindpersist-keypersist-tun#—— SECCION DE LLAVES ——–ca ca.crtcert cliente.crtkey cliente.keyns-cert-type server#———————————comp-lzoverb 3

Descripción:

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

8 de 32 06/11/2008 02:10 p.m.

Page 9: Tutorial Openvpn

client: Especifica el tipo de configuración, en este caso tipo cliente OpenVPN.

Port: Especifica el puerto que será utilizado para que los clientes VPN puedan conectarse al servidor.

Proto: tipo de protocolo que se empleará en a conexión a través de VPN

dev: Tipo de interfaz de conexión virtual que se utilizará el servidor openvpn.

remote: Host remoto o dirección IP en el cliente, el cual especifica al servidor OpenVPN.

El cliente OpenVPN puede tratar de conectar al servidor con host:porten el orden especificado de las opciones de laopción –remote.

float: Este le dice a OpenVPN aceptar los paquetes autenticados de cualquier dirección, no solamente la dirección cuál fueespecificado en la opción –remote.

resolv-retry: Si la resolución del hostname falla para – remote, la resolución antes de fallar hace una re-comprobación den segundos.

nobind: No agrega bind a la dirección local y al puerto.

ca: Especifica la ubicación exacta del fichero de Autoridad Certificadora [.ca].

cert: Especifica la ubicación del fichero [.crt] creado para el servidor.

key: Especifica la ubicación de la llave [.key] creada para el servidor OpenVPN.

remote: Especifica el dominio o IP del servidor así como el puerto que escuchara las peticiones para servicio VPN.

comp-lzo: Especifica los datos que recorren el túnel VPN será compactados durante la trasferencia de estos paquetes.

persist-key: Esta opción soluciona el problema por llaves que persisten a través de los reajustes SIGUSR1, así que nonecesitan ser releídos.

Persist-tun: Permite que no se cierre y re-abre los dispositivos TAP/TUN al correr los guiones up/down

verb: Nivel de información (default=1). Cada nivel demuestra toda la Información de los niveles anteriores. Se recomiendael nivel 3 si usted desea un buen resumen de qué está sucediendo.

0 –No muestra una salida excepto errores fatales. 1 to 4 –Rango de uso normal. 5 –Salida R y W caracteres en la consolapar los paquetes de lectura y escritura, mayúsculas es usada por paquetes TCP/UDP minúsculas es usada para paquetesTUN/TAP.

Una ves configurado el cliente VPN con Windows, deberá ir al área de notificación (el área de abajo a la derecha por el reloj en la barra deWindows) y dar un click derecho al icono del cliente OpenVPN, allí aparecerá un menú en el cual podrá elegir la opción conectar [connect].

openvpn-icono

Icono de notificación

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

9 de 32 06/11/2008 02:10 p.m.

Page 10: Tutorial Openvpn

Menú del cliente OpenVPN para efectuar la conexión al servidor VPN

Cuando intente conectarse al servidor VPN una vez que haya elegido la opción [connect] aparecerá una ventana de notificación en el cual vera losprocesos de verificación e intento de conexión al servidor VPN, si todo sale bien, en el icono de notificación del cliente OpenVPN le indicará lacorrecta conexión y le mostrará el número de IP virtual [tun] que se le fue asignado.

Mensaje de notificación al conectarse al servidor VPN

Pruebas de Conexión

Una ves efectuada la conexión al servidor, para asegurarse que estamos dentro del túnel VPN y tenemos conexión al servidor, podemos realizar unabúsqueda de dirección IP [Ping], así como también verificar el número IP asignado por el servidor VPN al estar conectarnos en el túnel.

Para esto utilizaremos el comando [cmd] para hacer llamado al MS-Dos de Windows a través de la aplicación [ejecutar].

Una ves estando en la consola en modo texto, utilice el comando [ipconfig] para ver que dirección IP se le fue asignado.

Verificación de asignación de dirección IP virtual [tun]

Verificación de conexión de red a través del túnel VPN

Importante: Deberá desactivar el cortafuego que trae como predeterminado Windows o cual quier otro que este utilizando.

Clientes Linux

Para la configuración de clientes Linux con OpenVPN utilizaremos el modo texto [terminal] y el arranque a través de un bash.

Preparativos y configuración

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

10 de 32 06/11/2008 02:10 p.m.

Page 11: Tutorial Openvpn

A continuación deberá copiar los siguientes ficheros:

ca.crtcliente1.crtcliente1.csrcliente1.key

Estos fueron creados en el directorio /etc/openvpn/easy-rsa/2.0/keys y deberán ser colocados en la máquina cliente dentro del directorioOpenVPN.

Supongamos que las llaves la tenemos en el directorio /tmp/llaves, debemos copiar estas en el siguiente directorio /etc/openvpn/keys, para esto hayque crearlo antes.

mkdir /etc/openvpn/keys

cp -R /tmp/llaves/* /etc/openvpn/keys/

cd /etc/openvpn/

A continuación se creará un fichero de configuración cliente para el OpenVPN dentro del directorio /etc/openvpn/ con el nombre de cliente1-udp-1194.ovpn.

Tendrá la siguiente configuración:clientdev tunproto udpremote dominio-o-ip.del.servidor.vpn 1194floatresolv-retry infinitenobindpersist-keypersist-tun#—— SECCION DE LLAVES ——–ca ca.crtcert cliente.crtkey cliente.keyns-cert-type server#———————————comp-lzoverb 3

Descripción:

client : Especifica el tipo de configuración, en este caso tipo cliente OpenVPN.

Port : Especifica el puerto que será utilizado para que los clientes VPN puedan conectarse alservidor.

Proto: tipo de protocolo que se empleará en a conexión a través de VPN

dev : Tipo de interfaz de conexión virtual que se utilizará el servidor openvpn.

remote : Host remoto o dirección IP en el cliente, el cual especifica al servidor OpenVPN.

El cliente OpenVPN puede tratar de conectar al servidor con host:port en el ordenespecificado de las opciones de la opción –remote.

float : Este le dice a OpenVPN aceptar los paquetes autenticados de cualquier dirección, nosolamente la dirección cuál fue especificado en la opción –remote.

resolv-retry : Si la resolución del hostname falla para – remote, la resolución antes de fallarhace una re-comprobación de n segundos.

nobind : No agrega bind a la dirección local y al puerto.

ca : Especifica la ubicación exacta del fichero de Autoridad Certificadora [.ca].

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

11 de 32 06/11/2008 02:10 p.m.

Page 12: Tutorial Openvpn

cert : Especifica la ubicación del fichero [.crt] creado para el servidor.

key : Especifica la ubicación de la llave [.key] creada para el servidor OpenVPN.

remote : Especifica el dominio o IP del servidor así como el puerto que escuchara laspeticiones para servicio VPN.

comp-lzo : Especifica los datos que recorren el túnel VPN será compactados durante latrasferencia de estos paquetes.

persist-key : Esta opción soluciona el problema por llaves que persisten a través de losreajustes SIGUSR1, así que no necesitan ser releídos.

Persist-tun : Permite que no se cierre y re-abre los dispositivos TAP/TUN al correr losguiones up/down

verb : Nivel de información (default=1). Cada nivel demuestra toda la Información de losniveles anteriores. Se recomienda el nivel 3 si usted desea un buen resumen de qué estásucediendo.

0 – No muestra una salida excepto errores fatales.1 to 4 – Rango de uso normal.5 – Salida R y W caracteres en la consola par los paquetes de lectura y escritura, mayúsculases usada por paquetes TCP/UDP minúsculas es usada para paquetes TUN/TAP

Ahora necesitamos insertar el módulo [tun] para controlar los interfaces /dev/net/tunX que se necesiten en le sistema para el servicio OpenVPN:

Cargamos el módulo:

modprobe tun

y habilitamos el IP forwarding:

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

Comprobamos que tenemos /dev/net/tun, si no existe lo creamos con:

mknod /dev/net/tun c 10 200

Para la ejecución del cliente OpenVPN puede utilizar el siguiente guión y guardarlo con el nombre de [iniciovpncliente], tendrá el siguientecontenido:

#!/bin/bash##– Variables –RUTACONFIG=”/etc/openvpn/”NOMCONFIG=”cliente1-udp-1194.conf”##– Ejecución de la configuración para el servicio OpenVPN#/usr/bin/openvpn $RUTACONFIG./$NOMCONFIG#exit 0

Y damos los permiso de ejecución correspondientes:

chmod +x iniciovpncliente

Si desea ejecutar el servicio VPN al inicio del sistema (arranque), puede colocar lo siguiente dentro del fichero /etc/rc.local

#inicia la configuración OpenVPN/donde/este/tu/fichero/iniciovpncliente

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

12 de 32 06/11/2008 02:10 p.m.

Page 13: Tutorial Openvpn

Pruebas de Conexión

Una ves efectuada la conexión al servidor VPN, para asegurarse que estamos dentro del túnel VPN y tenemos conexión al servidor, podemosrealizar una búsqueda de dirección IP [Ping], así como también verificar el número IP asignado por el servidor VPN al estar conectarnos en eltúnel.

Para esto utilizaremos el necesitamos entrar a la terminal de comando, una ves estando en la consola en modo texto, utilice el comando [ifconfig]para ver que dirección IP se le fue asignado.

Verificación de asignación de dirección IP [tun] con ifconfig

Prueba de conexión con el comando [ping] hacia el servidor VPN

Comprobación de conexión hacia el servidor VPN en interfaz gráfica

Tags:Posted in: Linux Network Plus, VPN Linux |Comentarios (0)

OpenVPN setup on Centos 5.222nd Octubre 2008

OpenVPN setup on Centos 5.2

OpenVPN is a very capable SSL-based VPN client/server software package. It has great documentation atOpenVPN Howto Documents.

To install on CentOS, I grab the rpms from the EPEL repo. EPEL stands for Extra Packages for Enterprise Linux.They are Fedora packages repackaged for Redhat Enterprise. The project homepage and documentation is athttp://fedoraproject.org/wiki/EPEL. There is also a package list at that site.To install the EPEL yum repo, run the following command:

sudo rpm -ihv http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-2.noarch.rpm

Or yum install epel-release*

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

13 de 32 06/11/2008 02:10 p.m.

Page 14: Tutorial Openvpn

Change the architecture and version appropriately for your machine.

Install OpenVPN with the following command:

yum install openvpn

For now I will setup OpenVPN to route rather than bridge. Later I will likely bridge two remote networks.Generate the Master Certificate Authority. Copy the templates files into place:

sudo cp -r /usr/share/openvpn/easy-rsa/2.0 /etc/openvpn/easy-rsa

Now cd into /etc/openvpn/certs and edit the var file. The only thing I changed was the last five lines containingthe location information. Now run the following commands

sudo su. ./vars./clean-all./build-ca

Note that you want to be root when running these commands because the vars script alters your environment, andthey will get lost if you are using sudo on each command individually.

Generate certificate & key for server.

./build-key-server server_name

I left challenge password empty and answered yes to signing and committing the certificate.

Generate client certificates

./build-key client1

Build Diffie Hellman data

./build-dh

You can now drop root permissions and setup the server configuration file

sudo cp /usr/share/doc/openvpn-2.1/sample-config-files/server.conf /etc/openvpn

Edit it to your liking. I did not change much except to add paths appropriately to the certificate and dh files.

Install OpenVPN on the client.

yum install openvpn

. In my case this a Fedora 9 machine.

sudo cp /usr/share/doc/openvpn-2.1/sample-config-files/client.conf /etc/openvpn/

and edit it to your liking.

Copy the keys from the server to the client and start it upFor routing so that I run the following

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

on the server so that machines on the same subnet as the server can talk to the clients. Likewise, I add thefollowing static route to the default gateway (which is my wireless router):

Destination LAN IP: 10.8.0.0Subnet Mask: 255.255.255.0Gateway: 192.168.35.2

Roadwarrior en OpenvpnEste es un howto bien basico para hacer roadwarrior en openvpn , para esto use Centos 4.2 ,por que ? ,bueno por quefunciona muy bien ya lo tengo bastante tiempo en produccion asi que doy fe de ello.

- actualizar el sistema

#yum upgrade

- instalar estos rpm

#rpm -i lzo-1.08-4.2.el4.rf.i386.rpm#rpm -i rpm -i openvpn-2.0.2-1.2.el4.rf.i386.rpm

- crear el enlace simbolico limpam.so

#cd /lib/

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

14 de 32 06/11/2008 02:10 p.m.

Page 15: Tutorial Openvpn

#ln -s libpam.so.0 libpam.so

- generar los certificados

Para esta parte dejo el enlace donde postean como hacerlo http://es.tldp.org/Manuales-LuCAS/doc-guia-ubuntu-breeze/guia-ubuntu-htmls/administracion-miscelanea.html

en resumen debe crearse los archivos : mi-ca.crt , server.crt , server.key

- copiar los archivos de configuracion

cp * /etc/openvpn/cp -t keys/ /etc/openvpn/

- Archivos de configuracion

tunel.conf deberia quedar algo asi

#vi /etc/openvpn/tunel.conf

verb 5status openvpn-status.loglog openvpn.loguser nobody#group nogrouppersist-keypersist-tunlocal TU.IP.PULICAport 559proto tcp-serverdev tun#comp-lzoca /etc/openvpn/keys/mi-ca.crtcert /etc/openvpn/keys/server.crtkey /etc/openvpn/keys/server.keydh /etc/openvpn/dh1024.pemserver 10.0.1.0 255.255.255.0keepalive 10 120

ifconfig-pool-persist ipp.txtclient-config-dir /etc/openvpn/cldpush “route 169.254.0.0 255.255.255.0″ #Red interna a la cual de quiere accederusername-as-common-name #Primer parametro para el roadwarriorplugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so login # segundo parametro para habilitar el uso de pam- Iniciar el servicio

tail -f /etc/openvpn/openvpn.log/etc/init.d/openvpn start/etc/init.d/openvpn stop

- Conectarse desde un cliente vpn

En linux bastaria con

* instalar openvpn

* conpiar el contenido de la carpeta /etc/openvpn

* /etc/init.d/openvpn start

En windows hay un cliente visual bastante agradable y muy facil de configurar

lo pueden descargar desde aqui http://openvpn.se/

OpenVPN setup guide for FC3, FC4, FC5, CentOS andothers,connecting via Windows

This guide was done using a FC4 VPS, running on Xen, it will work on OpenVZ, all you need to do is ask your VPSprovider to install “tun support”.

1. First of all get a few additional repos, If you already have your repos setup, skip this step

If you have Fedora 3, follow these steps,

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

15 de 32 06/11/2008 02:10 p.m.

Page 16: Tutorial Openvpn

http://stanton-finley.net/fedora_cor…notes.html#Yum

If you have Fedora 4, follow these steps,

http://stanton-finley.net/fedora_cor…notes.html#Yum

If you have Fedora 5, follow these steps,

http://stanton-finley.net/fedora_cor…notes.html#Yum

If you have CentOS, follow the “additional third party CentOS repos”

http://www.osresources.com/11_6_en.html

Then issue these commands, each line is a new command, anything beginning with “#” are comments so dont try toexecute those.

Code:yum update

yum install openssl openssl-devel# openssl and openssl-devel may be installed already… so don’t worry

2. Right, now you want to install OpenVPN, here are the commands,

Code:yum install openvpn -y

#Now check that it works

service openvpn startservice openvpn stop

3. A few things to setup before you can make certificates, issue these commands,

Code:find / -name "easy-rsa"

#you should get an output like this…

/usr/share/doc/openvpn-2.0.7/easy-rsa

#Now, make a copy of the easy-rsa directory, to /etc/openvpn/ ( make sure you #have put the rig

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

cd /etc/openvpn/easy-rsa

chmod 777 *

mkdir /etc/openvpn/keys

4. You need to edit the vars file, located in /etc/openvpn/easy-rsaYou can use any editor you like, I used vi.

Change the line

Code:export KEY_DIR=$D/keys

to

Code:export KEY_DIR=/etc/openvpn/keys

Also at the bottom of this file you will see something similar to this,

Code:

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

16 de 32 06/11/2008 02:10 p.m.

Page 17: Tutorial Openvpn

export KEY_COUNTRY=USexport KEY_PROVINCE=CAexport KEY_CITY=SOMEWHEREexport KEY_ORG="My Org"export [email protected]

Change this to your own values.

5. Now its time to make the certificates, enter these commands

Code:. ./vars

Code:./clean-all

Code:./build-ca

# just hit enter to the defaults apart from Common Name, this must be unique# call it something like mydomain-ca

Code:./build-key-server server

Code:./build-key client1

# remember that common name must be unique e.g. use mydomain-client1# and YES you want to sign the keys

Code:./build-key client2

# do this step for as many clients as you need.

Code:./build-dh

6. We are almost done now… right we need to create a few config files, you can download my template from here,

Code:cd /etc/openvpn

Code:wget www.designpc.co.uk/downloads/server.conf

# make sure you change a few things in the server.conf file, like DNS# servers

Code:touch server-tcp.log

~ this makes the log file..

Code:

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

17 de 32 06/11/2008 02:10 p.m.

Page 18: Tutorial Openvpn

touch ipp.txt

this makes the IP reservation list.

7. You need to make a few changes to OpenVPN itself. Go to..

Code:cd /etc/init.d/

edit the openvpn file

#Uncomment this line (line 119)

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

Add these lines below it, changing 123.123.123.123 to your public IP address,

Code:iptables -t nat -A POSTROUTING -s 192.168.2.3 -j SNAT --to 123.123.123.123 iptables -t nat -A POSTROUTING -s 192.168.2.4 -j SNAT --to 123.123.123.123 iptables -t nat -A POSTROUTING -s 192.168.2.5 -j SNAT --to 123.123.123.123 iptables -t nat -A POSTROUTING -s 192.168.2.6 -j SNAT --to 123.123.123.123 iptables -t nat -A POSTROUTING -s 192.168.2.7 -j SNAT --to 123.123.123.123 iptables -t nat -A POSTROUTING -s 192.168.2.8 -j SNAT --to 123.123.123.123 iptables -t nat -A POSTROUTING -s 192.168.2.9 -j SNAT --to 123.123.123.123 iptables -t nat -A POSTROUTING -s 192.168.2.10 -j SNAT --to 123.123.123.123

Now install iptables if you don’t have it already,

Code:yum install iptables

#test it

service iptables startservice iptables stop

8. Now for the client config files. If your client is a Windows machine, make sure you have installed OpenVPN, use thegui version, downloadable from here;

http://www.designpc.co.uk/downloads/….3-install.exe

You need to copy a few files from the server to your client machine, here is the list, located in /etc/openvpn/keys/

## WARNING ## Use a secure way of transferring these files off the server, something like WinSCP.

ca.crtclient1.csrclient1.keyclient1.crt

Put these files in this directory C:\Program Files\OpenVPN\config\

Now you need to make a client config, here is an example..

PHP Code:clientdev tunproto tcp

#Change my.publicdomain.com to your public domain or IP addressremote my.publicdomain.com 1194

resolv

-retry infinitenobindpersist-keypersist-tun

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

18 de 32 06/11/2008 02:10 p.m.

Page 19: Tutorial Openvpn

ca ca

.crtcert client1.crtkey client1.key

ns

-cert-type server

#DNS Options here, CHANGE THESE !!push “dhcp-option DNS 123.123.123.123″push “dhcp-option DNS 123.123.123.124″

comp-lzo

verb 3

Make sure you edit any of the lines with comments above them.

Call this file client1.opvn and put it in C:\Program Files\OpenVPN\config\

Make sure the file extension is .opvn not .txt

To connect right click on OpenVPN in the taskbar >> Connect

To test ping 192.168.2.1

If you get a response, you in business

Tags:Posted in: Temas Varios, VPN Linux |Comentarios (0)

Tipo de Openvpn22nd Octubre 2008

Tipo de Openvpn

1 Introduccion

¿Qué es una VPN?

La VPN es una tecnología de red que permite una extensión de la red local sobre una red pública o no controlada, comopor ejemplo Internet.

El ejemplo más común es la posibilidad de conectar dos o más sucursales de una empresa utilizando como vínculoInternet, permitir a los miembros del equipo de soporte técnico la conexión desde su casa al centro de cómputo, o que unusuario pueda acceder a su equipo doméstico desde un sitio remoto, como por ejemplo un hotel. Todo esto utilizando lainfraestructura de Internet.

Para hacerlo posible de manera segura es necesario proveer los medios para garantizar la autenticación, integridad yconfidencialidad de toda la comunicación:

Autenticación y autorización: ¿Quién está del otro lado? Usuario/equipo y qué nivel de acceso debe tener.

Integridad: La garantía de que los datos enviados no han sido alterados.

Confidencialidad: Dado que los datos viajan a través de un medio potencialmente hostil como Internet, los mismos sonsusceptibles de interceptación, por lo que es fundamental el cifrado de los mismos. De este modo, la información no debepoder ser interpretada por nadie más que los destinatarios de la misma.Tipos de VPNVPN de acceso remoto

Éste es quizás el modelo más usado actualmente y consiste en usuarios o proveedores que se conectan con la empresadesde sitios remotos (oficinas comerciales, domicilios, hotel, aviones, etcétera) utilizando Internet como vínculo deacceso. Una vez autenticados tienen un nivel de acceso muy similar al que tienen en la red local de la empresa. Muchasempresas han reemplazado con esta tecnología su infraestructura dialup (módems y líneas telefónicas), aunque porrazones de contingencia todavía conservan sus viejos modems.

VPN punto a punto

Este esquema se utiliza para conectar oficinas remotas con la sede central de organización. El servidor VPN, que poseeun vínculo permanente a Internet, acepta las conexiones vía Internet provenientes de los sitios y establece el túnel VPN.Los servidores de las sucursales se conectan a Internet utilizando los servicios de su proveedor local de Internet,típicamente mediante conexiones de banda ancha. Esto permite eliminar los costosos vínculos punto a punto

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

19 de 32 06/11/2008 02:10 p.m.

Page 20: Tutorial Openvpn

tradicionales, sobre todo en las comunicaciones internacionales…. es mas comun el anterior punto. tambien llamadatecnologia de tunel o tunneling

VPN interna

Este esquema es el menos difundido pero uno de los más poderosos para utilizar dentro de la empresa. Es una variante deltipo “acceso remoto” pero, en vez de utilizar Internet como medio de conexión, emplea la misma red de área local (LAN)de la empresa. Sirve para aislar zonas y servicios de la red interna. Esta capacidad lo hace muy conveniente para mejorarlas prestaciones de seguridad de las redes inalámbricas (WiFi).

Un ejemplo muy clásico es un servidor con información sensible, como las nóminas de sueldos,

ubicado detrás de un equipo VPN, el cual provee autenticación adicional más el agregado del cifrado, haciendo posibleque sólo el personal de RRHH habilitado pueda acceder a la información.

Certificado digital

Un Certificado Digital es un documento digital mediante el cual un tercero confiable (una autoridad de certificación)garantiza la vinculación entre la identidad de un sujeto o entidad y su clave pública.Si bien existen varios formatos decertificado digital, los más comúnmente empleados se rigen por el estándar UITT X.509v3. El certificado contieneusualmente el nombre de la entidad certificada, un número serial, fecha de expiración, una copia de la clave pública deltitular del certificado (utilizada para la verificación de su firma digital), y la firma digital de la autoridad emisora delcertificado de forma que el receptor pueda verificar que el esta última ha establecido realmente la asociación.

Formato de Certificado Digital

El certificado digital está formado por:

Clave públicaClave privadaInformación del PropietarioInformación del emisor del Certificado

2 Paquetes Necesarios

openvpn2.0.71.el4.rflzo1.084.2.el4.rfopenssldevel0.9.7a43.4openssl0.9.7a43.4

3 Procedimientos

Configurando tu propia Autoridad Certificadora (CA Certificate Authority) y generacion de certificados y par de llavespara el Servidor OpenVPN y un cliente VPN.El primer paso al construir una VPN con OpenVPN 2.0 es establecer una PKI (Infraestructura de LLave Publica PublicKey Infrastructure), esta PKI consiste de:

Un certificado aparte (tambien conocido como llave publica) y una llave privada para el servidor y cada cliente.

Un Certificado Mastro para la Autoridad Certificadora (CA) y su llave la cual es usada para firmar cada certificado de elservidor y el cliente. Generar la llave y el certificado Maestro para la Autoridad Certificadora (CA).

En esta seccion se generaran los certificados/llaves para la CA, el server y el cliente. Para la administracion de la PKIusaremos los scripts que vienen con OpenVPN (easyrsa) pero en este caso usaremos la nueva version que tiene muchasmejoras, es esta easyrsa 2.0.

Tags:Posted in: Linux Network Plus, Temas Varios, VPN Linux, VPN Windows |Comentarios (0)

OpenVPN Ejemplo de configuración con clavesasimétricas18th Octubre 2008

En el presente trabajo se mostrará con un ejemplo práctico la implementación de una red privada virtual tanto del lado delcliente como del servidor, incluyendo la generación de certificados de seguridad.

Se tomará como caso de estudio una situación bastante común como es la de un usuario remoto que necesita conectarse ala red de la oficina mediante Internet pasando a tomar parte de dicha red como si fuese un puesto más de la misma.

Contenido

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

20 de 32 06/11/2008 02:10 p.m.

Page 21: Tutorial Openvpn

[ocultar]

1 Instalación del software2 Preparando la prueba3 Arquitectura4 Certificados y claves RSA5 Hoja de ruta6 Retoques en los firewalls7 Arranque automático8 A probar – Por fin !!!9 Bibliografía

Instalación del software

Se necesita instalar lo siguiente:

Paquete en Debian o Ubuntu en otro Linux

OpenSSL aptitude install openssl Descargar de http://www.openssl.org y seguir lasinstrucciones

LZO (opcional si se quierecompresión ) aptitude install liblzo1 http://www.oberhumer.com/opensource/lzo/

OpenVPN aptitude install openvpn http://prdownloads.sourceforge.net/openvpn/openvpn-1.6.0.tar.gz

Controlador tun/tap Ya incluido en kernelsuperior a 2.4.7

Preparando la prueba

Para poder hacer las pruebas sin tener que contar con varias máquinas reales, vamos a valernos de máquinas virtuales,que en este caso generaremos con vmware-server, aprovechando que recientemente lo liberaron como “free”.

Instalaremos linux en una máquina virtual y luego la cloraremos 3 veces de modo de contar con dos servidores y dosclientes.

Es decir, para hacerlo más interesante, estaremos suponiendo entonces que el usuario remoto no se conectarádirectamente a Internet sino que en su hogar también tiene una red doméstica que sale al mundo a través de unrouter/firewall, como suele verse cada vez con más frecuencia, sobre todo cuando tenemos hijos que quieren jugar con lacomputadora de la familia mientras nosotros queremos trabajar con el notebook y todos necesitamos salir a Internet.

Eso permitirá mostrar alguna configuración adicional que se necesita implementar a los efectos de que todos los pc’s de lacasa puedan conectarse transparentemente a la oficina, aunque tal vez no sea lo más adecuado si los demás pc’s son losde los niños.

Arquitectura

Router de Casa: ifconfig eth0 192.168.6.1 netmask 255.255.255.252 ifconfig eth1 192.168.1.1 netmask 255.255.255.0

Router de la Oficina ifconfig eth0 192.168.6.2 netmask 255.255.255.252 ifconfig eth1 10.66.0.1 netmask 255.255.255.0

En este caso no tenemos Internet en medio, por lo que las interfaces eth0 de cada router las pusimos en realidad en lamisma red para que se puedan “ver”.

NOTA: Para que los paquetes puedan pasar de una interfaz a otra en los routers/firewalls se debe habilitar el ruteo entreellas.

En el caso de Linux bastará con decirle al kernel que queremos que dicho ruteo se lleve a cabo, lo cual lograremos con elsiguiente comando: echo 1 > /proc/sys/net/ipv4/ip_forward

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

21 de 32 06/11/2008 02:10 p.m.

Page 22: Tutorial Openvpn

Eso solo tendrá efecto hasta que apaguemos la computadora, con lo cual si se desea rutear permanentemente debemosindicarlo en algún script de inicio del sistema.

En el caso de Ubuntu podemos indicarlo simplemente cambiando un 0 por un 1 en la línea correspondiente de/etc/sysctl.conf

Ej.

net/ipv4/ip_forward=1

También es posible habilitar el “forwarding” desde el script de OpenVPN.

Certificados y claves RSA

Como explicamos en la aproximación teórica previa, existen dos formas de lograr seguridad, uno basado en SSL/TLSmediante certificados y claves RSA y otro en mediante claves estáticas pre-compartidas.

En este caso usaremos SSL/TLS ya que es más seguro.

Para construir certificados y claves RSA usamos el comando “openssl”.

Para poder generar certificados vamos a necesitar un “certificado raíz”.

En nuestro caso generaremos uno propio y por lo tanto seremos nuestra propia CA (Autoridad Certificadora).

Hoja de ruta

1.Crear un certificado-CA con el cual firmaremos y revocaremos certificados de clientes2.Crear un certificado y una clave pública para los clientes3.Firmar ese certificado usan el certificado-CA4.Distribuir la clave y certificados a los clientes5.Configurar los scripts del servidor y de los clientes

Para los primeros 3 pasos vamos a utilizar una serie de scripts que nos facilitarán la vida dado que invocan los comandosadecuados con unos cuantos parámetros por default.

Generales

1. usr@ubusrv:~$ mkdir /etc/openvpn2. usr@ubusrv:~$ cp /usr/share/doc/openvpn/examples/easy-rsa /etc/openvpn3. usr@ubusrv:~$ cd /etc/openvpn/easy-rsa4. editar el archivo vars y cambiar las ultimas 5 variables a nuestro gusto sin dejar ninguna vacía:

export KEY_COUNTRY=URUGUAY

export KEY_PROVINCE=MO

export KEY_CITY=Montevideo

export KEY_ORG=”OpenVPN-TEST”

export KEY_EMAIL=”[email protected]

5. usr@ubusrv:~$ . vars6. usr@ubusrv:~$ ./clean-all

Clave Diffie-Hellman y CA

Ahora creamos la clave Diffie-Hellman con el script build-dh lo cual tardará varios minutos

usr@ubusrv:~$ ./build-dh

Generating DH parameters, 1024 bit long safe prime, generator 2

This is going to take a long time

….+……..+.+……+…………………..+………………(…)

Creamos el certificado para la CA

usr@ubusrv:~$ ./build-ca

Generating a 1024 bit RSA private key

………………………………..++++++

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

22 de 32 06/11/2008 02:10 p.m.

Page 23: Tutorial Openvpn

writing new private key to ‘ca.key’

—–

A esta altura deben haber quedado creados los siguientes archivos en el subdirectorio keys:

dh1024.pem

ca.crt

ca.keyPar Certificado/Clave del servidor

De los diferentes datos que se irán preguntando el que realmente importa es el “Common Name” dado que el mismo seráutilizado “textualmente” en la configuración de los clientes.

Usaremos Common Name = openvpn-server

También aparecerán dos preguntas a las que responderemos afirmativamente.

usr@ubusrv:~$ ./build-key-server openvpn-server

Eso creará los archivos:

openvpn-server.crt

openvpn-server.key

openvpn-server.csrHasta ahora hemos logrado tener el certificado de la CA y el certificado y clave para el primer PC de la red virtual.Par Certificado/Clave de los clientes

Es muy similar a lo realizado para el servidor pero con otro script.

Nuevamente poner atención al Comman Name = openvpn-client1

usr@ubusrv:~$ ./build-key openvpn-client1

Eso creará los archivos:

openvpn-client1.crt

openvpn-client1.key

openvpn-client1.csrDistribución de claves y certificados

El paso siguiente será determinar cuales archivos de los generados deberán quedar en el servidor y cuales deben serenviados a los clientes.

ATENCIÓN: Necesitará enviar algunos de los archivos por algún canal seguro a sus clientes, para lo cual debe asegurarseque el mecanismo de seguridad de dicho envío sea adecuado, dado que de otro modo de nada servirá todo el trabajo quenos estamos tomando.

A continuación se presenta una tabla en la que se muestra en donde va cada archivo y si debe ser celosamente guardadoen secreto o no.

Archivo Descripción Ubicación Secreto

dh1024.pem Parámetros Diffie Hellman servidor -

ca.crt Certificado raíz CA servidor y todos los clientes No

ca.key Clave raíz CA únicamente la máquina encargada de firmar Si

openvpn-server.crt Certificado del servidor servidor No

openvpn-server.key Clave del servidor servidor Si

openvpn-client1.crt Certificado del cliente cliente No

openvpn-client1.key Clave del cliente cliente Si

Configuración de script del Servidor

1. usr@ubusrv:~$ cd /etc/openvpn2. usr@ubusrv:~$ mkdir ccd3. usr@ubusrv:~$ gzip -d /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

23 de 32 06/11/2008 02:10 p.m.

Page 24: Tutorial Openvpn

Con eso tendremos un archivo llamado server.conf al que le haremos varias modificaciones para adaptarlo a nuestrasnecesidades:

Variable Valor Comentario

port 1194 puede cambiarse por cualquier otro que queramos, pero los clientes debensaber dicho valor para saber a donde conectarse

proto tcp también pude ser udp pero el cliente debe configurarse de la misma forma

dev tun tun se usa para conexiones de clave asimétrica.tap puede ser usado paraconfiguraciones más sencillas de clave simétrica pre-compartida

ca ca.crt El certificado CA que generamos

cert openvpn-server.crt El certificado del servidor que generamos

key openvpn-server.key La clave privada que generamos

dh dh1024.pem Parámetros Diffie – Hellman

server 10.8.0.0 255.255.255.0 Red virtual a utilizar.Cada cliente debe poder alcanzar dicha red

push “route 10.66.0.0255.255.255.252”

Provocará que el cliente cuando se conecte agregue una ruta adecuada paraalcanzar la red de la oficina

client-config-dir ccd Directorio en donde se agregarán archivos con información de ruteo para cada

cliente que se conecte

route 192.168.1.0 255.255.255.0 Agregará una ruta del lado del servidor para alcanzar la red de la casa

Además será necesario para cada cliente potencial que se conecte, crear un archivo en /etc/openvpn/ccd con el mismonombre del “Common Name” de los mismos.

Esto solo es necesario para los casos en que el cliente no es un puesto conectado directo a Internet sino que se tratad deuna red doméstica, tal cual es el ejemplo que venimos siguiendo.

Ejemplo:

usr@ubusrv:~$ echo “iroute 192.168.1.0 255.255.255.0” > /etc/openvpn/ccd/openvpn-client1Configuración del script del cliente

1. usr@ubusrv:~$ cd /etc/openvpn2. usr@ubusrv:~$ cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf .

Con eso tendremos un archivo llamado client.conf al que le haremos varias modificaciones para adaptarlo a nuestrasnecesidades:

Variable Valor Comentario

client Indica que es una configuración cliente

proto tcp también pude ser udp pero debe coincidir con la configuración del servidor

dev tun tun se usa para conexiones de clave asimétrica.tap puede ser usado para configuraciones mássencillas de clave simétrica pre-compartida

ca ca.crt El certificado CA que generamos

remote 192.168.6.2 443 IP de la interfaz pública del servidor de la oficina y puerto en el que está escuchando elOpenVPN instalado allí

cert openvpn-client.crt

El certificado que generamos en el servidor y copiamos en el cliente por algún método“seguro”

key openvpn-client.key La clave privada que nos generaron en el servidor

Retoques en los firewalls

Hay que tener en cuenta que en este ejemplo trabajamos con máquinas virtuales, dos de ellas haciendo las veces de routerpero sin firewall. Cuando tenemos firewall en los servidores hay que tener en cuenta que se necesita agregar reglas quepermitan el flujo por el nuevo túnel.

Eso es muy fácil de hacer, ya que cuando se establece el túnel, se crean interfaces virtuales “tunX”, que podremos usaren reglas de iptables para filtrar por ellas. También es seguro, ya que el túnel solo permite tráfico desde puntosautorizados, con lo cual tranquilamente podemos permitir todo el tráfico en dichas interfaces. Ej.

iptables -A INPUT -i tun+ -j ACCEPT

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

24 de 32 06/11/2008 02:10 p.m.

Page 25: Tutorial Openvpn

iptables -A FORWARD -i tun+ -j ACCEPT

iptables -A OUTPUT -o tun+ -j ACCEPT

iptables -A FORWARD -o tun+ -j ACCEPT

Arranque automático

El servidor puede arrancarse de forma manual como se explicará en el siguiente párrafo o también puede ejecutar comodemonio. P ara ello existen dos caminos tradicionales.

1.Configurar el servicio xinetd para que escuche en el puerto configurado e invoque al openvpn cuando ingresaalguna conexión.2.Crear un script de inicio en /etc/init.d y configurarlo en los runlevels adecuados.

Personalmente me gusta más la segunda opción y en sitio de OpenVPN hay varios ejemplos para diversas distribuciones.

En dicho script sería conveniente tener una línea similar a la siguiente:

En SuSE:

startproc $OPENVPN_BIN –cd $OPENVPN_DIRCONFIG –config $OPENVPN_FILECONFIG –log-append $log

En Debian / Ubuntu:

openvpn –daemon –writepid $piddir/$bn.pid –config $c –cd $work –log-append $log

A probar – Por fin !!!

Para probar, levantaremos la VPN en forma manual.

En el lado del servidor:

1. usr@ubusrv:~$ cd /etc/openvpn2. usr@ubusrv:~$ openvpn –config server.conf

En el lado del cliente:

1. usr@ubusrv:~$ cd /etc/openvpn2. usr@ubusrv:~$ openvpn –config client.conf

Abrir una terminal en cualquier pc de la casa y hacer algunas pruebas:

ping 10.66.0.1

ping 10.66.0.202

ssh 10.66.0.202

[

Tags:Posted in: Linux Network Plus, VPN Linux, VPN Windows |Comentarios (0)

OpenVPN y Clientes Windows (Roadwarriors)16th Octubre 2008

OpenVPN es una implementacion de VPN SSL la cual usa las extenciones OSI layer 2 o 3 para asegurar redes la cual usalos protocolos SSL/TLS, soporta diferentes medios de autenticacion como certificados, smart cards, y/ousuarios/contraseñas, y permite politicas de control de acceso para usuarios o grupos usando reglas de firewall aplicadas alas interfaces virtuales de la VPN. OpenVPN 2.0 permite multiples clientes conectar a un solo servidor (proceso)OpenVPN sobre un simple puerto TCP o UDP, aquí,

Porque surgen las VPNs

● Intercambio flexible, rápido y seguro de información.● Sucursales en diferentes ubicaciones.● Trabajadores remotos.● Necesidad de altos estándares de seguridad: autenticidad, integridad, y disponibilidad.

Arquitecturas básicas

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

25 de 32 06/11/2008 02:10 p.m.

Page 26: Tutorial Openvpn

Acceso Remoto (Roadwarrior):

Usuarios que se conectan de manera remota (domicilios, hoteles..) utilizando Internet como vía de acceso.

Punto a Punto:

Conexión entre diversos puntos de una Organización a través de Internet.

Interna VLAN:

Utiliza la LAN de la organización como vía de acceso. Sirve para aislar zonas y servicios de la red interna.

Buscando en la web he encontrado abundante información, algunos de ellos muy interesantes, los cuales les dejo al finaldel artículo.

En esta ocasión les dejo los pasos para instalar OpenVPN en Debian, utilizando PKI y en modalidad Roadwarrior.

Instalamos OpenVPN

# apt-get install openvpn

Copiamos los scripts de ejemplo en /etc/openvpn

# cp -a /usr/share/doc/openvpn/examples/easy-rsa /etc/openvpn

Vamos al directorio donde copiamos los scripts

# cd /etc/openvpn/easy-rsa/2.0

. ./vars

./clean-all

./build-ca

Con esto lo que hacemos es:

* Inicializar variables de ambiente para poder trabajar con los siguientes scripts de shell para generar las variables.* Inicializamos el directorio de las claves (borrando potenciales archivos viejos).* build-ca: procedemos a generar el certificado CA.

Deberemos ingresar los datos de la Organización reales (para ser prolijos) y teniendo especial atención en el parámetroCommon Name el cual deberá ser distinto para el caso de la CA, Servidor y los Clientes.

Generamos las credenciales para el Servidor

# ./build-key-server servidor

Nuevamamente debemos repetir los datos ingresados anteriormente, recordando utilizar una denominación diferente de laque usamos para la CA (en el paso anterior).

Generamos las credenciales de los Clientes

# ./build-key cliente1

Esto genera los archivos cliente1.key (llave) y cliente1.crt (certificado).

Creamos los parámetros Diffie-Hellman:

# ./build-dh

Copiamos las credenciales del Servidor en /etc/openvpn

# cp ca.crt ca.key servidor.crt servidor.key dh1024.pem /etc/openvpn

servidor.crt y servidor.key depende del Common Name que elejimos cuando creamos las credenciales para el servidor.

Pasamos las credenciales a los clientes

Estos archivos son cliente1.crt, cliente1.key y ca.crt, se los podemos pasar vía sftp o scp, pero siempre tratando de quesea seguro.

los archivos cliente1.crt y cliente1.key dependen del Common Name que ingresamos cuando creamos las credenciales delos clientes.

Creamos la configuración del Servidor OpenVPN

# vi /etc/openvpn/server.conf

port 1194proto udpdev tunpersist-tun

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

26 de 32 06/11/2008 02:10 p.m.

Page 27: Tutorial Openvpn

ca ca.crtcert servidor.crtkey servidor.keydh dh1024.pem

#Direcciones que se asignaran a los#clientes, el server es .1server 10.1.1.0 255.255.255.0

ifconfig-pool-persist ipp.txt

#Ruta para que los clientes alcancen la red local del server (1.0/24)push “route 192.168.1.0 255.255.255.0″

#Para que los clientes se visualicen entre ellos#Debe ir junto con la opción routeback en el shorewallclient-to-client

keepalive 10 120comp-lzouser nobodygroup nogrouppersist-keypersist-tunstatus openvpn-status.logverb 4

Nota: La red local de la VPN es 192.168.1.0/24 y la red de la VPN es 10.1.1.0/24. El usuario remoto, si está detrás de unNAT debe tener una dirección local no perteneciente a la red de la VPN.

Configuramos el cliente

Dentro de la carpeta c:\archivos de programa\openvpn\config creamos un archivo llamado cliente1.ovpn.

tls-clientclientdev tunproto udpremote host.dominio.comfloat #debido a que la IP de arriba es dinamicaresolv-retry infinitenobindpersist-keypersist-tunca “C:\\Archivos de programa\\OpenVPN\\ca.crt” #Tener cuidado con el doble backslash (\\)cert “C:\\Archivos de programa\\OpenVPN\\cliente1.crt”key “C:\\Archivos de programa\\OpenVPN\\cliente1.key”comp-lzoverb 4

Nota: Copiar dentro de esta misma carpeta los archivos cliente.crt, cliente.key y ca.crt.

Ejecutamos el servicio OpenVPN en el servidor:

# /etc/init.d/openvpn start

Nos conectamos desde el cliente (Windows)

- Ejecutamos el GUI de OpenVPN- Clic derecho en el ícono de OpenVPN, elegimos cliente (es el nombre del archivo con extensión .ovpn) y luego connect.

Tags:Posted in: VPN Linux |Comentarios (0)

INSTALACIÓN Y CONFIGURACIÓN DE OPENVPN13th Octubre 2008

INSTALACIÓN Y CONFIGURACIÓN DE OPENVPN

Para poder realizar la instalación y configuración de la aplicación OpenVPN, antesde nada habrá que descargar los paquetes necesarios a tal efecto. En este caso, siambas máquinas funciona bajo GNU/LINUX habrá que instalar openVPN en ambas yconfigurar una como servidor y otra como cliente. En el caso de que el servidor funcione

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

27 de 32 06/11/2008 02:10 p.m.

Page 28: Tutorial Openvpn

bajo Linux pero el cliente sea una máquina Windows, habrá que instalarle el clienteadecuado para poder establecer la red virtual.Comencemos con la instalación de los paquetes. Si bien con openvpn seríasuficiente, en el caso de que se quiera utilizar con certificados, habrá que instalar openssh(si no está ya instalado).aptitude install openvpn opensshSEGURIDAD EN LA CONEXIÓN VPNGENERACIÓN DE LA CLAVE SECRETAMediante la siguiente directiva se genera la clave privada. Esa clave tienen queposeerla tanto el servidor como el cliente, con lo cual, tras generarla en el servidor, hayque colocarla en el directorio correcto del mismo y a su vez copiarla al cliente mediante unmedio que no comprometa la seguridad de la clave. En este caso se ha optado porcopiarlo al cliente mediante ssh.openvpn –genkey –secret giltza.keycp giltza.key /etc/openvpnscp giltza.key ip_del_servidor:/etc/openvpn/GENERACIÓN DE CERTIFICADOS (MODO GENERAL)En el caso de que se quiera aumentar la seguridad en la VPN, podría optarse porprotegerlo mediante clave secreta y certificados. Las claves privadas tendrán quemantenerse siempre en privado, los ficheros con los certificados en cambio puedenpublicarse o compartirse con total libertad.Se seleccionará en este ejemplo el servidor como máquina generadora y gestorade las claves y los certificados.En primer lugar hay que edita el fichero openssl.cnf (/usr/share/ssl/openssl.cnf), conlas siguientes modificaciones:· hacer que la opción dir apunte al directorio que se haya creado (habrá que crearlo)como espacio de trabajo para las claves.· Incrementar default_days (si es que interesa) para que la VPN tenga el tiempo devalidez que se estime oportuno (por defecto es de un año).1/6· Establecer certificate y private_key para que apunten al certificado y a la clavemaestra que se generará a continuación.Se pueden hacer más modificaciones para adaptar openssl.cnf a nuestrasnecesidades, pero no es necesario hacer más modificaciones para poder crear loscertificados.Lo primero, se generará la Autoridad de Certificación (CA), un par decertificado/clave privada para los próximos 10 años (o los que se estimen oportunos):openssl req -nodes -new -x509 -keyout my-ca.key -out my-ca.crt -days 3650Ahora llega el turno de crear un par certificado/clave tanto para el servidor comopara el cliente.openssl req -nodes new -keyout servidor.key -out servidor.csropenssl ca -out servidor.crt -in servidor.csropenssl req -nodes new -keyout cliente.key -out cliente.csropenssl ca -out cliente.crt -in cliente.csrUna vez generados los pares de claves tanto para el servidor como para el cliente,hay que copiar de forma segura cliente.crt, cliente.key y my-ca.crt al cliente.Finalmente basta con establecer los parámetro Diffie-Hellman en el servidor con elsiguiente comando:openssl dhparam -out dh1024.pem 1024Existen más métodos para generar claves y certificados, incluso pueden comprarsea una entidad certificadora, pero se ha utilizado esta forma a modo de explicación, congasto cero.GENERAR CERTIFICADOS MEDIANTE UTILIDAD EASY-RSA OPENVPNOtro modo de generar las claves y los certificados generados en el apartadoanterior es valerse de los scripts que la propia aplicación de OpenVPN incluye en sudirectorio /usr/share/doc/openvpn/easy-rsa, los cuales facilitan bastante la tarea.Lo primero será copiar el directorio easy-rsa a /etc/openvpn y situarse en dichodirectorio.cp -a /usr/share/doc/openvpn/easy-rsa /etc/openvpncd /etc/openvpn/easy-rsaPara generar la entidad certificadora:./clean-all./build-ca2/6Al ejecutar build-ca se solicitan los datos necesarios a fin de generar la entidadcertificadora:En éste último paso se nos pedirá una serie de información sobre nuestrared/empresa que debemos llenar lo más fielmente posible:Generating a 1024 bit RSA private key……………………………………………………………………………….……………………………++++++…………………++++++writing new private key to ‘ca.key’—–

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

28 de 32 06/11/2008 02:10 p.m.

Page 29: Tutorial Openvpn

You are about to be asked to enter information that will be incorporatedinto your certificate request.What you are about to enter is what is called a Distinguished Name or a DN.There are quite a few fields but you can leave some blankFor some fields there will be a default value,If you enter ‘.’, the field will be left blank.—–Country Name (2 letter code) [KG]:ESState or Province Name (full name) [NA]:EuskadiLocality Name (eg, city) [BISHKEK]:BilboOrganization Name (eg, company) [OpenVPN-TEST]:pfc-serverOrganizational Unit Name (eg, section) []:testCommon Name (eg, your name or your server’s hostname) []:nagoreEmail Address [[email protected]]:[email protected] bien el resto de los datos puede rellenarse como mejor convenga, la variableCommon Name es muy importante, ya que cuando una máquina trate de comprobar lavalidez del certificado lo hará contra el FQDN de la máquina certificadora, con lo cual elCommon Name tiene que coincidir con ella.GENERAR EL CERTIFICADO Y LA CLAVE DE ENCRIPTACIÓN PARA EL SERVIDORAl generar el certificado del servidor volverán a solicitarse los mismos datos quepara generar la entidad certificadora. Nuevamente pueden generarse como mejorconvenga, pero teniendo cuidado de no escoger el FQDN utilizado para la CA. En esteejemplo se ha tomado server, como Common Name../build-key-server serverEste paso genera dos archivos en el directorio /etc/openvpn/easy-rsa/keys, quehabrá que copiar al directorio /etc/openvpn: server.crt y server.keyEl siguiente paso es generar los certificados y las claves de seguridad de cada unode los clientes. Los archivos obtenidos con el siguiente paso tendrán que almacenarse enla carpeta /etc/openvpn de cada cliente.Para generar el certificado y las claves privadas se ejecuta en el servidor, dentrodel directorio /etc/openvpn/easy-rsa/ :./build-key client13/6En este último caso también habrá que responder a las preguntas anteriores delmodo conveniente. El parámetro cliente1 pasado como parámetro distingue el certificadodel certificado de otro cliente. Podrán crearse tantos clientes como sean necesarioscambiando el nombre que se le pasa como parámetro.GENERAR PARÁMETROS DIFFIE-HELLMAN./build-dhUna vez generado tanto la CA, como los certificados del servidor y los de losclientes, habrá que asegurarse de que tanto el cliente como el servidor tienen lossiguientes archivos:Archivos en el Servidor: ca.crt, ca.key, server.key server.crt dh1024.pemArchivos en el Cliente: ca.crt, client1.crt, client1.keyCONFIGURACIÓN DE CONEXIÓN HOST TO HOSTEn esta configuración “host to host” se logra que el intercambio de paquetes entredos máquinas se realice de forma encriptada. Para ello se crea una interfaz virtual conuna IP privada a cada extremo. Se tomará como ejemplo la 192.168.2.1 como la IP delservidor y la 192.168.2.2 como la IP del cliente. Cualquier paquete que viaje entre ambasdirecciones lo hará encriptado.CONFIGURACIÓN DEL SERVIDOR#/etc/openvpn/server.conf# dispositivo de tuneldev tun# ifconfig ip_del_servidor ip_del_clienteifconfig 192.168.2.1 192.168.2.2# Clave del servidorsecret /etc/openvpn/giltza.key#puerto (por defecto el puerto de VPN es el 1194)port 1194#usuario bajo el cual se ejecutará la VPN;user nobody;group nobody# opciones, comprimir con lzo, ping cada 15 segs, verbose 1 (bajo)comp-lzoping 15verb 14/6CONFIGURACIÓN DEL CLIENTE#/etc/openvpn/cliente1.conf# IP publica del servidor. En caso de no tener una IP pública fija, optar por opciones #como dyndns.remote pfc-server.dyndns.org# puerto

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

29 de 32 06/11/2008 02:10 p.m.

Page 30: Tutorial Openvpn

port 1194# dispositivo tuneldev tun# ifconfig ip_del_cliente ip_del_servidortun-mtu 1500ifconfig 192.168.2.2 192.168.2.1# clave privada, giltza.key (en este caso)# Una posible ruta para la key en windows está comentada.#secret “c:\program files\company branded vpn\config\key.txt”secret /etc/openvpn/giltza.key# enable LZO compressioncomp-lzo# ping cada 10 segsping 10# compresión lzocomp-lzo# verbose moderado, callar mas de 10 mensajes igualesverb 4mute 10CONFIGURACIÓN DE CONEXIÓN ROAD WARRIORCONFIGURACIÓN DEL SERVIDOR#/etc/openvpn/server.conf# dispositivo tuneldev tun# Claves y certificadosca ca.certcert server.crtkey server.keydh dh1024.pem# Direcciones que se asignarán a los clientes. Diferentes de las de la subred del servidor. # La IP delservidor en la vpn será 192.168.2.1server 192.168.2.0 255.255.255.0ifconfig-pool-persist ipp.txt# Ruta para que los clientes alcancen la red local del servidor.5/6# Hace que un road warrior pueda “ver” la red interna del servidorpush “route 192.168.1.0 255.255.255.0”keepalive 10 120comp-lzouser nobodygroup nobodypersist-keypersist-tunstatus openvpn-status.logverb 4CONFIGURACIÓN DEL CLIENTE#/etc/openvpn/client.conf# Indicamos que algunas configuraciones las tomará del servidorclient# Dispositivo tuneldev tunproto udp# Dirección real del servidorremote pfc-server.dyndns.orgport 1194resolv-retry infinite# nobind –> para asegurarse de que solo actue como cliente y nunca como servidornobindpersist-keypersist-tun# Claves y certificadosca ca.crtcert client1.crtkey client1.keycomp-lzoverb 4

Tags:Posted in: Temas Varios, VPN Linux, VPN Windows |Comentarios (0)

RoadWarrior En OpenVPN debian

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

30 de 32 06/11/2008 02:10 p.m.

Page 31: Tutorial Openvpn

13th Octubre 2008

Una configuración RoadWarrior es aquella en la cual se tiene una red privada con uno o varios clientes que accesarán a lared como si fueran parte de ella (arquitectura host-to-net). El presente tutorial explica como configurar correctamente elopenvpn 2.0.9-4 en un Debian Etch que ya tiene configurado Shorewall. Tomé como base el tutorial de la configuraciónpara CentOS y lo modifiqué de acuerdo a lo que yo quería.

Primero instalamos el openvpn:

apt-get install openvpn

El openvpn viene con un directorio llamado easy-rsa, que tiene scripts bastante útiles para la configuración. Estedirectorio lo copiamos a /etc/openvpn

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

Ahora nos vamos a ese directorio recién creado y ejecutamos los siguientes comandos

. vars

./clean-all

./build-ca

Con ellos lo que haremos es:* Inicializar variables de ambiente para poder trabajar con los siguientes scripts de shell para generar las variables* Inicializamos el directorio de las claves (borrando potenciales archivos viejos)* build-ca: procedemos a generar el certificado CA

Nos pedirá datos sobre la organización. No poner cualquier cosa ya que las preguntas se van a repetir más adelante ydebemos estar seguros de lo que habíamos escrito. En Common Name debemos poner cualquier cosa pero ponerla

Una vez creado el Certificate Authority (CA), creamos la llave del Servidor

./build-key-server servidor

En Common Name ponemos Servidor u otro nombre pero que sea diferente al anterior

Con este paso se crearon dos archivos (servidor.crt y servidor.key). Estos archivos debemos copiarlos al directorio/etc/openvpn

Ahora generamos las claves de los clientes. Debemos ejecutar los mismos para cada cliente:

./build-key cliente1

Esto genera los archivos cliente1.key (llave) y cliente1.crt (certificado)

Creamos los parámetros Diffie-Hellman:

./build-dh

Ahora todos los archivos creados menos los de los clientes deben ser copiados a /etc/openvpn/, es decir ca.crt, ca.key,server.crt, server.key y dh1024.pem

Ahora pasamos los archivos necesarios a los clientes. Estos archivos son clientex.crt, clientex.key y ca.crt, se lospodemos pasar vía sftp o scp, pero siempre tratando de que sea seguro.

La configuración del servidor la ponemos en /etc/openvpn/server.conf

port 1194proto udpdev tunpersist-tunca ca.crtcert server.crtkey server.keydh dh1024.pem

#Direcciones que se asignaran a los#clientes, el server es .1server 10.1.1.0 255.255.255.0

ifconfig-pool-persist ipp.txt

#Ruta para que los clientes alcancen la red local del server (1.0/24)push “route 192.168.1.0 255.255.255.0″

#Para que los clientes se visualicen entre ellos#Debe ir junto con la opción routeback en el shorewall

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

31 de 32 06/11/2008 02:10 p.m.

Page 32: Tutorial Openvpn

client-to-client

keepalive 10 120comp-lzouser nobodygroup nogrouppersist-keypersist-tunstatus openvpn-status.logverb 4

La red local de la VPN es 192.168.1.0/24 y la red de la VPN es 10.1.1.0/24. El usuario remoto, si está detrás de un NATdebe tener una dirección local no perteneciente a la red de la VPN.

La configuración de los clientes sería así:

clientdev tunproto udpremote host.dominio.comfloat #debido a que la IP de arriba es dinamicaresolv-retry infinitenobindpersist-keypersist-tunca “D:\\Archivos de programa\\OpenVPN\\ca.crt” #Tener cuidado con el doble backslash (\\)cert “D:\\Archivos de programa\\OpenVPN\\clientx.crt”key “D:\\Archivos de programa\\OpenVPN\\clientx.key”comp-lzoverb 4

Ahora solo falta inicializar en los clientes, para ello es necesario el siguiente código:

openvpn –config “ruta_cliente.ovpn”

En este caso no son necesarios los \\, con uno solo basta.

Con las líneas de arriba se arma la VPN, ahora solo falta modificar el firewall para que esa nueva interfaz sea procesada ysus paquetes sean aceptados. Uso shorewall como frontend de iptables, y las modificaciones necesarias son las siguientes:/etc/shorewall/zones (agregamos la nueva zona llamada road)

#ZONE TYPE OPTIONS IN OUT# OPTIONS OPTIONSroad ipv4

/etc/shorewall/interfaces

#ZONE INTERFACE BROADCAST OPTIONSroad tun+ detect routeback

El Broadcast y las opciones se ponen siempre y cuando se pueda accesar desde la red a los usuarios de la VPN

/etc/shorewall/tunnels

#TYPE ZONE GATEWAY GATEWAY ZONEopenvpnserver:1194 net 0.0.0.0/0

openvpnserver puede ser reemplazado por openvpn, aunque no se recomienda debido a que este último no soporta aclientes detrás de un NAT.

/etc/shorewall/policy

#SOURCE DESTINATION POLICYroad loc ACCEPT

Aceptamos todo el tráfico proveniente de la VPN

Reiniciamos el shorewall e iniciamos el openvpn y todo debería funcionar

Tags:Posted in: Linux Network Plus, Temas Varios, VPN Linux |Comentarios (0)

Wordpress Theme by Lucky Themes - Wordpress Themes. Powered by Wordpress.

Entries (RSS) and Comments (RSS)

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

32 de 32 06/11/2008 02:10 p.m.