SSL E OPENVPN ALS ADITO VPN - Alonso Ballesteros VPN.pdf · Instalaremos un servidor Linux, en este...

21
SSL EXPLORER OPENVPN ALS ADITO VPN

Transcript of SSL E OPENVPN ALS ADITO VPN - Alonso Ballesteros VPN.pdf · Instalaremos un servidor Linux, en este...

Page 1: SSL E OPENVPN ALS ADITO VPN - Alonso Ballesteros VPN.pdf · Instalaremos un servidor Linux, en este caso hemos elegido Ubuntu, como podríamos haber elegido CentOS, ambas soluciones

SSL EXPLORER – OPENVPN ALS –ADITO VPN

Page 2: SSL E OPENVPN ALS ADITO VPN - Alonso Ballesteros VPN.pdf · Instalaremos un servidor Linux, en este caso hemos elegido Ubuntu, como podríamos haber elegido CentOS, ambas soluciones

CONENIDOS

1 . INTRODUCCIÓN ..................................................................................................... 3

2 . INSTALACIÓN ........................................................................................................ 4

Instalación de Ubuntu .................................................................................................................... 4

Configuración proxy en apt-get ..................................................................................................... 4

Instalación de java .......................................................................................................................... 4

Configurar Ubuntu para que use el JAVA de SUN y no el OpenJDK ............................................ 5

Instalación apt ................................................................................................................................ 5

Instalación de ant ........................................................................................................................... 5

Instalación de Adito ....................................................................................................................... 5

Configuración de Adito .................................................................................................................. 5

Instalar el servicio ......................................................................................................................... 10

Arrancar el servicio ........................................................................................................................ 11

Reconfigurar Adito SSL ................................................................................................................. 11

3 . CONFIGURACIÓN DE SERVICIOS ............................................................................. 12

Publicar una aplicación binaria: VNCVIEWER ............................................................................... 12

Publicar una aplicación binaria: VNCSERVER ............................................................................... 12

Establecer un túnel contra un servidor local .............................................................................. 20

Page 3: SSL E OPENVPN ALS ADITO VPN - Alonso Ballesteros VPN.pdf · Instalaremos un servidor Linux, en este caso hemos elegido Ubuntu, como podríamos haber elegido CentOS, ambas soluciones

Página 3 de 21

1 . INTRODUCCIÓN

En este artículo revisaremos la solución Opensource OpenVPN ALS, una bifurcación del SSL Explorer, software que era

Opensource y que fue adquirido por Barracuda Networks.

Lo primero es señalar qué puede aportar Open VPN a un entorno empresarial:

- Conexión a la intranet corporativa desde una red externa

- Conexión al servidor de ficheros corporativo desde una red externa

- Conexión para administradores a los servidores del Data Center desde una red externa (vía Putty, WinSCP, RDP o

VNC)

- Control Remoto de Equipos de fuera de la red corporativa para el personal de Soporte, iniciado a petición del

usuario

- Acceso a determinados servicios internos (mensajería interna) pero cambiando el punto de conexión de la

aplicación cliente

Resumiendo, estamos haciendo accesibles los recursos internos de la empresa, de forma segura, a usuarios externos (tele-

trabajadores, usuarios móviles, colaboradores, etc.) sin necesidad de instalar ningún software en los equipos. Todo esto sin

pagar un duro en licencias de software.

Un aspecto importante de OpenVPN es que valida a los usuarios contra Active Directory (una de las Bases de Datos de

usuarios más extendida hoy en día), de forma que lo usuarios no tienen que gestionar otra password para acceder a este

servicio, y los administradores pueden usar los grupos de Active Directory para controlar el acceso de los usuarios a los

recursos publicados, evitando tener que descentralizar la gestión de los accesos a los recursos. Este aspecto es muy

importante, ya que si un usuario se da de baja en la empresa, bastaría con darlo de baja en Active Directory para evitar que

pueda seguir accediendo desde fuera a la información corporativa. Con múltiples repositorios de usuarios suele suceder que

