Difference between revisions of "Conectarse a Firewall 1 desde Linux con Shrew"
(una froga) |
(No difference)
|
Revision as of 06:35, 7 November 2017
23/01/2013
Contents
Conectarse a Firewall 1 desde Linux con Shrew
Nos puede suceder que necesitemos conectarnos como clientes de una VPN desde Linux. Pero si el que nos sirve éstas conexiones es un Firewall 1, podemos encontrarnos que no utilice el estándar IPSEC al pie de la letra, sino que tenga algunos añadidos fuera del mismo, que nos impida conectarnos con las implementaciones normales.
Para solucionarlo podemos utilizar shrew, una implementación de cliente VPN que consigue conectarnos con casi todo lo que se nos ocurra.
Sistemas utilizados
Debian Squeeze, Wheezy
Ubuntu 12.04 Precise (Arm)
Ubuntu 12.10 Quantal (Arm)
Compilando Shrew
Para Nuestro ejemplo vamos a compilar una versión de la rama 2.2.x, que es la que me ha funcionado. Desconozco si se puede conseguir la conexión con Firewall 1 con ramas anteriores, sólo sé que no he conseguido resultados satisfactorios con con la rama 2.1.x.
Descargamos y comprobamos, descomprimimos el código fuente
- Descargamos el código fuente
wget http://www.shrew.net/download/ike/ike-2.2.0-rc-2.tbz2
- Comprobamos que coincida el código de comprobación suministrado
$ openssl sha1 ike-2.2.0-rc-2.tbz2 SHA1(ike-2.2.0-rc-2.tbz2)= a69e7232a2778cec0a9e3af84d9657a471c8b4a6
Compilando
Vamos a compilar tanto el demonio iked como la interfaz gráfica que nos ayudará en la configuración
Instalamos las dependencias
Tras un vistazo al fichero ike/README.TXT instalamos las dependencias necesarias para la compilación:
aptitude install flex bison libqt4-dev libssl-dev cmake libedit-dev g++ uml-utilities
Compilamos e instalamos
Con el parámetro -DCMAKE_INSTALL_PREFIX= conseguimos instalar el programa en la ubicación deseada, en nuetro caso /opt/shrew
- como root
mkdir -p /opt/shrew /opt/shrew/etc /opt/shrew/lib /opt/shrew/man
tar -xjvf ike-2.2.0-rc-2.tbz2 cd ike cmake -DCMAKE_INSTALL_PREFIX=/opt/shrew -DMANDIR=/opt/shrew/man -DBINDIR=/opt/shrew/bin -DSBINDIR=/opt/shrew/sbin -DQTGUI=YES -DNATT=YES make
- Como root
make install
Configuración de las librerías compartidas
Al usar una ubicación no estandar (me gusta complicarme la vida) podemos antemoper una variable a todo lo relacionado con shrew
LD_LIBRARY_PATH=/opt/shrew/lib
O para realizarlo de forma definitiva
- Como root
echo /opt/shrew/lib > /etc/ld.so.conf.d/shrew.conf ldconfig
Configuración del demonio iked
Tras renombrar el fichero de configuracion, podemos editarlo para configurar el log, por ejemplo. En nuesto caso lo dejaremos tal cual:
- Como root
mv /opt/shrew/etc/iked.conf.sample /opt/shrew/etc/iked.conf
En mi caso voy a utilizar el añejo método del inittab. Las viejas manías son difíciles de cambiar
- Como root
echo "IK:2345:once:/opt/shrew/sbin/iked" >> /etc/inittab kill -1 1
Si estamos usando upstart, tendremos que generar el fichero /etc/init/iked.conf con el siguiente contenido:
start on startup start on runlevel [2345] stop on runlevel [!2345] exec /opt/shrew/sbin/iked
¡Conectando!
Para realizar ésta tarea vamos a utilizar el cliente gráfico qikea.Nada mejor que unos pantallazos ligeramente comentados de la configuración QUE ME FUNCIONA para entenderlo mejor.
- La pantalla principal
- General
- Client
- DNS
- Authentication -> Local Identity
- Authentication -> Remote Identity
- Authentication -> Credenciales
Archivo:shrew-auth-credentials.png
- Phase 2
- Policy
Las opciones que han sido decisivas
De la multitud de opciones proporcionadas por shrew, sólo me han sido necesarias una fracción de las mismas. Reflejo en éste apartado las que me parecen imprescindibles para lograr que funcionara en mi caso.
Credenciales
- Server Certificate Authority File -> Si no te lo proporciona tu administrador de red, se puede conseguir con el cliente nativo. En algún momento encontré alguna referencia para realizarlo, que no soy capaz de recuperar :-(
Phase 1
- Exchange Type -> Tiene que estar en main. Hay que huir de la opción aggressive.
- Enable Check Point Compatible Vendor ID -> Sin ésto difícilmente va a funcionar.
Automatizando la conexión
Si tras un montón de pruebas todo funciona, siempre es interesante automatizar la conexión.
Modo gráfico
Se puede automatizar la conexión utilizando qikec.
/opt/shrew/bin/qikec -r vpn.zerutek.com -u usuariovpn@zerutek -p ContraseñaMuyLarga -a
- Conectamos
- El estado de la conexión
Modo texto
Se puede automatizar la conexión utilizando ikec
/opt/shrew/bin/ikec -r vpn.zerutek.com -u usuariovpn@zerutek -p ContraseñaMuyLarga -a
- Conectamos
ii : ## : VPN Connect, ver 2.2.0 ## : Copyright 2009 Shrew Soft Inc. ## : press the <h> key for help >> : config loaded for site 'vpn.zerutek.com' >> : attached to key daemon ... >> : peer configured >> : iskamp proposal configured >> : esp proposal configured >> : client configured >> : local id configured >> : remote id configured >> : server cert configured ii : bringing up tunnel ... >> : network device configured ii : tunnel enabled
- Si pulsamos la h, nos muestra la ayuda.
ii : Use the following keys to control client connectivity - : <c> connect - : <d> disconnect - : <h> help - : <s> status - : <q> quit
- Si ahora pulsamos la s, vemos el estado de la conexión.
ii : current connection satus - : tunnel state = connected - : IPsec SAs in use = 1 - : IPsec SAs dead = 0 - : IPsec SAs failed = 0 - : transport used = NAT-T v02 / IKE | ESP - : ike fragmenataion = disabled - : dead peer detect = disabled