Sei sulla pagina 1di 32

Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.

com/ncastillo/category/vpn-linux/

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
L M X J V S D
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
« Oct

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


1 de 32 06/11/2008 02:10 p.m.
Un Mundo Libre OpenSource » VPN Linux http://blogs.clavedigital.com/ncastillo/category/vpn-linux/

Horde Groupware Webmail en CentOS 5


horde groupware webmail
Filtro de contenidos de páginas web con Squid y Squidguard
Squid-SquidGuard en Ubutntu (Debian)
Añadiendo filtrado de contenidos al Squid

Noticias CLAVE Digital


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

Comentarios Libres
marketing y publicidad el Añadiendo filtrado de contenidos al Squid
base de datos de argentina ,chile , brasil, españa y uruguay el Active Directory Integracion

Categorias Libres
Cisco 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)

Etiquetas
Añadir nueva etiqueta Bloquear MSN Webmail WordPress Upgrade

home
OpenVPN COMO
OpenVPN en Centos, RHEL, FC
OpenVPN RoadWarrior Centos 5
OpenVPN, Manual para Novatos
PRIMEROS PASOS EN LINUX
Quien Soy?
SAMBA como PDC

Manual OpenVPN
25th 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ón
en 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 utiliza
este 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 que
conectará a muchos clientes VPN entre si.

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


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

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 pueden
acceder 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 Clientes
Windows 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 sin
conexió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 al
conectarse 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és
del 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únel
VPN 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ósitos
yum 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:

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


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

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

Compilar OpenVPN:

cd openvpn-x.x.
./configure
make
make install

Si no se descargó la biblioteca LZO, añada –disable-lzo al comando configure. Se pueden habilitar otras opciones como el soporte para
pthread(./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/openvpn


cp /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 de
la siguiente forma, por ejemplo:

export KEY_COUNTRY=MX
export KEY_PROVINCE=MiEstado/Provincia
export KEY_CITY=MiCiudad
export KEY_ORG=”midominio.com”
export KEY_EMAIL=”fulanito@modominio.com”

• 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/./vars
sh easy-rsa/2.0/clean-all
sh easy-rsa/2.0/build-ca
cd /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 siguiente
forma:

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:

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


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

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 cliente
sh easy-rsa/2.0/build-key cliente1
sh 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 nombre
servidorvpn-udp-1194.conf

port 1194
proto udp
dev tun
#—- Seccion de llaves —–
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh1024.pem
#—————————-
server 10.11.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status-servidorvpn-udp-1194.log
verb 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 encuentran
conectados 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 es
abajo si ninguna respuesta ocurre por 120 segundos.

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


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

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 no
necesitan 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 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 Wcaracteres en la consola
par los paquetes de lectura y escritura, mayúsculas es usada por paquetes TCP/UDP minúsculas es usada para paquetes
TUN/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 le
sistema, 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 siguiente
contenido:

#!/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]

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


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

Acerca de shorewall

Shorewall (Shoreline Firewall) es una robusta y extensible herramienta de alto nivel para la configuración de muros cortafuego. Shorewall
solo necesita se le proporcionen algunos datos en algunos ficheros de texto simple y éste creará las reglas de cortafuegos correspondientes a través
de 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 como
configuració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 OPTIONS


fw firewall
net ipv4
loc 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, virtual
tun 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 para
acceder 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 GATEWAY


net ppp0 detect
loc 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:BURST


loc net ACCEPT
fw net ACCEPT
# OpenVpn —-
rem fw ACCEPT
fw rem ACCEPT
net rem ACCEPT
rem net ACCEPT
# ————
net all DROP info
all 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á el
puerto 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

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


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

192.168.2.0/24:

#TYPE ZONE GATEWAY GATEWAY


# ZONE
openvpnserver: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 fue
especificado 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 los
servicios 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 1194
ACCEPT 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:Program
FilesOpenVPN 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 de
cliente1-udp-1194.ovpn.

Tendrá la siguiente configuración:

client
dev tun
proto udp
remote dominio-o-ip.del.servidor.vpn 1194
float
resolv-retry infinite
nobind
persist-key
persist-tun
#—— SECCION DE LLAVES ——–
ca ca.crt
cert cliente.crt
key cliente.key
ns-cert-type server
#———————————
comp-lzo
verb 3

Descripción:

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


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

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 la
opción –remote.

float: Este le dice a OpenVPN aceptar los paquetes autenticados de cualquier dirección, no solamente 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 fallar hace 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].

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 no
necesitan 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 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úsculas es usada por paquetes TCP/UDP minúsculas es usada para paquetes
TUN/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 de
Windows) 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

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


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

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 los
procesos 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á la
correcta 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 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 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

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


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

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 del directorio
OpenVPN.