se nos olvida dar de baja los usuarios de alguno de estos repositorios, con el consiguiente agujero de seguridad que se

crea…

A continuación se detallan los pasos que hay que seguir para tener este producto listo y funcionando en su organización, y

para configurar los servicios más fundamentales, con los cuales empezar a dar acceso a usuarios externos a los recursos

internos de la empresa.

Hemos realizado una aportación a la comunidad que consideramos importante, en forma de extensión. Se trata de una

extensión que permite publicar aplicaciones para que los usuarios que están fuera de la red corporativa puedan solicitar una

sesión de control remoto al personal de Help Desk, que está dentro de la red corporativa. Para ello nos hemos basado en el

software UltraVNC, también Opensource, y en una extensión que viene por defecto con Adito y que permite hacer lo

contrario (tomar control remoto desde fuera de la red interna a un PC de la red interna). Para nosotros resultaba más

importante el inverso, de cara a dar soporte a nuestros usuarios móviles, y por eso hemos desarrollado la extensión.

Page 4: SSL E OPENVPN ALS ADITO VPN - Alonso Ballesteros VPN.pdf · Instalaremos un servidor Linux, en este caso hemos elegido Ubuntu, como podríamos haber elegido CentOS, ambas soluciones

Página 4 de 21

2 . INSTALACIÓN

Instalación de Ubuntu

Instalaremos un servidor Linux, en este caso hemos elegido Ubuntu, como podríamos haber elegido CentOS, ambas

soluciones Opensource y con coste en licencias igual a cero.

Concretamente hemos instalado Ubuntu 10.04 LTS

Configuración proxy en apt-get

administrador@srvv-ubuntu:/etc/apt$ more apt.conf

Acquire::http::Proxy "http://proxyuser:[email protected]:8080";

Además de esto editamos /etc/bash.bashrc:

export http_proxy=http://username:[email protected]:port/

export ftp_proxy=http://username:[email protected]/

Instalación de java

sudo apt-get install sun-java6-bin sun-java6-jdk

En Ubuntu 10.04 por defecto esto no funcionará, por la siguiente razón:

Sun Java moved to the Partner repository

For Ubuntu 10.04 LTS, the sun-java6 packages have been dropped from the Multiverse section of the Ubuntu archive. It is

recommended that you use openjdk-6 instead.

If you can not switch from the proprietary Sun JDK/JRE to OpenJDK, you can install sun-java6 packages from the Canonical

Partner Repository. You can configure your system to use this repository via command-line:

add-apt-repository "deb http://archive.canonical.com/ lucid partner"

Además de esto des-comentamos las líneas siguientes en el /etc/apt/sources.list

## Uncomment the following two lines to add software from Canonical's

## 'partner' repository.

## This software is not part of Ubuntu, but is offered by Canonical and the

## respective vendors as a service to Ubuntu users.

deb http://archive.canonical.com/ubuntu lucid partner

deb-src http://archive.canonical.com/ubuntu lucid partner

Page 5: SSL E OPENVPN ALS ADITO VPN - Alonso Ballesteros VPN.pdf · Instalaremos un servidor Linux, en este caso hemos elegido Ubuntu, como podríamos haber elegido CentOS, ambas soluciones

Página 5 de 21

Configurar Ubuntu para que use el JAVA de SUN y no el OpenJDK

sudo update-alternatives --config java

There are 2 choices for the alternative java (providing /usr/bin/java).

Selection Path Priority Status

------------------------------------------------------------

* 0 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 auto mode

1 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 manual mode

2 /usr/lib/jvm/java-6-sun/jre/bin/java 63 manual mode

Press enter to keep the current choice[*], or type selection number: 2

update-alternatives: using /usr/lib/jvm/java-6-sun/jre/bin/java to provide /usr/bin/java (java) in manual mode.

Instalación apt

sudo apt-get install apt-file

sudo apt-file update

Instalación de ant

sudo apt-get install ant

