VPN en servidor Linux y clientes Windows/Linux con OpenVPN + Shorewall [Parte 2]

Autor: William López Jiménez
Correo electrónico: william [punto] koalasoft [arroba] gmail [punto] com
Sitio de Red: koalasoft.wordpress.com

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 2007 William López Jiménez. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales. c) Si altera o transforma esta obra, o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.

Nota: Para una mejor comprensión se recomienda haber leído la [Parte 1] de este manual.

Continuación …

pre-conexion-cliente-vpnMenú 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.

conexion-cliente-vpnMensaje 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.

ipconfig-cliente-vpnVerificación de asignación de dirección IP virtual [tun]

prueba-ping-vpnVerificació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

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

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

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.

ifconfig

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

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

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

Si SELinux está activo en el sistema y se va a utilizar el componente de OpenVPN para NetworkManager (NetworkManager-openvpn), y se van a utilizar certificados almacenados en el directorio del usuario, se debe activar la política openvpn_enable_homedirs.

setsebool -P openvpn_enable_homedirs 1
Anuncios

Un pensamiento en “VPN en servidor Linux y clientes Windows/Linux con OpenVPN + Shorewall [Parte 2]

  1. Pingback: Revocar certificados RSA en OpenVPN – Bloqueo de llaves | KoalaSoft - ::BLog::

Los comentarios están cerrados.