Supongamos que las llaves la tenemos en el directorio /tmp/llaves, debemos copiar estas en el siguiente directorio /etc/openvpn/keys, para esto hay
que 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:


client
dev tun
proto udp
remote dominio-o-ip.del.servidor.vpn 1194
float
resolv-retry infinite
nobind
persist-key
persist-tun
#—— SECCION DE LLAVES ——–
ca ca.crt
cert cliente.crt
key cliente.key
ns-cert-type server
#———————————
comp-lzo
verb 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 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:port en el orden


especificado de las opciones de la opción –remote.

float : Este le dice a OpenVPN aceptar los paquetes autenticados de cualquier dirección, no
solamente 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 fallar
hace 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].

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


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

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 no necesitan 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 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úsculas
es 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 siguiente
contenido:

#!/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

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


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

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, podemos
realizar 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 el
tú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.2


22nd Octubre 2008

OpenVPN setup on Centos 5.2


OpenVPN is a very capable SSL-based VPN client/server software package. It has great documentation at
OpenVPN 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 at
http://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*

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


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

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 containing
the 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, and
they 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 up
For 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 the
following static route to the default gateway (which is my wireless router):
Destination LAN IP: 10.8.0.0
Subnet Mask: 255.255.255.0
Gateway: 192.168.35.2

Roadwarrior en Openvpn
Este es un howto bien basico para hacer roadwarrior en openvpn , para esto use Centos 4.2 ,por que ? ,bueno por que
funciona 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/

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


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

#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 5
status openvpn-status.log
log openvpn.log
user nobody
#group nogroup
persist-key
persist-tun
local TU.IP.PULICA
port 559
proto tcp-server
dev tun
#comp-lzo
ca /etc/openvpn/keys/mi-ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/dh1024.pem
server 10.0.1.0 255.255.255.0
keepalive 10 120

ifconfig-pool-persist ipp.txt
client-config-dir /etc/openvpn/cld
push “route 169.254.0.0 255.255.255.0″ #Red interna a la cual de quiere acceder
username-as-common-name #Primer parametro para el roadwarrior
plugin /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 and


others,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 VPS
provider 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,

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


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

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 to
execute 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 start


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


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

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


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

export KEY_COUNTRY=US
export KEY_PROVINCE=CA
export KEY_CITY=SOMEWHERE
export KEY_ORG="My Org"
export KEY_EMAIL=me@mydomain.com

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:

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


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

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 start


service iptables stop

8. Now for the client config files. If your client is a Windows machine, make sure you have installed OpenVPN, use the
gui 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.crt
client1.csr
client1.key
client1.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:
client
dev tun
proto tcp

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


remote my.publicdomain.com 1194

resolv

-retry infinite
nobind
persist-key
persist-tun

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


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

ca ca

.crt
cert client1.crt
key 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 Openvpn
22nd 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, como
por ejemplo Internet.

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

Para hacerlo posible de manera segura es necesario proveer los medios para garantizar la autenticación, integridad y
confidencialidad 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 son
susceptibles de interceptación, por lo que es fundamental el cifrado de los mismos. De este modo, la información no debe
poder ser interpretada por nadie más que los destinatarios de la misma.
Tipos de VPN
VPN de acceso remoto