Falla la descarga de algunos componentes, por lo que hacemos lo siguiente:

sudo apt-get install ant --fix-missing

Instalación de Adito

Descomprimir el zip en un directorio.

Nos vamos a ese directorio y ejecutamos:

sudo apt-get install ant

Nos conectamos vía WEB: http://srvv-ubuntu:20080

Configuración de Adito

Una vez instalado Adito, tenemos que conectarnos con el navegador para realizar la configuración (Configuración del

Certificado Digital, método de autenticación, etc). En nuestro caso hemos elegido las opciones básicas de configuración,

salvo en lo que se refiere a la B.D. de usuarios. En este caso, hemos optado por usar la B.D. corporativa (Active Directory de

Microsoft). Nos ha dado un poco de guerra pero finalmente hemos conseguido que los usuarios se autentiquen contra esta

base de datos.

Page 6: SSL E OPENVPN ALS ADITO VPN - Alonso Ballesteros VPN.pdf · Instalaremos un servidor Linux, en este caso hemos elegido Ubuntu, como podríamos haber elegido CentOS, ambas soluciones

Página 6 de 21

Page 7: SSL E OPENVPN ALS ADITO VPN - Alonso Ballesteros VPN.pdf · Instalaremos un servidor Linux, en este caso hemos elegido Ubuntu, como podríamos haber elegido CentOS, ambas soluciones

Página 7 de 21

Page 8: SSL E OPENVPN ALS ADITO VPN - Alonso Ballesteros VPN.pdf · Instalaremos un servidor Linux, en este caso hemos elegido Ubuntu, como podríamos haber elegido CentOS, ambas soluciones

Página 8 de 21

Page 9: SSL E OPENVPN ALS ADITO VPN - Alonso Ballesteros VPN.pdf · Instalaremos un servidor Linux, en este caso hemos elegido Ubuntu, como podríamos haber elegido CentOS, ambas soluciones

Página 9 de 21

Page 10: SSL E OPENVPN ALS ADITO VPN - Alonso Ballesteros VPN.pdf · Instalaremos un servidor Linux, en este caso hemos elegido Ubuntu, como podríamos haber elegido CentOS, ambas soluciones

Página 10 de 21

Instalar el servicio

sudo ant install-service

Buildfile: build.xml

set-tools:

check-tools:

check-permissions:

install-service:

[echo] Installing Adito as Linux service

[exec] Detecting Java

[exec] Using /usr/lib/jvm/java-6-sun-1.6.0.20/jre

[exec] Detected OS debian (x86)

[exec] update-rc.d: warning: /etc/init.d/adito missing LSB information

[exec] update-rc.d: see <http://wiki.debian.org/LSBInitScripts>

[exec] Adding system startup for /etc/init.d/adito ...

[exec] /etc/rc0.d/K20adito -> ../init.d/adito

[exec] /etc/rc1.d/K20adito -> ../init.d/adito

[exec] /etc/rc6.d/K20adito -> ../init.d/adito

[exec] /etc/rc2.d/S20adito -> ../init.d/adito

[exec] /etc/rc3.d/S20adito -> ../init.d/adito

[exec] /etc/rc4.d/S20adito -> ../init.d/adito

[exec] /etc/rc5.d/S20adito -> ../init.d/adito

Page 11: SSL E OPENVPN ALS ADITO VPN - Alonso Ballesteros VPN.pdf · Instalaremos un servidor Linux, en este caso hemos elegido Ubuntu, como podríamos haber elegido CentOS, ambas soluciones

Página 11 de 21

[exec] /home/administrador/adito-0.9.1/install/platforms/linux/install-service: line 12: /home/administrador/adito-

0.9.1/conf/wrapper.conf: No such file or directory

[exec] Service installed

[echo] Adito installed as Linux service

BUILD SUCCESSFUL

Total time: 0 seconds

Arrancar el servicio

sudo ant start

Reconfigurar Adito SSL

Parar los servicios y ejecutar de nuevo sudo ant install desde el directorio de Adito. Se puede hacer sin perder los