Éste es quizás el modelo más usado actualmente y consiste en usuarios o proveedores que se conectan con la empresa
desde sitios remotos (oficinas comerciales, domicilios, hotel, aviones, etcétera) utilizando Internet como vínculo de
acceso. Una vez autenticados tienen un nivel de acceso muy similar al que tienen en la red local de la empresa. Muchas
empresas han reemplazado con esta tecnología su infraestructura dialup (módems y líneas telefónicas), aunque por
razones 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 posee
un 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

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


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

tradicionales, sobre todo en las comunicaciones internacionales…. es mas comun el anterior punto. tambien llamada
tecnologia 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 del
tipo “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 mejorar
las 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 posible
que 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 de
certificado digital, los más comúnmente empleados se rigen por el estándar UITT X.509v3. El certificado contiene
usualmente el nombre de la entidad certificada, un número serial, fecha de expiración, una copia de la clave pública del
titular del certificado (utilizada para la verificación de su firma digital), y la firma digital de la autoridad emisora del
certificado 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ública
Clave privada
Información del Propietario
Información del emisor del Certificado

2 Paquetes Necesarios

openvpn2.0.71.el4.rf
lzo1.084.2.el4.rf
openssldevel0.9.7a43.4
openssl0.9.7a43.4

3 Procedimientos

Configurando tu propia Autoridad Certificadora (CA Certificate Authority) y generacion de certificados y par de llaves
para 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 Public
Key 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 el
servidor 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 PKI
usaremos los scripts que vienen con OpenVPN (easyrsa) pero en este caso usaremos la nueva version que tiene muchas
mejoras, 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 claves


asimétricas
18th Octubre 2008

En el presente trabajo se mostrará con un ejemplo práctico la implementación de una red privada virtual tanto del lado del
cliente 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 a
la red de la oficina mediante Internet pasando a tomar parte de dicha red como si fuese un puesto más de la misma.

Contenido

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


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

[ocultar]

1 Instalación del software


2 Preparando la prueba
3 Arquitectura
4 Certificados y claves RSA
5 Hoja de ruta
6 Retoques en los firewalls
7 Arranque automático
8 A probar – Por fin !!!
9 Bibliografía

Instalación del software


Se necesita instalar lo siguiente:

Paquete en Debian o Ubuntu en otro Linux


Descargar de http://www.openssl.org y seguir las
OpenSSL aptitude install openssl
instrucciones
LZO (opcional si se quiere
aptitude install liblzo1 http://www.oberhumer.com/opensource/lzo/
compresión )
http://prdownloads.sourceforge.net/openvpn/openvpn-
OpenVPN aptitude install openvpn
1.6.0.tar.gz
Ya incluido en kernel
Controlador tun/tap
superior 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 dos
clientes.

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 un
router/firewall, como suele verse cada vez con más frecuencia, sobre todo cuando tenemos hijos que quieren jugar con la
computadora 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 la
casa puedan conectarse transparentemente a la oficina, aunque tal vez no sea lo más adecuado si los demás pc’s son los
de 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 la
misma 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 entre
ellas.

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

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


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

Eso solo tendrá efecto hasta que apaguemos la computadora, con lo cual si se desea rutear permanentemente debemos
indicarlo 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/TLS
mediante 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 clientes
2.Crear un certificado y una clave pública para los clientes
3.Firmar ese certificado usan el certificado-CA
4.Distribuir la clave y certificados a los clientes
5.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 comandos
adecuados con unos cuantos parámetros por default.

Generales

1. usr@ubusrv:~$ mkdir /etc/openvpn


2. usr@ubusrv:~$ cp /usr/share/doc/openvpn/examples/easy-rsa /etc/openvpn
3. usr@ubusrv:~$ cd /etc/openvpn/easy-rsa
4. 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=”yo@mihost.midominio”

5. usr@ubusrv:~$ . vars
6. 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

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

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


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

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.key
Par 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.csr
Hasta 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.csr
Distribución de claves y certificados

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

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

A continuación se presenta una tabla en la que se muestra en donde va cada archivo y si debe ser celosamente guardado
en 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/openvpn
2. usr@ubusrv:~$ mkdir ccd
3. usr@ubusrv:~$ gzip -d /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz

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


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

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

Variable Valor Comentario


puede cambiarse por cualquier otro que queramos, pero los clientes deben
port 1194
saber dicho valor para saber a donde conectarse
proto tcp también pude ser udp pero el cliente debe configurarse de la misma forma
tun se usa para conexiones de clave asimétrica.tap puede ser usado para
dev tun
configuraciones 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
“route 10.66.0.0 Provocará que el cliente cuando se conecte agregue una ruta adecuada para
push
255.255.255.252” alcanzar la red de la oficina
client- Directorio en donde se agregarán archivos con información de ruteo para cada
ccd
config-dir 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 mismo
nombre 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 de
una 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-client1


Configuración del script del cliente

1. usr@ubusrv:~$ cd /etc/openvpn
2. 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 nuestras
necesidades:

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
tun se usa para conexiones de clave asimétrica.tap puede ser usado para configuraciones más
dev tun
sencillas de clave simétrica pre-compartida
ca ca.crt El certificado CA que generamos
IP de la interfaz pública del servidor de la oficina y puerto en el que está escuchando el
remote 192.168.6.2 443
OpenVPN instalado allí
openvpn- El certificado que generamos en el servidor y copiamos en el cliente por algún método
cert
client.crt “seguro”
openvpn-
key La clave privada que nos generaron en el servidor
client.key

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 router
pero sin firewall. Cuando tenemos firewall en los servidores hay que tener en cuenta que se necesita agregar reglas que
permitan 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 usar
en reglas de iptables para filtrar por ellas. También es seguro, ya que el túnel solo permite tráfico desde puntos
autorizados, con lo cual tranquilamente podemos permitir todo el tráfico en dichas interfaces. Ej.

iptables -A INPUT -i tun+ -j ACCEPT

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


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

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 como
demonio. P ara ello existen dos caminos tradicionales.

1.Configurar el servicio xinetd para que escuche en el puerto configurado e invoque al openvpn cuando ingresa
alguna 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/openvpn
2. usr@ubusrv:~$ openvpn –config server.conf

En el lado del cliente:

1. usr@ubusrv:~$ cd /etc/openvpn
2. 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 usa
los protocolos SSL/TLS, soporta diferentes medios de autenticacion como certificados, smart cards, y/o
usuarios/contraseñas, y permite politicas de control de acceso para usuarios o grupos usando reglas de firewall aplicadas a
las 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

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


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

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 final
del 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ámetro
Common 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 la
que 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 que
sea seguro.

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

Creamos la configuración del Servidor OpenVPN


# vi /etc/openvpn/server.conf

port 1194
proto udp
dev tun
persist-tun

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


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

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

keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 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 un
NAT 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-client
client
dev tun
proto udp
remote host.dominio.com
float #debido a que la IP de arriba es dinamica
resolv-retry infinite
nobind
persist-key
persist-tun
ca “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-lzo
verb 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 OPENVPN


13th Octubre 2008

INSTALACIÓN Y CONFIGURACIÓN DE OPENVPN

Para poder realizar la instalación y configuración de la aplicación OpenVPN, antes


de nada habrá que descargar los paquetes necesarios a tal efecto. En este caso, si
ambas máquinas funciona bajo GNU/LINUX habrá que instalar openVPN en ambas y
configurar una como servidor y otra como cliente. En el caso de que el servidor funcione

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


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