parámetros que ya tenemos configurados bien.

Page 12: SSL E OPENVPN ALS ADITO VPN - Alonso Ballesteros VPN.pdf · Instalaremos un servidor Linux, en este caso hemos elegido Ubuntu, como podríamos haber elegido CentOS, ambas soluciones

Página 12 de 21

3 . CONFIGURACIÓN DE SERVICIOS

Publicar una aplicación binaria: VNCVIEWER

Siguiendo los pasos que encontramos en la WEB de 3sp, vamos a tratar de crear una nueva extensión en Adito, y publicar

una nueva aplicación.

http://3sp.com/en/kb/idx.php/67/178/article/Creating-your-own-extensions.html

Como ejemplo de extensión podemos tomar el fichero ZIP que encontramos en la WEB de Lars Werner

http://lars.werner.no/adito-application-ultravnc.zip

Básicamente, se trata de empaquetar en este ZIP los ejecutables y DLLs que necesita nuestra aplicación, y editar el fichero

extensions.xml. En este fichero es donde indicamos:

los ficheros que hay que descargar en el cliente

los parámetros que necesitamos recoger para ejecutar la aplicación

el túnel que vamos a crear para conectar nuestra aplicación a los servidores internos (si hace falta)

En el caso de UltraVNC, vamos a describir un poco lo que conseguimos. UltraVNC tiene dos ejecutables:

el server (winvnc.exe) que es el que tiene que estar ejecutándose en el equipo del que queremos tomar control

remoto

el cliente o visor (vnviewer.exe) que es el que ejecutamos en la maquina desde donde vamos a tomar el control

remoto

Lo que hace la extensión de VNC server, que además viene por defecto con Adito VPN, es descargar el Viewer en el PC del

equipo y establecer una sesión de control remoto contra una maquina de la red local.

Pero antes de establecer esta sesión, se establece un túnel entre la IP localhost:localport y la IP remotehost:5900. El

ejecutable vncviewer atacará a localhost:localport y sus paquetes se tunelizan y se llevan a través de la maquina

donde tenemos instalado ADITO VPN, hasta la maquina remota: remotehost:5900

De esta manera nos logramos conectar de forma segura a un servicio corporativo de la red interna, desde un equipo en

internet.

Pero normalmente, el problema es el contrario. El personal de soporte, dentro de la red interna corporativa, es el que tiene

que tomar control remoto de equipos que se encuentran fuera de esta red. En el siguiente apartado explicamos cómo

hemos creado una nueva extensión para poder hacer esto.

Publicar una aplicación binaria: VNCSERVER

El VNC Server (winvnc.exe ) tiene la posibilidad de solicitar que un cliente (vnviewer) establezca una sesión remota contra

él. Lo bueno de esto es que el server es el que inicia la conexión, y por tanto podemos aprovechar y establecer antes un

túnel desde el equipo remoto antes de solicitar la sesión de control remoto.

Page 13: SSL E OPENVPN ALS ADITO VPN - Alonso Ballesteros VPN.pdf · Instalaremos un servidor Linux, en este caso hemos elegido Ubuntu, como podríamos haber elegido CentOS, ambas soluciones

Página 13 de 21

Una vez que vncserver está ejecutándose, si ejecutamos winvnc –connect helpdeskhost, haremos que helpdeskhost

inicie una sesión de control remoto contra el vncserver. Para ello el helpdeskhost tiene que estar ejecutando el vncviewer en

modo “listen”: vncviewer /listen

Por tanto necesitamos modificar en cierto modo la extensión tradicional que trae Adito para el VNC, porque lo que tenemos

que descargar al cliente es el winvnc.exe y lo que tenemos que ejecutar es winvnc.exe –connect

Vamos a explicar los pasos que hemos seguido para que esto funcione:

Basándonos en el fichero http://lars.werner.no/adito-application-ultravnc.zip vamos a realizar algunos cambios. En primer

lugar, cambiamos el nombre de la extensión para que nos cree una nueva:

<bundle version="2.0.1"

requiredHostVersion="0.9.0"

type="executable"

id="adito-application-win-vnc"

licenseAgreement="License.html"

name="win-vnc"

license="GPL"

order="99999"

productURL="http://www.ultravnc.com/">

<extension type="executable" extension="adito-application-win-vnc" name="win-vnc" smallIcon="UltraVNC16x16.jpg"

largeIcon="UltraVNC32x32.jpg">

Como vemos, hemos cambiado el nombre de la extensión, y la hemos llamado win-vnc

A continuación, ponemos algunos ficheros más para descargar en el cliente:

<files>

<file>vncviewer.exe</file>

<file>winvnc.exe</file>

<file>UnZip32.dll</file>

<file>Zip32.dll</file>

<file>authadmin.dll</file>

<file>authSSP.dll</file>

<file>ldapauth.dll</file>

<file>logging.dll</file>

<file>logmessages.dll</file>

<file>vnchooks.dll</file>

<file>workgrpdomnt4.dll</file>

<file>LaunchUltraVNC.cmd</file>

</files>

Definimos nuestro túnel:

<tunnel name="win-vnc" hostname="${shortcut:hostname}" port="${shortcut:port}" usePreferredPort="true" />

Notese que ponemos - usePreferredPort="true"; esto es importante, hay que poner true para que el puerto origen del

túnel sea el 5500, y no uno aleatorio al azar.

A continuación definimos lo que queremos ejecutar y cómo:

Page 14: SSL E OPENVPN ALS ADITO VPN - Alonso Ballesteros VPN.pdf · Instalaremos un servidor Linux, en este caso hemos elegido Ubuntu, como podríamos haber elegido CentOS, ambas soluciones

Página 14 de 21

<executable program="${client:installDir}/LaunchUltraVNC.cmd">

<arg>-connect</arg>

<arg>${tunnel:win-vnc.hostname}::${tunnel:win-vnc.port}</arg>

<arg>${client:installDir}</arg>

</executable>

Como vemos, no ejecutamos winvnc.exe –connect directamente, sino que llamamos a un cmd que previamente hemos

descargado, porque necesitamos hacer algunas cosas más. A este cmd le pasamos tres argumentos:

La opción: –connect

Donde nos tenemos que conectar

El directorio de descarga donde vamos a encontrar winvnc.exe

Veamos lo que hacemos dentro del cmd:

reg add HKLM\SOFTWARE\ORL\WinVNC3 /v AllowLoopback /t REG_DWORD /d 0000001 /f > %temp%\LaunchUltraVNC.log

cd %3

REM arrancamos el VNC Server, si no lo está ya

REM /SEPARATE Start in separate memory space (more robust)

REM usar start y no esperar a que termine

REM /B : Start application without creating a new window

tasklist /FI "IMAGENAME eq winvnc.exe" 2>NUL | find /I /N "winvnc.exe">NUL

if "%ERRORLEVEL%"=="1" start "winvnc.exe" /B /SEPARATE winvnc.exe

REM Levantamos el VIEWEr en la maquina remota

REM Parametro 1: -connect

REM Parametro 2: host::puerto

REM Parametro 3: Path al winvnc.exe

echo "Ejecutando winvnc.exe -connect %2 en el direcotrio %3" >> %temp%\LaunchUltraVNC.log

timeout 2

winvnc.exe -connect %2 >> %temp%\LaunchUltraVNC.log

Lo primero es añadir una clave en el registro para permitir Conexiones Loopback (Allow Loopback Connections). Esto es

necesario, si no lo hacemos, recibiremos un error en el PC de Help Desk (un pequeño lio que se trae el viewer al ver que se

está conectando a localhost, y que nos trajo de cabeza algunos días…)

Lo segundo es ver si el VNC server está arrancado, y en caso contrario, arrancarlo.

En tercer lugar y último, ejecutamos winvnc.exe con la opción –connect