bajo Linux pero el cliente sea una máquina Windows, habrá que instalarle el cliente
adecuado para poder establecer la red virtual.
Comencemos con la instalación de los paquetes. Si bien con openvpn sería
suficiente, en el caso de que se quiera utilizar con certificados, habrá que instalar openssh
(si no está ya instalado).
aptitude install openvpn openssh
SEGURIDAD EN LA CONEXIÓN VPN
GENERACIÓN DE LA CLAVE SECRETA
Mediante la siguiente directiva se genera la clave privada. Esa clave tienen que
poseerla tanto el servidor como el cliente, con lo cual, tras generarla en el servidor, hay
que colocarla en el directorio correcto del mismo y a su vez copiarla al cliente mediante un
medio que no comprometa la seguridad de la clave. En este caso se ha optado por
copiarlo al cliente mediante ssh.
openvpn –genkey –secret giltza.key
cp giltza.key /etc/openvpn
scp 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 por
protegerlo mediante clave secreta y certificados. Las claves privadas tendrán que
mantenerse siempre en privado, los ficheros con los certificados en cambio pueden
publicarse o compartirse con total libertad.
Se seleccionará en este ejemplo el servidor como máquina generadora y gestora
de las claves y los certificados.
En primer lugar hay que edita el fichero openssl.cnf (/usr/share/ssl/openssl.cnf), con
las 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 de
validez 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 clave
maestra que se generará a continuación.
Se pueden hacer más modificaciones para adaptar openssl.cnf a nuestras
necesidades, pero no es necesario hacer más modificaciones para poder crear los
certificados.
Lo primero, se generará la Autoridad de Certificación (CA), un par de
certificado/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 3650
Ahora llega el turno de crear un par certificado/clave tanto para el servidor como
para el cliente.
openssl req -nodes new -keyout servidor.key -out servidor.csr
openssl ca -out servidor.crt -in servidor.csr
openssl req -nodes new -keyout cliente.key -out cliente.csr
openssl ca -out cliente.crt -in cliente.csr
Una 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 el
siguiente comando:
openssl dhparam -out dh1024.pem 1024
Existen más métodos para generar claves y certificados, incluso pueden comprarse
a una entidad certificadora, pero se ha utilizado esta forma a modo de explicación, con
gasto cero.
GENERAR CERTIFICADOS MEDIANTE UTILIDAD EASY-RSA OPENVPN
Otro modo de generar las claves y los certificados generados en el apartado
anterior es valerse de los scripts que la propia aplicación de OpenVPN incluye en su
directorio /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 dicho
directorio.
cp -a /usr/share/doc/openvpn/easy-rsa /etc/openvpn
cd /etc/openvpn/easy-rsa
Para generar la entidad certificadora:
./clean-all
./build-ca
2/6
Al ejecutar build-ca se solicitan los datos necesarios a fin de generar la entidad
certificadora:
En éste último paso se nos pedirá una serie de información sobre nuestra
red/empresa que debemos llenar lo más fielmente posible:
Generating a 1024 bit RSA private key
……………………………………………………………………………….
……………………………++++++…………………++++++
writing new private key to ‘ca.key’
—–

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


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

You are about to be asked to enter information that will be incorporated


into 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 blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [KG]:ES
State or Province Name (full name) [NA]:Euskadi
Locality Name (eg, city) [BISHKEK]:Bilbo
Organization Name (eg, company) [OpenVPN-TEST]:pfc-server
Organizational Unit Name (eg, section) []:test
Common Name (eg, your name or your server’s hostname) []:nagore
Email Address [me@myhost.mydomain]:nagore@abartiateam.com
Si bien el resto de los datos puede rellenarse como mejor convenga, la variable
Common Name es muy importante, ya que cuando una máquina trate de comprobar la
validez del certificado lo hará contra el FQDN de la máquina certificadora, con lo cual el
Common Name tiene que coincidir con ella.
GENERAR EL CERTIFICADO Y LA CLAVE DE ENCRIPTACIÓN PARA EL SERVIDOR
Al generar el certificado del servidor volverán a solicitarse los mismos datos que
para generar la entidad certificadora. Nuevamente pueden generarse como mejor
convenga, pero teniendo cuidado de no escoger el FQDN utilizado para la CA. En este
ejemplo se ha tomado server, como Common Name.
./build-key-server server
Este paso genera dos archivos en el directorio /etc/openvpn/easy-rsa/keys, que
habrá que copiar al directorio /etc/openvpn: server.crt y server.key
El siguiente paso es generar los certificados y las claves de seguridad de cada uno
de los clientes. Los archivos obtenidos con el siguiente paso tendrán que almacenarse en
la carpeta /etc/openvpn de cada cliente.
Para generar el certificado y las claves privadas se ejecuta en el servidor, dentro
del directorio /etc/openvpn/easy-rsa/ :
./build-key client1
3/6
En este último caso también habrá que responder a las preguntas anteriores del
modo conveniente. El parámetro cliente1 pasado como parámetro distingue el certificado
del certificado de otro cliente. Podrán crearse tantos clientes como sean necesarios
cambiando el nombre que se le pasa como parámetro.
GENERAR PARÁMETROS DIFFIE-HELLMAN
./build-dh
Una vez generado tanto la CA, como los certificados del servidor y los de los
clientes, habrá que asegurarse de que tanto el cliente como el servidor tienen los
siguientes archivos:
Archivos en el Servidor: ca.crt, ca.key, server.key server.crt dh1024.pem
Archivos en el Cliente: ca.crt, client1.crt, client1.key
CONFIGURACIÓN DE CONEXIÓN HOST TO HOST
En esta configuración “host to host” se logra que el intercambio de paquetes entre
dos máquinas se realice de forma encriptada. Para ello se crea una interfaz virtual con
una IP privada a cada extremo. Se tomará como ejemplo la 192.168.2.1 como la IP del
servidor y la 192.168.2.2 como la IP del cliente. Cualquier paquete que viaje entre ambas
direcciones lo hará encriptado.
CONFIGURACIÓN DEL SERVIDOR
#/etc/openvpn/server.conf
# dispositivo de tunel
dev tun
# ifconfig ip_del_servidor ip_del_cliente
ifconfig 192.168.2.1 192.168.2.2
# Clave del servidor
secret /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-lzo
ping 15
verb 1
4/6
CONFIGURACIÓ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

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


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

port 1194
# dispositivo tunel
dev tun
# ifconfig ip_del_cliente ip_del_servidor
tun-mtu 1500
ifconfig 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 compression
comp-lzo
# ping cada 10 segs
ping 10
# compresión lzo
comp-lzo
# verbose moderado, callar mas de 10 mensajes iguales
verb 4
mute 10
CONFIGURACIÓN DE CONEXIÓN ROAD WARRIOR
CONFIGURACIÓN DEL SERVIDOR
#/etc/openvpn/server.conf
# dispositivo tunel
dev tun
# Claves y certificados
ca ca.cert
cert server.crt
key server.key
dh dh1024.pem
# Direcciones que se asignarán a los clientes. Diferentes de las de la subred del servidor. # La IP del
servidor en la vpn será 192.168.2.1
server 192.168.2.0 255.255.255.0
ifconfig-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 servidor
push “route 192.168.1.0 255.255.255.0”
keepalive 10 120
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 4
CONFIGURACIÓN DEL CLIENTE
#/etc/openvpn/client.conf
# Indicamos que algunas configuraciones las tomará del servidor
client
# Dispositivo tunel
dev tun
proto udp
# Dirección real del servidor
remote pfc-server.dyndns.org
port 1194
resolv-retry infinite
# nobind –> para asegurarse de que solo actue como cliente y nunca como servidor
nobind
persist-key
persist-tun
# Claves y certificados
ca ca.crt
cert client1.crt
key client1.key
comp-lzo
verb 4

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

RoadWarrior En OpenVPN debian

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


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

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 la
red como si fueran parte de ella (arquitectura host-to-net). El presente tutorial explica como configurar correctamente el
openvpn 2.0.9-4 en un Debian Etch que ya tiene configurado Shorewall. Tomé como base el tutorial de la configuración
para 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. Este
directorio 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 y
debemos 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 los
podemos 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 1194
proto udp
dev tun
persist-tun
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem

#Direcciones que se asignaran a los


#clientes, el server es .1
server 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

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


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

client-to-client

keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 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 NAT
debe tener una dirección local no perteneciente a la red de la VPN.

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

client
dev tun
proto udp
remote host.dominio.com
float #debido a que la IP de arriba es dinamica
resolv-retry infinite
nobind
persist-key
persist-tun
ca “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-lzo
verb 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 y
sus 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 OPTIONS
road ipv4

/etc/shorewall/interfaces

#ZONE INTERFACE BROADCAST OPTIONS


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


openvpnserver:1194 net 0.0.0.0/0

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

/etc/shorewall/policy

#SOURCE DESTINATION POLICY


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

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

Potrebbero piacerti anche