El parámetro %2 nos dirá donde nos vamos a conectar (localhost:5500). Si, nos conectamos a localhost, pero el túnel nos

llevará hasta la maquina remota que especificaremos al definir la aplicación.

Con el fichero extensions.xml y el LaunchUltraVNC preparados, construimos un ZIP que se tiene que llamar adito-

application-win-vnc.zip y descomprimir en una carpeta llamada adito-application-win-vnc (tiene que coincidir con el nombre

que aparece en el fichero extensions.xml):

id="adito-application-win-vnc"

Page 15: SSL E OPENVPN ALS ADITO VPN - Alonso Ballesteros VPN.pdf · Instalaremos un servidor Linux, en este caso hemos elegido Ubuntu, como podríamos haber elegido CentOS, ambas soluciones

Página 15 de 21

Con este ZIP ya preparado, nos vamos a ADITO VPN y añadimos una extensión:

Page 16: SSL E OPENVPN ALS ADITO VPN - Alonso Ballesteros VPN.pdf · Instalaremos un servidor Linux, en este caso hemos elegido Ubuntu, como podríamos haber elegido CentOS, ambas soluciones

Página 16 de 21

Page 17: SSL E OPENVPN ALS ADITO VPN - Alonso Ballesteros VPN.pdf · Instalaremos un servidor Linux, en este caso hemos elegido Ubuntu, como podríamos haber elegido CentOS, ambas soluciones

Página 17 de 21

Ahora tenemos que crear nuestra aplicación basándonos en esta extensión:

Page 18: SSL E OPENVPN ALS ADITO VPN - Alonso Ballesteros VPN.pdf · Instalaremos un servidor Linux, en este caso hemos elegido Ubuntu, como podríamos haber elegido CentOS, ambas soluciones

Página 18 de 21

Page 19: SSL E OPENVPN ALS ADITO VPN - Alonso Ballesteros VPN.pdf · Instalaremos un servidor Linux, en este caso hemos elegido Ubuntu, como podríamos haber elegido CentOS, ambas soluciones

Página 19 de 21

Una vez finalizado el asistente, los usuarios ya pueden ver en sus favoritos la nueva aplicación publicada:

Page 20: SSL E OPENVPN ALS ADITO VPN - Alonso Ballesteros VPN.pdf · Instalaremos un servidor Linux, en este caso hemos elegido Ubuntu, como podríamos haber elegido CentOS, ambas soluciones

Página 20 de 21

Establecer un túnel contra un servidor local

Imaginemos que tenemos un cliente de mensajería instantánea que se conecta contra un servidor de mensajería

corporativo, situado en nuestra red privada.

El problema es que los equipos que estén fuera de nuestra red, en principio no podrán conectarse al servidor

Para solucionar este problema, podemos establecer un túnel entre nuestro PC y el servidor de mensajería.

Si nuestro cliente se conecta por ejemplo a la IP privada 192.168.3.33 puerto 52225, podemos hacer que se conecte a

localhost puerto 52225 (por no cambiar el puerto, aunque podríamos poner otro)

Para que esto funcione, el agente de SSL Explorer tiene que tener establecido el túnel en cuestión.

En el siguiente pantallazo vemos la definición del túnel:

Page 21: SSL E OPENVPN ALS ADITO VPN - Alonso Ballesteros VPN.pdf · Instalaremos un servidor Linux, en este caso hemos elegido Ubuntu, como podríamos haber elegido CentOS, ambas soluciones

Página 21 de 21

El inconveniente de este tipo de túneles frente a otros túneles tradicionales como los establecidos por el Cliente Cisco VPN,

es que hay que reconfigurar la aplicación cliente para que se conecte a localhost:

Con el Cliente Cisco VPN esto sería transparente, y el cliente Cisco encuentra la ruta hacia la IP Privada, porque el equipo

realmente tiene una interfaz de red adicional que pertenece a esta red privada.

La ventaja del SSL Explorer es que no hace falta instalar nada en los equipos cliente.