Páginas

miércoles, 9 de octubre de 2013

Ubuntu. Configurar una VPN y el enrutado para separar flujos de tráfico

Al conectar a una VPN solo tenemos conexión a los equipos que se encuentran dentro de la red corporativa. Para tener acceso a internet debemos ajustar el  proxy corporativo en N sitios y tenemos herramientas capadas como Skype por lo que perdemos éste acceso.

La solución es simple:

1) Primero vamos a la configuración de VPN, vamos a la pestaña "Ajustes de IPv4", pulsamos el botón "Rutas" y ahi marcamos la opción "Usar esta conexión sólo para los recursos en su red".

2) Conectamos a la VPN y probamos que Skype y el navegador funcionan "sin proxy". Pero ahora resulta que no conectamos al escritorio remoto ni a ningún otro sitio de la red corporativa, por lo que faltan ciertos ajustes.

3) Si queremos acceder a una o varias máquinas de la red corporativa por el tunel VPN sin perder la navegación "externa" deberemos conocer ciertos datos. Lanzamos el comando ifconfig para ver nuestra IP tunel, en mi caso 10.59.200.87:

usuario@maquina:~$ ifconfig
eth4      Link encap:Ethernet  direcciónHW xx:
xx:xx:xx:xx:xx 
          Direc. inet:xxx.xxx.xxx.
xxx  Difus.:xxx.xxx.xxx.xxx  Másc:xxx.xxx.xxx.xxx
          Dirección inet6: xxxx::xxxx:xxxx:xxxx:xxxx/64 Alcance:Enlace
          ACTIVO DIFUSIÓN FUNCIONANDO MULTICAST  MTU:1500  Métrica:1
          Paquetes RX:108554 errores:0 perdidos:0 overruns:0 frame:0
          Paquetes TX:119590 errores:0 perdidos:0 overruns:0 carrier:0
          colisiones:0 long.colaTX:1000
          Bytes RX:60091563 (60.0 MB)  TX bytes:17759382 (17.7 MB)

lo        Link encap:Bucle local 
          Direc. inet:127.0.0.1  Másc:255.0.0.0
          Dirección inet6: ::1/128 Alcance:Anfitrión
          ACTIVO BUCLE FUNCIONANDO  MTU:16436  Métrica:1
          Paquetes RX:30496 errores:0 perdidos:0 overruns:0 frame:0
          Paquetes TX:30496 errores:0 perdidos:0 overruns:0 carrier:0
          colisiones:0 long.colaTX:0
          Bytes RX:1496970 (1.4 MB)  TX bytes:1496970 (1.4 MB)

tun0      Link encap:UNSPEC  direcciónHW 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 
          Direc. inet:10.59.200.87  P-t-P:10.59.200.87  Másc:255.255.255.255
          ACTIVO PUNTO A PUNTO FUNCIONANDO NOARP MULTICAST  MTU:1412  Métrica:1
          Paquetes RX:1076 errores:0 perdidos:0 overruns:0 frame:0
          Paquetes TX:900 errores:0 perdidos:0 overruns:0 carrier:0
          colisiones:0 long.colaTX:500
          Bytes RX:134470 (134.4 KB)  TX bytes:86186 (86.1 KB)


4) Para poder conectar por VPN a cualquier equipo de la red corporativa sin perder la conexión directa a internet en el navegador, skype y demás utilidades, deberemos ajustar las tablas de enrutamiento de nuesto Ubuntu:

sudo route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.59.200.87 dev tun0

Donde 10.0.0.0 son las direcciones IP de la red corporativa a las que necesitaríamos acceder (todas).
Donde 255.0.0.0 es la máscara para la red corporativa.
Donde 10.59.200.87 es la IP que nos han asignado al conectar a la VPN.
Donde tun0 es el interfaz del tunneling.


5) Para poder conectar por VPN únicamente a nuestro PC de la red corporativa sin perder la conexión directa a internet en el navegador, skype y demás utilidades, deberíamos teclear:

sudo route add -net 192.168.0.38 netmask 255.255.255.255 gw 10.59.200.87 dev ppp0

Donde 192.168.0.38 es la dirección IP de la máquina a la que queremos acceder.
Donde 255.255.255.255 es la máscara de red para una única máquina.
Donde 10.59.200.87 es la IP que nos han asignado al conectar a la VPN.
Donde tun0 es el interfaz del tunneling.


Referencias:
    http://www.taringa.net/posts/linux/17183350/Configurar-VPN-sin-perder-Internet.html

martes, 8 de octubre de 2013

Salida por el proxy corporativo autenticando en un dominio Windows

En redes Widows se usa NTLM (NT Lan Manager) que es un conjunto de protocolos de Microsoft que proporcionan autenticación, integridad y confidencialidad a los usuarios.

NTLMv2, introducido con Windows NT 4.0 SP4 y soportado por Windows 2000, amplía las capacidades de NTLM al soportar métodos criptográficos más modernos.

Mientras Kerberos ha reemplazado a NTLM como protocolo de autenticación por defecto del Directorio Activo (AD), NTML es aún muy usado.

CNTLM es una implementación libre de NTLM/NTLMv2 que podemos usar en Ubuntu a la hora de autenticarnos a la hora de conectar a través de un proxy que utilice NTLM.

CNTLM se sitúa entre las aplicaciones y los proxy corporativos.

Instalación:

sudo apt-get install cntlm

Configuración:

Editamos el fichero de configuración:

sudo gedit /etc/cntlm.conf

Ajustamos las líneas siguientes:

Username    xxxxxxxxxx
Domain        yyyyyyyyyy
Password     ppppppp


Proxy        xxx.xxx.xxx.xxx:pppp


Listen        rrrr

Donde xxxxxxxxxx es el nombre de usuario en el dominino.
Donde yyyyyyyyyy es el nombre del dominio.
Donde ppppppp es la password del usuario en el dominio. 
Donde xxx.xxx.xxx.xxx es la dirección IP del proxy corporativo
Donde pppp es el puerto del proxy corporativo
Donde rrrr es el puerto del proxy cntlm que deberemos configurar en las aplicaciones de nuestro sistema 

Ajuste de aplicativos:

Ya sólo queda ajustar el proxy del sistema apuntanto a localhost:rrrr y el proxy de todos aquellos aplicativos que no dependan de la configuración del proxy a nivel de sistema, por ejemplo wget, apt-get, etc.

Por último reiniciamos la máquina y listo

Parar y arrancar cntlm:





Si necesitamos para el servicio lanzamos:

sudo service cntlm stop

Si necesitamos reiniciar el servicio lanzamos:

sudo service cntlm start

Referencias:

http://cntlm.sourceforge.net/
http://en.wikipedia.org/wiki/NTLM

jueves, 3 de octubre de 2013

Arrancar y parar una máquina remotamente vía LAN

Hola

Para arrancar remotamente un servidor desde un ordenador cliente a través de una conexión de área local (LAN) deberemos:

1) Verificar que el servidor soporta WoL, muchos ordenadores actuales  lo soportan gracias a las fuentes de alimentación ATX que, cuando el ordenador está apagado, siguen alimentando a ciertas partes de la placa base permitiendo asimismo el Wake on Ring, la posibilidad de arancar el ordenador pulsando una tecla del teclado, la posibilidad de que se encienda a una determinada hora, etc.

2) Tener instalado en la máquina cliente el aplicativo wakeonlan:

sudo apt-get install wakeonlan

3) Averiguar la dirección MAC del servidor partiendo de su dirección IP, que deberá ser fija. Para hacerlo podemos lanzar el comando:

$ arp -a XXX.XXX.XXX.XXX 
servidor.local (XXX.XXX.XXX.XXX) en XX:XX:XX:XX:XX:XX [ether] en eth4

Donde XXX.XXX.XXX.XXX es la dirección IP del servidor (que debería ser visible).

4) Por último, tras verificar que el servidor está apagado pero tiene el cable de red enchufado en la tarjeta de la MAC identificada, lanzamos en el cliente el comando:

wakeonlan XX:XX:XX:XX:XX:XX

Nota. En la VPN que utilizamos el comando NO es operativo, habrá que averiguar la razón, parece por temas de netmask.

Para parar remotamente un servidor desde un ordenador cliente a través de una conexión de área local (LAN) deberemos:

1) Deberemos tener instalado en nuestro servidor un servidor ssh. Para instalarlo debemos:

sudo apt-get install openssh-server

2) Seguidamente nos conectamos con el servidor vía ssh con:

ssh usuario@XXX.XXX.XXX.XXX

Donde XXX.XXX.XXX.XXX es la dirección IP del servidor

3) Una vez conectados al servidor remoto tenemos varias opciones:

Parar el servidor (Una vez apagado el servidor NO podríamos reiniciarlo vía VPN con el comando wakeonlan):

sudo halt

Reiniciar el servidor (Ésta es la opción recomandada vía VPN):

sudo shutdown -r


Un saludo

jueves, 26 de septiembre de 2013

Gestores de ventanas y escritorios en Ubuntu

Al abrir una sesión en Ubuntu, el gestor de sesiones LightDM (la pantalla de acceso que pide usuario y contraseña) nos ofrece distintas opciones de escritorio que dependerán tanto de la versión de Ubuntu instalada como de los escritorios adicionales que hayamos podido añadir.

Conviene aclarar los conceptos porque hay mucha confusión:

Gestor de ventanas

Es el software que muestra por pantalla los diferentes programas que ejecutamos sobre nuestra interfaz gráfica X11. Algunos de los mas conocidos son: E17(Enlightenment), Metacity, KWin, Compiz, Xfwm, Openbox, Mutter, Muffin, ...

Escritorio (o Shell)

Es un conjunto de aplicaciones agrupadas para simplificar el uso del ordenador. Todo escritorio lleva un gestor de ventanas, un gestor de redes, un gestor de sonido, un gestor de archivos, etc. Algunos de los mas usados son:
  • Gnome 1.X y 2.X. Las distintas versiones han tenido varios gestores de ventanas. Por orden de antigüedad: Sawfish, Enlightenment y Metacity
  • Gnome-Shell (o Gnome 3.x). Tiene como gestor de ventanas Mutter.
  • KDE. Tiene como gestor de ventanas KWin.
  • Unity. Tiene como gestor de ventanas Compiz.
  • Xfce. Tiene como gestor de ventanas Xfwm.
  • Lxde. Tiene como gestor de ventanas Openbox.
  • Cinnamon. Tiene como gestor de ventanas Muffin.
Distribuciones

Hay muchas y muy variadas, vamos a comentar únicamente las basadas en Ubuntu (no conviene olvidar que Ubuntu es una distribución comercial basada a su vez en la distribución libre Debian):
  • Ubuntu. Escritorio Gnome ó Unity (según sube la versión).
  • Xubuntu. Viene con el escritorio Xfce
  • Kubuntu. Viene con el escritorio KDE
  • Lubuntu. Viene con el escritorio Lxde
  • Linux Mint. Escritorio KDE, Gnome, XFCE ó Cinnamon (según sube la versión). Las últimas versiones se basan directamente en Debian.
Y me pregunto ¿porqué habrá tanta confusión si es todo tan sencillo? ;-)

Notas.

Como oigo comentarios sobre lo maravilloso que es Cinnamon y lo malo que es Gnome-Shell, he probado a instalarlo en Ubuntu 12.04 LTS con:

sudo add-apt-repository ppa:gwendal-lebihan-dev/cinnamon-stable
sudo apt-get update
sudo apt-get install cinnamon


Próximamente comentaré qué tal va...

Un saludo

miércoles, 25 de septiembre de 2013

Utilidades Ubuntu vía terminal

En esta entrada vamos a ir recopilando una serie de comandos/aplicaciones Linux muy útiles, que en muchas ocasiones hemos usado pero que siempre terminamos olvidando.

Algunas de las aplicaciones son comunes en los menús de las distintas distribuciones, pero cada es más complicado encontrarlas con la creciente variedad de interfaces disponibles.

¿Cómo averiguar la versión de Ubuntu instalada por terminal? 

lsb_release -a 

¿Cómo monitorizar de forma gráfica los distintos ficheros de log de Ubuntu? 

gnome-system-log 

¿Cómo lanzar la herramienta gráfica de gestión de discos? 

palimpsest 

¿Cómo montar una carpeta remota como carpeta local vía SSH? 

sshfs uuuuuuu@xxx.xxx.xxx.xxx:/remote/folder /local/folder

Donde uuuuuuu es el nombre del usuario de la cuenta SSH
Donde xxx.xxx.xxx.xxx es la IP donde conectar
Donde /remote/folder es la carpeta remota
Donde /local/folder es la carpeta local donde será montada.
 

¿Cómo transferir un fichero vía SSH? 

scp fichero.txt uuuuuuu@xxx.xxx.xxx.xxx:/remote/folder

Donde fichero.zip es el fichero local que queremos copiar
Donde uuuuuuu es el nombre del usuario de la cuenta SSH
Donde xxx.xxx.xxx.xxx es la IP donde conectar
Donde /remote/folder  es el directorio remoto donde vamos a copiar

Actualizar Ubuntu a la siguiente versión

sudo apt-get update
sudo apt-get upgrade

sudo update-manager -c

Redirigir el tráfico a determinadas IP por cierta conexión

Si tenemos varios interfaces de red activos: eth0, wlan0, wlan1, tun0, etc. Podemos especificar por cual de ellos queremos que vayan las peticiones a determinado rango de IP. Para ello usamos:

sudo route add -net 10.0.0.0 netmask 255.0.0.0 gw xxx.xxx.xxx.xxx dev tun0

Donde 10.0.0.0 son las direcciones IP de la red corporativa a las que necesitaríamos acceder, en el ejemplo accedemos a todas las que sean 10.XXX.XXX.XXX
Donde 255.0.0.0 es la máscara para la red corporativa.
Donde xxx.xxx.xxx.xxx es la IP que tenemos asignada en el interfaz tun0.
Donde tun0 es el interfaz por donde queremos desviar éste tráfico en concreto.


Medir el ancho de banda de una conexión VPN

Hola

Supongamos que todo un grupo de usuarios tienen que conectar al escritorio remoto de sus máquinas de la oficina a través de la VPN de la empresa, pero no tenemos muy claro cual es el ancho de banda disponible en la VPN ni cual será el límite impuesto para cada conexión.

Sin éste dato es difícil asegurar qué herramientas de acceso remoto no serán adecuadas por el consumo de ancho de banda que implican sus protocolos:
  • VNC (protocolo RFB)
  • Terminal Server (protocolo RDP)
  • NX (protocolo X11)
Para medir el ancho de banda de la conexión VPN podemos usar la utilidad iperf. Ésta utilidad deberá ser instalada en dos máquinas, la primera sería nuestro portatil (en casa) y la segunda nuestra máquina de la oficina a la que nos debemos conectar de forma remota.

Para instalarlo lanzamos el mismo comando en ambas máquinas:

    sudo apt-get install iperf

Primero configuramos iperf en la máquina de la oficina para que actúe como servidor:

    iperf -s -p XXXXX -f KBytes

    Donde -p XXXXX define el puerto de escucha, por defecto 5001.
    Donde -f KBytes define que los resultados sea generen en KBytes.

Seguidamente configuramos iperf en el portatil para que actúe como cliente y lance las pruebas:

    iperf -c XXX.XXX.XXX.XXX -p XXXXX -t 100 -P 1

    Donde -c XXX.XXX.XXX.XXX define la dirección IP de la máquina 'servidor'.
    Donde -p XXXXX define el puerto donde iperf escucha en el servidor.
    Donde -t 100 define el tiempo que dura el test, por defecto 10 segundos.
    Donde -P 1 define el número de clientes concurrentes, por defecto 1.

Por defecto, es el cliente es el que manda datos al servidor durante 10 segundos.

Nota 1. Éstas medidas varían dependiendo del tráfico de la VPN y del tráfico en la red de la oficina. Es interesante repetirlas a distintas horas para observar las diferencias.

Nota 2. Si queremos realizar pruebas de velocidad en el otro sentido (subida desde el server al cliente) podemos intercambiar los roles de ambas máquinas.

Nota 3. Evidentemente podemos usar iperf para medir el ancho de banda disponible en cualquier conexión entre dos máquinas, ésto es sólo un ejemplo de uso.

Ejemplo.

Se puede jugar con la herramienta en local para probar los distintos parámetros (iperf --help). Veamos un ejemplo:

1) En un terminal de nuestro portatil levantamos el servidor iperf escuchando en el puerto 9999:

eduardo@Dune:~$ iperf -s -p 9999 -f KBytes
------------------------------------------------------------
Server listening on TCP port 9999
TCP window size: 85.3 KByte (default)
------------------------------------------------------------


2) En un segundo terminal de nuestro portatil lanzamos el cliente, simulando 10 usuarios concurrentes y durante un tiempo de 100 segundos:

eduardo@Dune:~$ iperf -c 127.0.0.1 -p9999 -t 100 -P 10
------------------------------------------------------------
Client connecting to 127.0.0.1, TCP port 9999
TCP window size:  167 KByte (default)
------------------------------------------------------------
[  4] local 127.0.0.1 port 48966 connected with 127.0.0.1 port 9999
[  5] local 127.0.0.1 port 48967 connected with 127.0.0.1 port 9999
[  7] local 127.0.0.1 port 48969 connected with 127.0.0.1 port 9999
[  8] local 127.0.0.1 port 48970 connected with 127.0.0.1 port 9999
[  9] local 127.0.0.1 port 48971 connected with 127.0.0.1 port 9999
[  6] local 127.0.0.1 port 48968 connected with 127.0.0.1 port 9999
[ 10] local 127.0.0.1 port 48972 connected with 127.0.0.1 port 9999
[  3] local 127.0.0.1 port 48965 connected with 127.0.0.1 port 9999
[ 11] local 127.0.0.1 port 48973 connected with 127.0.0.1 port 9999
[ 12] local 127.0.0.1 port 48974 connected with 127.0.0.1 port 9999
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-100.0 sec  13.2 GBytes  1.13 Gbits/sec
[  7]  0.0-100.0 sec  11.1 GBytes   950 Mbits/sec
[  8]  0.0-100.0 sec  11.9 GBytes  1.02 Gbits/sec
[  6]  0.0-100.0 sec  16.6 GBytes  1.43 Gbits/sec
[  3]  0.0-100.0 sec  11.8 GBytes  1.02 Gbits/sec
[  5]  0.0-100.0 sec  12.0 GBytes  1.03 Gbits/sec
[  9]  0.0-100.0 sec  10.9 GBytes   940 Mbits/sec
[ 10]  0.0-100.0 sec  13.0 GBytes  1.12 Gbits/sec
[ 11]  0.0-100.0 sec  13.0 GBytes  1.11 Gbits/sec
[ 12]  0.0-100.0 sec  10.8 GBytes   924 Mbits/sec
[SUM]  0.0-100.0 sec   124 GBytes  10.7 Gbits/sec


Qué buen canuto ¿verdad? ;-)

Un saludo

miércoles, 21 de agosto de 2013

Ocultar la versión de Tomcat de las páginas de error

Como medida de seguridad, siempre es interesante que en las páginas de error genéricas que genera Tomcat, por ejemplo la de error 404, no aparezca la versión de Tomcat que estamos usando.

Esto evita que posibles atacantes, al conocer qué versión del servidor tenemos,  aprovechen las vulnerabilidades conocidas del servidor.

Hay una forma muy simple de ajustar el contenido de ésta pantalla:

1) Nos movemos al directorio $CATALINA_HOME/lib, y creamos el subdirectorio org/apache/catalina/util. Por ejemplo, suponiendo que $CATALINA_HOME está en /home/tomcat realizaríamos:

cd /home/tomcat/lib
mkdir -p org/apache/catalina/util

2) Nos movemos al directorio que acabamos de generar y creamos el fichero ServerInfo.properties, en éste fichero añadimos el parámetro server.info, ajustando su valor a lo que mejor nos parezca.

cd org/apache/catalina/util
$ vi ServerInfo.properties
server.info=Apache Tomcat Version XXX

3) Por último reiniciamos el servidor Tomcat.

cd $CATALINA_HOME/bin
./catalina.sh stop
./catalina.sh start 

Con éstos ajustes, cuando salte la página de error 404, veremos que ya no aparece la versión de Tomcat real, sino que aparece "Apache Tomcat Version XXX"

P.D. Si queremos saber la versión real del Tomcat, podemos ejecutar el script:

$CATALINA_HOME/bin/version.sh

sábado, 22 de junio de 2013

Instalación JBoss Application Server 7.1.1 Ubuntu 12.04

Introducción

En esta entrada vamos a ver cómo instalar JBoss Application Server 7.1.1 en Ubuntu 12.04

Necesitaremos tener instalado el JDK, en nuestro ejemplo ya está instalado el jdk1.7.0_25 de Oracle

Descarga de JBoss Application Server 7.1.1

Para descargar JBoss vamos a la URL http://www.jboss.org/jbossas/downloads/ para descargar la última versión 7.1.1.Final, con lo que hacemos clic en el enlace http://download.jboss.org/jbossas/7.1/jboss-as-7.1.1.Final/jboss-as-7.1.1.Final.tar.gz

Instalación de JBoss

1) Descomprimimos JBoss en la carpeta que deseemos, en mi caso en /home/usuario/jboss-as-7.1.1.Final

    tar xfvz jboss-as-7.1.1.Final.tar.gz

2) Renombramos la carpeta

    mv jboss-as-7.1.1.Final jboss

3) Creamos el usuario administrador del JBoss, en este ejemplo será nuestro propio usuario, dado que hemos instalado todo en el /home/usuario

    - Lanzamos el script de gestión de usuarios del propio JBoss:

        /home/usuario/jboss/bin/add-user.sh

    - Nos pide el tipo de usuario, pulsamos la opción "a", nos pide el "realm" (¿se traduciría por grupo?) que es el nombre de la base de datos que contiene los usuarios autorizados a utilizar el servidor, dejamos la opción por defecto "ManagementRealm", nos pide también el nombre de usuario y la contraseña (dos veces), metemos nuestro usuario/password de ubuntu (usuario/password)

        What type of user do you wish to add?
         a) Management User (mgmt-users.properties)
         b) Application User (application-users.properties)
        (a): a

        Enter the details of the new user to add.
        Realm (ManagementRealm) :
        Username : usuario
        Password : password
        Re-enter Password : password
        About to add user 'usuario' for realm 'ManagementRealm'
        Is this correct yes/no? yes
        Added user 'eduardo' to file '/home/usuario/jboss/standalone/configuration/mgmt-users.properties'
        Added user 'eduardo' to file '/home/usuario/jboss/domain/configuration/mgmt-users.properties'


4) Para arraccar el servidor JBoss de modo que sea únicamente accesible desde nuestro ordenador lanzamos el script:

    /home/usuario/jboss/bin/standalone.sh

5) Si tenemos una dirección IP estática y queremos que el servidor sea visible desde otras máquinas, para arrancar el servidor deberemos pasar como parámetro la dirección IP del mismo:

    /home/usuario/jboss/bin/standalone.sh -Djboss.bind.address=192.168.0.11 -Djboss.bind.address.management=192.168.0.11 &

6) Accedemos a la consola de administración de JBoss en cualquiera de las siguientes URL: http://localhost:9990/console ó http://192.168.0.11:9990/console, se nos solicitará usuario y password, los datos que hemos introducido antes. Desde esta consola podremos desplegar nuestras aplicaciones: Manage deployments -> Add content

7) Para acceder a las aplicaciones desplegadas tendremos la URL http://localhost:8080/nombre-app

8) Para detener JBoss lanzamos el script:

    /home/usuario/jboss/bin/jboss-cli.sh --connect command=:shutdown

Eso es todo, en la siguiente entrada montaremos jBPM en JBoss y desarrollaremos un workflow de ejemplo.

Referencias:

    - https://community.jboss.org/wiki/JBossAS7UserGuide
    - https://www.digitalocean.com/community/articles/how-to-install-jboss-on-ubuntu-12-10-64bit

jueves, 20 de junio de 2013

Gestión de proyectos y mapas conceptuales en Ubuntu

Introducción

Como necesitaba un software para la gestión de proyectos y otro para la realización de mapas conceptuales en Ubuntu me he puesto a googlear y he dado con un par de herramientas interesantes.

OpenProj

Es la alternativa en software libre a la aplicación Microsoft Project. Ofrece diagramas Gantt, PERT, histogramas, informes, etc.

Es una aplicación Java.
Instalación OpenProj

Dado que OpenProj no aparece en los repositorios de Canonical Podemos descargar el paquete de:

http://sourceforge.net/projects/openproj/files/OpenProj%20Binaries/1.4/openproj_1.4-2.deb/download

Para instalarlo basta con lanzar el comando:

sudo dpkg -i openproj_1.4-3_all.deb

También podemos hacer doble clic sobre el paquete para que se instale a través del software-center de Ubuntu.

Una vez instalado necesitamos tener instalado Java y haber definido el JAVA_HOME en nuestro fichero .profile con:

export JAVA_HOME=/home/java/jdk/jdk1.6.0_34

Nota. Con Java 1.7.0_XX he tenido problemas, por lo que he bajado a Java 1.6 y todo ha funcionado perfectamente.

FreeMind

Es la alternativa en software libre a la aplicación MindManager.

Es también una aplicación Java.

Instalación FreeMind

FreeMind sí aparece en los repositorios Canonical de Ubuntu,  por lo que la instalación es más rápida. Descargamos los paquetes con:

sudo apt-get install freemind
sudo apt-get install freemind-doc
sudo apt-get install freemind-browser
sudo apt-get install freemind-plugins-help
sudo apt-get install freemind-plugins-script
sudo apt-get install freemind-plugins-svg

Nota. Con Java 1.7.0_XX también da problemas, por lo que he bajado a Java 1.6 y he reajustado el fichero .profile del mismo modo que en el aplicativo anterior y listo.

miércoles, 5 de junio de 2013

Instalación de los drivers de Ralink RT3290 en Ubuntu 12.10

Introducción

Vamos a instalar los drivers de la tarjeta wifi ralink que viene instalada en un portatil HP ProBook 4540S.

Según las especificaciones del portatil, tiene una tarjeta Ralink 802.11b/g/n (1x1) y Bluetooth 4.0

Identificar la tarjeta WIFI

Averiguamos el modelo de tarjeta con:

lspci | grep Network

Deberíamos obtener la salida:

Network controller: Ralink corp. Device 3290

Compilar driver paso a paso

Dado que los drivers no están disponibles como paquete instalable en las páginas de HP,  vamos a la página de Ralink, desde donde se nos deriva para descargar los drivers a MediaTek, donde encontramos en enlace al driver 3562 que, con unos ligeros ajustes nos funcionará.

1) Instalamos los paquetes necesarios para compilar los drivers de la tarjeta wifi:

sudo apt-get update && sudo apt-get install build-essential linux-headers-generic

2) Descargamos el código fuente del driver (nos pide una dirección de correo):
   

http://www.mediatek.com/_en/07_downloads/01-1_windowsDetail.php?sn=5019

3) Descomprimimos el archivo descargado:
   
tar -xvf DPO_RT3562_3592_3062_LinuxSTA_V2.4.1.1_20101217.tgz

4) Ajustamos el fichero de configuración:

gedit DPO_RT3562_3592_3062_LinuxSTA_V2.4.1.1_20101217/os/linux/config.mk


5) Cambiamos las siguientes líneas

La línea 12 deberá tener: HAS_WPA_SUPPLICANT=y
La línea 15 deberá tener: HAS_NATIVE_WPA_SUPPLICANT=y

6) Nos movemos al directorio DPO_RT3562_3592_3062_LinuxSTA_V2.4.1.1_20101217 y compilamos los fuentes:

sudo make
sudo make install


7) Activamos el driver y comprobamos si la tarjeta wifi funciona:
   
sudo modprobe rt3290sta

En el icono de red de la parte superior derecha de la pantalla debería aparecer una conexión de tipo inalámbrica de nombre Ralink 802.11 bg WLAN.

8) Editamos el fichero /etc/modules, que contiene los nombres de los módulos del kernel que deberán ser cargados al arrancar el sistema.
   
sudo gedit /etc/modules

9) Añadimos al final del fichero lo siguiente:
   
rt3290sta

10) Guardamos el archivo y salimos.

11) Actualizamos los cambios y reiniciamos el portatil.

sudo update-initramfs -u

12) Si tras reiniciar todo funciona correctamente (seguimos viendo la conexión de red WIFI) podemos borrar el directorio DPO_RT3562_3592_3062_LinuxSTA_V2.4.1.1_20101217 y limpiar los paquetes descargados para la compilación:

sudo apt-get remove build-essential
sudo apt-get remove linux-headers-generic

Nota. Puede ser interesante conservar los drivers por si tuviésemos que reinstalar Ubuntu en el portatil .

Nota. El driver específico para la 3290 "DPO_RT3290_LinuxSTA_V2600_20120508.tar.gz" que podemos encontrar en muchas páginas como http://www.avisa2.com/2013/03/wifi-ralink-rt3290-en-ubuntu-1210.html no funciona correctamente, bloqueando constantemente el equipo.

Nota. En Ubuntu 14.04 el reconocimiento de éste tipo de tarjetas es automático ya desde el inicio de la instalación.

Eso es todo.

Enlaces:

http://rricketts.com/installing-ralink-rt3290-wireless-drivers-in-ubuntu-12-04/
http://www8.hp.com/es/es/products/laptops/product-detail.html?oid=5229455

martes, 4 de junio de 2013

Instalar Ubuntu 12.10 Windows 8 preinstalado UEFI/Legacy

Introducción

Hemos tenido que instalar Ubuntu 12.10 en una serie de portátiles en los que venía preinstalado Windows 8. El objetivo era dejar Ubuntu como único sistema operativo.

La clave de toda la operación es que los portátiles ya no tienen la típica BIOS, ahora vienen con UEFI, además la opción "Secure Boot" está bloqueada por lo que no podemos ajustar el dispositivo del que queremos arrancar ni podemos desactivar UEFI para pasar al modo Legacy (BIOS Tradicional).

Lo que no se debe hacer es entrar a saco y eliminar todas las particiones del disco (partición UEFI incluída) para dejar únicamente las particiones típicas de Linux.

Preparar la imagen de Ubuntu 12.10

Se ha montado un pendrive con la imagen de Ubuntu:

http://releases.ubuntu.com/12.10/ubuntu-12.10-desktop-amd64.iso

Mediante el uso de la herramienta:

usb-creator-gtk

El uso de la misma es simple, elegimos la imagen de la iso a instalar xxxxxxx.iso y seleccionamos la unidad usb donde volcar el disco de arranque.

Desproteger UEFI

Parece que no podemos ajustar las opciones que deseamos en la UEFI, porque de algún modo el Windows 8 preinsladalo lo deja bloquedo. Para desbloquearlo debemos terminar de instalar Windows 8 y, moviendo el ratón a la esquina inferior derecha de la pantalla, seleccionar las siguientes opciones:
  • Cambiar la configuración del PC
  • En la parte izquierda de la pantalla de configuración seleccionamos la opción "Uso general",  en las opciones de la mitad derecha de la pantalla elegimos la última "Reiniciar ahora" del grupo "Inicio avanzado".
  • En la siguiente pantalla hacemos clic en la opción "Solucionar problemas"
  • En la siguiente pantalla hacemos clic en la opción "Opciones avanzadas"
  • En la siguiente pantalla hacemos clic en la opción "Configuración de inicio"
  • En la siguiente pantalla hacemos clic en el botón "Reiniciar"
Ajustamos la BIOS/UEFI

Cuando reiniciamos el PC podemos acceder a la BIOS/UEFI pulsando DEL ó F9 o el botón de acceso a la BIOS/UEFI de nuestro PC.

Una vez dentro de la BIOS/UEFI desactivaremos la opción "Secure Boot", marcaremos la opción "Legacy" y ajustaremos la secuencia de dispositivos de arranque "Boot order" colocando "USB Device" la primera.

Insertaremos el pendrive con Ubuntu 12.10 en algún puerto USB y reiniciamos el PC

Instalamos Ubuntu 12.10

Tras reiniciar el PC, se lanza el proceso de instalación de Ubuntu, que tras solicitarnos la ubicación, el teclado, etc, nos lleva a la típica pantalla de definición de las particiones, en ella deberemos elegir la opción "Reemplazar Windows 8 con Ubuntu", no vamos a redefinir particiones manualmente.

Tras la instalación de Ubuntu tendremos una instalación con sólo dos particiones, la de intercambio (swap) y la del sistema (/).

Instalamos de nuevo Ubuntu 12.10

Volvemos a reiniciar el PC con el pendrive insertado en el puerto USB, la idea es repetir el anterior proceso seleccionando ahora, en la pantalla de gestión de particiones, la opción manual que permite definir a mano las mismas:
  • SWAP. Tipo área de intercambio. Típicamente el tamaño de la ram del equipo 8GB (8000 MB).
  • SISTEMA (/). Tipo EXT4. Nosotros asignamos 30GB (30.000MB).
  • USUARIO (/home). Tipo EXT4. Asignamos el resto del disco duro.
Tras la instalación de Ubuntu tendremos un PC sin Windows 8, con la BIOS abierta y una instalación de Linux clásica.

Ajuste del proxy del sistema en Ubuntu 12.10 LTS

Tras instalar Ubuntu 12.10 LTS desde un pendrive en un equipo limpio nos hemos encontrado con que no éramos capaces de ajustar la configuración del proxy ni mediante el gestor de actualizaciones (tocando el fichero /etc/apt/apt.conf) ni ajustando el proxy a nivel general del sistema (jugando con el ajuste de Red del área de Configuración del Sistema).

Tras muchas pruebas, la única forma de ajustar el proxy para que el gestor de paquetes APT (Advanced Packaging Tool) pudiese realizar la primera actualización completa ha sido la siguiente:

- Crear el fichero /etc/apt/apt.conf.d/02proxy
- Meterle la siguiente línea:
    Acquire::http::Proxy "http://idusuario:password@xxx.xxx.xxx.xxx:puerto";

Tras ésto, se reinicia el equipo y se pulsa la opción actualizar software del menú que se despliega en el icono superior derecho.

Nota. Tras lanzar el gestor de actualizaciones y reiniciar el equipo, ya es efectivo el ajuste del proxy a nivel de sistema el apartado "Red" de la herramienta "Configuración del sistema". Para ajustar el proxy del sistema, deberemos:

- Seleccionar el método manual (el automático con la URL de configuración no funciona al menos con nuestro proxy)
- Definir el host como usuario:password@ipproxy
- Meter el puerto en el cuadro de diálogo apropiado

domingo, 26 de mayo de 2013

Alfresco Community 4.2.c indexando en Solr

Introducción

En esta entrada vamos a detallar cómo instalar y configurar alfresco-community (versión 4.2.c) para que utilice Solr como motor de indexación. Cada uno de los dos aplicativos correrá en su propia instancia de Tomcat, simulando así un entorno de producción donde se intenta evitar que la sobrecarga de los procesos de indexación de documentos afecten al rendimiento de Alfresco.

Descargas

Descargar las aplicaciones
  • Alfresco. Lo descargamos de la URL: 
    https://process.alfresco.com/ccdl/?file=release/community/build-04576/alfresco-community-4.2.c.zip
  • Solr. Lo descargamos de la URL: 
    https://process.alfresco.com/ccdl/?file=release/community/build-04576/alfresco-community-solr-4.2.c.zip

Descargar el entorno de trabajo

Para conocer los requisitos de funcionamiento de la versión 4.2.c de Alfresco se ha consultado la documentación ofrecida en el siguiente enlace: http://wiki.alfresco.com/wiki/Alfresco_Community_4.2.c_Release_Notes.
  • BBDD. Elegimos PostgreSQL 9.1
  • JDK. Elegimos jdk-7u7-linux-i586.tar.gz
  • Servidor. Elegimos Tomcat 7.0.30

Instalacion del entorno

Instalación de PostgreSQL 9.1

Descargamos 'PostgreSQL 9.1' y la consola de administración 'pgAdmin III' mediante los comandos:

    sudo apt-get postgresql
    sudo apt-get pgadmin3


Iniciamos pgadmin3 mediante el comando:

    $ pgadmin3

Definimos una nueva conexión con la BBDD recien instalada, haciendo clic en la opción Añadir servidor del menú Archivo:
  • Nombre de la conexión: localhost
  • Servidor: 127.0.0.1
  • Puerto: 5432
  • Usuario: postgres
  • Password: <SIN PASSWORD>
Hacemos doble clic sobre el nuevo servidor localhost y:
  • Haciendo clic con el botón derecho del ratón sobre la opción Login Roles definimos un nuevo rol de login alfresco/alfresco con privilegios Supersuer 
  • Haciendo clic con el botón derecho del ratón sobre la opción Databases definimos una nueva BBDD:
        - Nombre: alfresco
        - Propietario: alfesco
        - Encoding: UTF-8
        - Collation: en_GB.utf8
        - Character type: en_GB.utf8

Instalación del JDK 1.7.0 u7
  • Descargamos el 'JDK 1.7.0 u7' de la URL: http://download.oracle.com/otn/java/jdk/7u7-b10/jdk-7u7-linux-i586.tar.gz
  • Descomprimimos el fichero 'jdk-7u7-linux-i586.tar.gz' en la carpeta /opt/jdk1.7.0_07
Instalación de la instancia Tomcat 7.0.30 para Alfreco
  • Descargamos 'Tomcat 7.0.30' de la URL: http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.30/bin/apache-tomcat-7.0.30.tar.gz
  • Creamos la carpeta /opt/alfresco
  • Descomprimimos el fichero 'apache-tomcat-7.0.30.tar.gz' en la carpeta /opt/alfresco/apache-tomcat-7.0.30
  • Renombramos la carpeta /opt/apache-tomcat-7.0.30 como /opt/alfresco/tomcat
  • Ajustamos el Tomcat según las instrucciones de la página de Alfresco: http://wiki.alfresco.com/wiki/Install_Tomcat6
        - Creamos las carpetas /opt/alfresco/tomcat/shared/classes/
        - Creamos las carpetas /opt/alfresco/tomcat/shared/lib/
        - Ajustamos la propiedad 'shared.loader' del fichero /opt/tomcat-alfresco/conf/catalina.properties con el valor:

            shared.loader=${catalina.base}/shared/classes,${catalina.base}/shared/lib/*.jar
  • Ajustamos el fichero /opt/alfresco/tomcat/bin/startup.sh añadiendo las siguientes líneas al inicio del mismo
            export JAVA_HOME=/opt/jdk1.7.0_07             
            export ALF_HOME=.            
            export JAVA_OPTS='-Xmx512m -Xmx1024m -Xss256k -XX:MaxPermSize=256m -XX:NewSize=256m -server'             
            export JAVA_OPTS="${JAVA_OPTS} -Dalfresco.home=${ALF_HOME} -Dcom.sun.management.jmxremote"             
            export JAVA_OPTS="${JAVA_OPTS} -Dsun.security.ssl.allowUnsafeRenegotiation=true"
  • Ajustamos el fichero /opt/alfresco/tomcat/conf/tomcat-users.xml añadiendo dentro del bloque <tomcat-users> los siguiente:
            <role rolename="manager-gui"/>             
            <user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status"/>

Instalación de la instancia Tomcat 7.0.30 para Solr
  • Ya tenemos descargado 'Tomcat 7.0.30' del paso anterior
  • Creamos la carpeta /opt/solr
  • Descomprimimos el fichero 'apache-tomcat-7.0.30.tar.gz' en la carpeta /opt/solr/apache-tomcat-7.0.30
  • Renombramos la carpeta /opt/apache-tomcat-7.0.30 como /opt/solr/tomcat
  • Ajustamos el fichero /opt/solr/tomcat/bin/startup.sh añadiendo las siguientes líneas al inicio del mismo
            export JAVA_OPTS="-Dsun.security.ssl.allowUnsafeRenegotiation=true"
  • Ajustamos el fichero /opt/solr/tomcat/conf/server.xml
        - Cambiar 8005 por 9005 en la línea:
       
            <Server port="8005" shutdown="SHUTDOWN">

        - Cambiar 8080 por 9080 y 8443 por 9443 en el bloque:

            <Connector port="8080" protocol="HTTP/1.1"
                connectionTimeout="20000"
                redirectPort="8443" />


        - Cambiar 8009 por 9009 y 8443 por 9443 en al bloque:
       
            <Connector port="9009" protocol="AJP/1.3" redirectPort="9443" />
       
  • Ajustamos el fichero /opt/alfresco/tomcat/conf/tomcat-users.xml añadiendo dentro del bloque <tomcat-users> los siguiente:
        <role rolename="manager-gui"/>
        <user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status"/>


Instalación y ajuste de Alfresco
  • Extraemos el contenido del zip de alfresco (alfresco-community-4.2.c.zip) en /opt/alfresco
  • Copiamos el contenido de /opt/alfresco/web-server en /opt/alfresco/tomcat (permitiendo merge all y replace all)
  • Ajustamos el propietario de /opt/alfresco con:
        sudo chown -R alfresco:alfresco /opt/alfresco
  • Creamos el fichero
        /opt/alfresco/tomcat/shared/classes/alfresco-global.properties

    a partir del fichero

        /opt/alfresco/tomcat/shared/classes/alfresco-global.properties.sample
  • En el fichero /opt/alfresco/tomcat/shared/classes/alfresco-global.properties añadimos/descomentamos/ajustamos lo siguientes:
        dir.root=/opt/alfresco/alf_data
        alfresco.port=8080
        share.port=8080
        avm.rmi.service.port=50501
        avmsync.rmi.service.port=50502
        attribute.rmi.service.port=50503
        authentication.rmi.service.port=50504
        repo.rmi.service.port=50505
        action.rmi.service.port=50506
        wcm-deployment-receiver.rmi.service.port=50507
        monitor.rmi.service.port=50508
        db.name=alfresco
        db.host=localhost
        db.port=5432
        db.driver=org.postgresql.Driver
        db.url=jdbc:postgresql://${db.host}:${db.port}/${db.name}


  •  Creamos el fichero
         /opt/alfresco/tomcat/shared/classes/alfresco/web-extension/share-config-custom.xml

    a partir del fichero

        /opt/alfresco/tomcat/shared/classes/alfresco/web-extension/share-config-custom.xml.sample
  • En el fichero /opt/alfresco/tomcat/shared/classes/alfresco/web-extension/share-config-custom.xml descomentamos el primer bloque (ojo que hay dos) <config evaluator="string-compare" condition="Remote">
  • Arrancamos el tomcat de alfresco con:
        /opt/alfresco/tomcat/bin/startup.sh
  • Monitorizamos la consola con:
        tail -f /opt/alfresco/tomcat/logs/catalina.out
  • Probamos que todo funciona accediendo a las URL:
        http://localhost:8080/share (admin/admin)
        http://localhost:8080/alfresco/faces/jsp/login.jsp (admin/admin)

Instalación y ajuste de Solr
  • Extraemos el contenido del zip de solr (alfresco-community-solr-4.2.c.zip) en /opt/solr
  • Ajustamos el propietario de /opt/solr con:       
        sudo chown -R alfresco:alfresco /opt/solr
  • Copiamos el fichero
        /opt/solr/alfresco-community-solr-4.2.c/solr-tomcat-context.xml
    
    creando las carpetas necesarias, en

        /opt/solr/tomcat/conf/Catalina/localhost/solr.xml 
  • Editamos el fichero /opt/solr/tomcat/conf/Catalina/localhost/solr.xml y remplazamos las dos apariciones de @@ALFRESCO_SOLR_DIR@@ por /opt/solr
  • Creamos la carpeta /opt/solr/solrdata
  • Editamos el fichero /opt/solr/workspace-SpacesStore/conf/solrcore.properties y reemplazamos @@ALFRESCO_SOLR_DIR@@ por /opt/solr/solrdata
  • Editamos el fichero /opt/solr/archive-SpacesStore/conf/solrcore.properties y reemplazamos @@ALFRESCO_SOLR_DIR@@ por /opt/solr/solrdata

Ajustes SSL para Alfresco
  • Creamos la carpeta /opt/alfresco/alf_data/keystore
  • Copiamos el contenido de
            /opt/alfresco/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/keystore

        en


            /opt/alfresco/alf_data/keystore
  • Editamos el fichero /opt/alfresco/tomcat/conf/tomcat-users.xml añadiendo lo siguiente al bloque <tomcat-users>:
            <user username="CN=Alfresco Repository Client, OU=Unknown,
            O=Alfresco Software Ltd., L=Maidenhead, ST=UK, C=GB"
            roles="repoclient" password="null"/>

  • Editamos el fichero /opt/alfresco/tomcat/conf/server.xml añadiendo en el nodo <Service name="Catalina"> lo siguiente:
            <Connector port="8443"
                protocol="org.apache.coyote.http11.Http11Protocol"
                SSLEnabled="true"
                maxThreads="150"
                scheme="https"
                keystoreFile="/opt/alfresco/alf_data/keystore/ssl.keystore"
                keystorePass="kT9X6oe68t"
                keystoreType="JCEKS"
                secure="true"
                connectionTimeout="240000"
                truststoreFile="/opt/alfresco/alf_data/keystore/ssl.truststore"
                truststorePass="kT9X6oe68t"
                truststoreType="JCEKS"
                clientAuth="false"
                sslProtocol="TLS"
                allowUnsafeLegacyRenegotiation="true"
            />

  • Ajustamos el fichero /opt/alfresco/tomcat/shared/classes/alfresco-global.properties añadiendo/modificando/descomentado:
            dir.keystore=${dir.root}/keystore
            index.subsystem.name=solr
            solr.port.ssl=9443
            solr.port=9080
            solr.secureComms=https


Ajustes SSL para Solr
  • Creamos la carpeta /opt/solr/keystore
  • Copiamos el contenido de
            /opt/alfresco/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/keystore

        en

            /opt/solr/keystore
  • Editamos el fichero /opt/solr/tomcat/conf/tomcat-users.xml añadiendo lo siguiente al bloque <tomcat-users>:
            <user username="CN=Alfresco Repository, OU=Unknown,
            O=Alfresco Software Ltd., L=Maidenhead, ST=UK, C=GB"
            roles="repository" password="null"/>

  • Editamos el fichero /opt/solr/tomcat/conf/server.xml añadiendo en el nodo  <Service name="Catalina"> lo siguiente:
            <Connector port="8443"
                protocol="org.apache.coyote.http11.Http11Protocol"
                SSLEnabled="true"
                maxThreads="150"
                scheme="https"
                keystoreFile="/opt/solr/keystore/ssl.keystore"
                keystorePass="kT9X6oe68t"
                keystoreType="JCEKS"
                secure="true"
                connectionTimeout="240000"
                truststoreFile="/opt/solr/keystore/ssl.truststore"
                truststorePass="kT9X6oe68t"
                truststoreType="JCEKS"
                clientAuth="false"
                sslProtocol="TLS"
                allowUnsafeLegacyRenegotiation="true"
            />


Puesta en marcha y verificación del funcionamiento

Para poner en marcha lo anterior deberemos arrancar solr y alfresco:

/opt/solr/tomcat/bin/startup.sh
/opt/alfresco/tomcat/bin/startup.sh

Una vez levantados ambos servidores, verificamos el número de ficheros de los índices en Solr:

/opt/solr/solrdata/workspace/SpacesStore/index

Accedemos al portal http://localhost:8080/share, entrando con admin/admin, accedemos al espacio de invitado del repositorio y añadimos algún documento.

Si todo va bien deberíamos ver que el número de ficheros de la carpeta de índices del solr ha variado.

miércoles, 22 de mayo de 2013

Balanceo de carga y SSL con Apache y Tomcat

Introducción

Vamos a configurar un servidor Apache para servir una aplicación web desplegada en varias instancias Tomcat balanceando la carga de trabajo entre los servidores. Supondremos además que el acceso a la aplicacionón se realiza a través del protocolo https.

La comunicación entre el servidor web Apache y los distintos Tomcat se realiza usando el protocolo AJP.

El usuario accederá a la url https://servidor.org/app-web/ eligirá un certificado de acceso, establecerá sesión ssl con el servidor y Apacheredirigirá la petición a alguno de los Tomcat balanceados.

Una vez establecida la sesión de trabajo con un cierto Tomcat, Apache mantendrá las restantes peticiones del usuario en ese mismo Tomcat.

Instalación y configuración de los servidores Tomcat

El primer paso para realizar la configuración consiste en instalar y configurar varias instancias del servidor Tomcat. Para ello descargamos Tomcat (por ejemplo la versión apache-tomcat-6.0.35.zip) y lo descomprimimos en tantas carpetas distintas como deseemos. Una vez instalados debemos hacer una serie de cambios en la configuración de todos ellos.

Cambiar la variable CATALINA_HOME

Debemos cambiar la variable CATALINA_HOME de cada uno de los Tomcat para que apunte a la carpeta en la que está instalado. Para ello editamos el fichero bin/catalina.sh y en la primera línea escribimos:

 CATALINA_HOME=/home/egdepedro/balanceo/apache-tomcat-6.0.35-00

Cambiando la carpeta por la correspondiente en cada uno de ellos.

Configurar el puerto del servidor

Debemos configurar los Tomcat para que usen puertos distintos y no den errores en el arranque. En el archivo conf/server.xml debemos cambiar el puerto indicado en la línea:

<Server port="8005" shutdown="SHUTDOWN">

Usando distintos puertos en cada instancia. Por ejemplo 8005, 8006, 8007...

Configurar los conectores AJP

En el mismo fichero conf/server.xml debemos buscar la siguiente línea:

<Connector port="10009" protocol="AJP/1.3" redirectPort="8443" />

Y del mismo modo usar distintos puertos en cada instancia 10009, 10109, 10209...

Deshabilitar el conector HTTP

Este paso es opcional. Si lo deseamos podemos eliminar la configuración para los conectores HTTP borrando la siguiente línea del fichero conf/server.xml:

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

De este modo la única forma de acceder al servidor es a través del conector AJP. Si deseamos seguir manteniendo el acceso por HTTP debemos asegurarnos de usar puertos distintos en cada instancia.

Configurar la ruta jvmRoute

Por último debemos indicar una jvmRoute a cada instancia para que sea accesible por el servidor Apache. Este nombre ha de ser único por cada Tomcat y será el que se use en la configuración de Apache. En el fichero conf/server.xml buscamos y modificamos la linea:

<Engine name="Catalina" defaultHost="localhost" jvmRoute="00">

Por último desplegamos las aplicaciones que queremos balancear y arrancamos todas las instancias de Tomcat asegurándonos de que arranquen sin errores.

Configuración del balanceador (mod_jk)

El primer paso para configurar el balanceo de carga es habilitar el módulo de apache encargado de ello. Para ello en el fichero httpd.conf debemos incluir la siguiente línea en la zona de carga de módulos

LoadModule jk_module modules/mod_jk.so

Ahora debemos configurar el módulo. Para ello pondremos la configuración en un fichero aparte que incluiremos de la siguiente forma

include /opt/apache/conf/extra/httpd-jk.conf

Fichero httpd-jk.conf

<IfModule jk_module>

  JkWorkersFile /opt/apache/conf/workers.properties
  JkShmFile /opt/apache/logs/jk.shm

  JkLogFile logs/mod_jk.log
  JkLogLevel info
  JkLogStampFormat  "[%a %b %d %H:%M:%S %Y] "
  # JkRequestLogFormat
  JkRequestLogFormat "%w %V %T"

  # JkOptions indicates to send SSK KEY SIZE
  JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
              
  # You can use external file for mount points.
  # It will be checked for updates each 60 seconds.
  # The format of the file is: /url=worker
  JkMountFile conf/uriworkermap.properties

  # Add jkstatus for managing runtime data
  <Location /jkmanager/>
    JkMount jkstatus
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
  </Location>

  # Should mod_jk send SSL information to Tomcat (default is On)
  JkExtractSSL On
  # What is the indicator for SSL (default is HTTPS)
  JkHTTPSIndicator HTTPS
  # What is the indicator for SSL session (default is SSL_SESSION_ID)
  JkSESSIONIndicator SSL_SESSION_ID
  # What is the indicator for client SSL cipher suit (default is SSL_CIPHER)
  JkCIPHERIndicator SSL_CIPHER
  # What is the indicator for the client SSL certificated (default is SSL_CLIENT_CERT)
  JkCERTSIndicator SSL_CLIENT_CERT
</IfModule>

Lo más interesante de este fichero son las líneas donde se configura JkWorkersFile para poner el fichero donde se indican las distintas instancias de Tomcat configuradas. Otra configuración importante es la que se indica JkMountFile. En este fichero configuraremos las url que queramos mapear al balanceador. Las últimas líneas son interesantes para cuando configuremos el SSL.

Fichero workers.properties

worker.list=jkstatus,lb

worker.00.host=localhost
worker.00.port=10009
worker.00.type=ajp13
worker.00.fail_on_status=-404,500,503

worker.01.host=localhost
worker.01.port=10109
worker.01.type=ajp13
worker.01.fail_on_status=-404,500,503

worker.lb.type=lb
worker.lb.balance_workers=00,01
worker.lb.sticky_session=true
worker.lb.method=B

worker.jkstatus.type=status

En este fichero se configura la lista de workers. En la primera línea indicamos que vamos a usar el worker jkstatus, útil para acceder a la configuración del módulo desde un navegador, y el worker lb que es realmente el balanceador.

Después configuramos los worker correspondientes a cada uno de los tomcat. En este punto es muy importante nombrar a cada uno de ellos de la misma forma que los nombramos mediante el parámetro jvmRoute en sus ficheros server.xml. Esta será la forma en que el balanceador sepa la forma de redirigir las peticiones a cada uno de los tomcat. Además indicamos el host, el puerto AJP, el tipo de worker y los errores que queremos que se propaguen al apache. Si no indicamos la línea fail_on_status apache irá saltando de tomcat en tomcat cuando las instancias devuelvan errores.

Posteriormente configuramos el worker lb indicando su tipo, los worker ajp asociados, el método de balanceo y la propiedad sticky_session. Esta propiedad se usa para indicar al balanceador que mantenga cada sesión de usuario en el mismo tomcat en el que se lanzó inicialmente. Para aplicaciones web que mantienen datos en sesión esta es la forma de mantenerlos.

Por último se configura el worker jkstatus para proporcionar información acerca del módulo.

Fichero uriworkermap.properties

/jkstatus/*=jkstatus
/app-web/*=lb

En este fichero indicamos que las peticiones a jkstatus sean atendidas por el worker apropiado y las peticiones a app-web (nuestra aplicación balanceada) sean atendidas por el balanceador de carga.

Configuración de SSL

Debemos activar el módulo SSL del mismo modo que activamos el módulo jk. Incluimos las siguientes líneas en la zona de carga de módulos del fichero httpd.conf:

LoadModule ssl_module modules/mod_ssl.so

En caso de que no se encuentre cargado también debemos activar el módulo headers para la gestión de las cabeceras de las peticiones:

LoadModule headers_module modules/mod_headers.so

Ahora debemos configurar el módulo. Para ello pondremos la configuración en un fichero aparte que incluiremos de la siguiente forma

Include /opt/apache/conf/extra/httpd-ssl.conf

Fichero httpd-ssl.conf

En este fichero dejamos todos los valores por defecto salvo las siguientes líneas que incluiremos al final:

Include conf/extra/proxypass.conf
Include conf/extra/proxypass/*.conf

Fichero proxypass.conf

En el fichero proxypass.conf configuramos las opciones generales para https

#Parametros SSL
SSLEngine on
SSLCertificateFile    /opt/apache/conf/server.crt
SSLCertificateKeyFile /opt/apache/conf/server.key
SSLCACertificateFile  /opt/apache/conf/certificadosCA.crt
SSLVerifyClient none
SSLVerifyDepth 2
SSLOptions +ExportCertData
SSLInsecureRenegotiation on
#SSLOptions +ExportCertData +OptRenegotiate

#Inicializo cabeceras
RequestHeader set SSL_CLIENT_S_DN ""
RequestHeader set SSL-CLIENTCERT-PEM ""
RequestHeader set SSL_CLIENT_VERIFY ""
RequestHeader set SSL_CLIENT_CERT_CHAIN_0 ""

Las opciones más interesantes son SSLCertificateFile que indicará el fichero con el certificado del servidor, SSLCertificateKeyFile que indica el fichero con la clave privada del servidor y SSLCACertificateFile que referencia al fichero con los certificados de los clientes (o los de sus CA's) en los que confiemos.

Fichero proxypass/app-web.conf

En este fichero incluiremos las opciones específicas de configuración de SSL para cada aplicación. En nuestro caso estamos configurando la aplicación app-web

<Location /app-web/* >
 #Cabeceras con ssl-clientcert-pem
 SSLVerifyClient require
 RequestHeader set SSL_CLIENT_S_DN "%{SSL_CLIENT_S_DN}s"
 RequestHeader set SSL-CLIENTCERT-PEM "%{SSL_CLIENT_CERT}s"
 RequestHeader set SSL_CLIENT_VERIFY "%{SSL_CLIENT_VERIFY}s"
 RequestHeader set SSL_CLIENT_CERT_CHAIN_0 "%{SSL_CLIENT_CERT_CHAIN_0}s"
 JkMount lb
 SSLRenegBufferSize 1000000000
</Location>

Lo más interesante de este fichero es la línea JkMount lb que indica el montaje del balanceador de carga para atender a las peticiones en la url /app-web/* por protocolo seguro. Además indicamos que para estas peticiones requerimos certificado de cliente mediante la línea SSLVerifyClient require.

sábado, 11 de mayo de 2013

Conexiones VPN PPTP y OpenVPN desde Ubuntu 12.04

Introducción a las VPN

Una VPN (Virtual Private Network) es una tecnología que permite extender de forma segura una red privada sobre otra pública como Internet.

Comunmente las VPN se usan para trabajar en la red de una empresa sin estar físicamente en ella. Una vez conectados al servidor VPN de la empresa, nuestro ordenador pasará a formar parte de la red de la empresa, accediendo a los servidores y recursos disponibles en la misma.

El mecanismo se describe el siguiente diagrama:

Características de una VPN

Una VPN debe garantizar dos cuestiones fundamentales:
  • Autenticación de usuario. Cuando conectamos al servidor de VPN deberemos identificarnos con un certificado o un usuario/contraseña. De este modo se restringe el acceso a personas no autorizadas.
  • Cifrado de datos. Dado que la conexión a una VPN implica la circulación de datos por redes "públicas", si queremos garantizar la confidencialidad de los mismos deberemos cifrarlos. El cifrado se realiza con algoritmos de clave simétrica (DES o 3DES) cuyas claves han sido intercambiadas previamente mediante el típico handshaking SSL.
Tipos de VPN según el mecanismo de conexión

Hay varios tipos de VPN:
  • VPN punto a punto. Muy poco usada en la actualidad. Esta modalidad implica la conexión al servidor de VPN mediante líneas de datos dedicadas: modem, RDSI, etc.
  • Tunneling. Es el tipo de VPN más frecuente hoy en día. El servidor VPN de la empresa es visible en Internet y conectamos al mismo a través de nuestro ISP (proveedor de acceso a internet). La conexión está cifrada para evitar "escuchas" no deseadas. El protocolo de red usado en la empresa (por ejemplo IPX) queda encapsulado y cifrado dentro del protocolo que usamos para transmitir/recibir datos en Internet (por ejemplo TCP/IP).
Usos típicos de las VPN

Hoy en día las VPN se usan también en escenarios distintos del escenario para el que fueron ideadas (conexión remota a la red local de la empresa). Algunos de estos escenarios son:
  • Aislar dentro de la LAN (red de area local) de una empresa una subred con información sensible. Por ejemplo podríamos tener todos los servidores y ordenadores del departamento de investigación y desarrollo en una VPN montada sobre la propia LAN para evitar escuchas de los paquetes por parte de empleados desleales, la información de la VPN se mueve por la LAN, pero cifrada.
  • Navegación anónima en Internet. Navegar por Internet con nuestra propia dirección IP y sin encriptar acarrea deficiencias de seguridad: se dejan muchos rastros de nuestras actividades en todo tipo de servidores, hay portales como Netflix que sólo son visibles desde determinadas zonas geográficas (EEUU), las empresas colocan proxies que limitan el acceso a determinados servicios (youtube, facebook, irc, descargas, etc), etc.


Hay muchos proveedores de VPN en Internet que permiten una navegación segura y anónima. Muchos son de pago y haya algunos gratuítos. Ojo con estos últimos, no adelantamos mucho navegando en modo cifrado si el servidor VPN no es confiable, Yo nunca realizaría una transacción bancaria o un pago con tarjeta a través de un servidor de este tipo.

La utilización de una conexión VPN gratuíta o de pago nos permite:

  • Que nuestros paquetes de datos estén cifrados, por lo que nadie conoce qué estamos realizando.
  • Podemos conectar a un servidor VPN de la zona geográfica que nos interese (por ejemplo EEUU), con lo que accederíamos a portales como Netflix.
  • Si el proxy de la empresa no nos deja acceder a YouTube, podemos conectar a un servidor VPN y acceder con la IP de la red virtual a YouTube. El proxy de la empresa no puede ver los datos de nuestros paquetes, dado que van cifrados, por lo que no puede restringirnos el acceso.

Protocolos VPN

El protocolo estándar de facto es el IPSEC, pero también están PPTP, L2F, L2TP, SSL/TLS, SSH, etc.

Los distintos protocolos VPN tienen puntos fuertes y puntos débiles. Vamos a comparar las tres más comunes:

  • PPTP. PPTP (Protocolo de Túnel Punto a Punto) es un buen protocolo VPN ligero que ofrece una seguridad básica en línea y velocidades rápidas. PPTP está integrado en una gran variedad de equipos de sobremesa y dispositivos móviles y cuenta con encriptación de 128 bits. PPTP es una buena elección si OpenVPN no está disponible en su dispositivo y la velocidad es la máxima prioridad.
  • IPSEC. L2TP (Protocolo de tunelización de Capa 2) con IPsec (Seguridad de IP) es un protocolo integrado muy seguro para una amplia variedad de dispositivos de escritorio y móviles. L2TP/IPsec ofrece un encriptado de 256-bits, pero la seguridad extra de sobrecarga requiere más uso del CPU que PPTP. L2TP/IPsec es una elección excelente si OpenVPN no está disponible en su dispositivo, pero usted quiere más seguridad que PPTP.
  • OpenVPN(SSL). OpenVPN es el protocolo VPN premier diseñado para redes de banda ancha modernas, pero no es compatible con los dispositivos móviles y tablets. OpenVPN ofrece un encripado de 256-bits y es extremadamente estable y rápido en las redes con largas distancias y alto tiempo de espera. Provee mayor seguridad que PPTP y requere menor uso de CPU que L2TP/IPsec. OpenVPN es el protocolo recomendado para escritorios incluyendo Windows, Mac OS X, y Linux.

Lo habitual es utilizar software tanto en el servidor como en los clientes VPN, pero también se puede montar la VPN mediante hardware, lo que da una mayor velocidad a las comunicaciones, pero es mucho mas caro y ofrece menos versatilidad.

Conectar a un servidor VPN desde Ubuntu 12.04

Instalación del software cliente

Vamos a ver ahora como conectar a un servidor VPN con Ubuntu 12.04. Lo primero será instalar el software cliente. En Ubuntu 12.04 viene preinstalado con un cliente para el protocolo PPTP, vamos a instalar también un cliente para el protocolo SSL (Openvpn). Para ello ejecutaremos en la consola el comando:

    sudo apt-get install network-manager-pptp
    sudo apt-get install network-manager-openvpn

Por último reiniciamos el equipo

Configurar una conexión VPN a un servidor VPN de tipo PPTP

Vamos a conectar con una red VPN-PPTP gratuíta (http://www.vpnbook.com/) (ojo con la fiabilidad de estos servicios gratuítos). Los pasos a dar son:

  • Abrimos el panel de configuración de la red, haciendo clic con el botón derecho del ratón en el icono de red de la esquina superior derecha de la pantalla y seleccionando la opción "Configuración de la red".
  • Bajo la lista de conexiones de red, pulsamos el botón "+" para añadir la interfaz VPN y pulsamos crear.
  • Elegimos ahora una conexión de tipo PPTP y pulsamos crear.
  • En la pantalla de configuración introducimos los datos proporcionados por el servidor VPN:

        Pasarela: euro1.vpnbook.com
        Usuario: vpnbook
        Contraseña: adv7ebeh
        Opciones avanzadas. Activamos la opción usar cifrado MPPE

Pulsamos el botón Guardar y listo.

Ya sólo queda activar la conexión VPN PPTP gratuíta y navegar un poco. Ojo donde nos metemos con estas conexiones, sólo hay que probar la velocidad de conexión con portales como http://www.speedtest.com para ver que el servidor VPN está en Rumanía.

Configurar una conexión VPN a un servidor VPN de tipo OpenVPN(SSL)

Vamos a conectar con una red VPN-OpenVPN gratuíta,  para este ejemplo hemos elegido vpnbook (http://www.vpnbook.com/). Ojo con la fiabilidad de estos servicios gratuítos.

Para conectar a una VPN con SSL, usando por elemplo la implementación OpenVPN necesitaríamos:

Certificado cliente. El servidor tiene las claves públicas de los clientes autorizados.
Certificado del servidor. El cliente tiene la clave pública del servidor al que se conecta.

En este ejemplo, no hacemos llegar la clave pública de nuestro certificado (FNMT, DNIe, etc), a vpnbook.com, dado que es un servidor gratuíto. Ellos ofrecen un kit de conexión que incluye la clave pública de un cliente de prueba.

Los pasos a dar son:

  • Descargaremos los certificados del servidor de la URL: http://www.vpnbook.com/free-openvpn-account/VPNBook.com-OpenVPN-Euro1.zip
  • Descomprimimos el zip descargado en algún directorio. Hay varios ficheros de configuración (*.ovpn). Vamos a trabajar con "vpnbook-euro1-tcp80.ovpn", elegimos este fichero porque usará el puerto 80, abierto en la mayoría de routers y usará TCP, protocolo no restringido por los ISP (proveedores de Internet). Dentro de este fichero (pnbook-euro1-tcp80.ovpn) tenemos los datos de conexión y las claves públicas/privadas que necesitaremos para conectar. Abrimos este fichero con gedit y sacamos tres ficheros:

        Fichero cert.pem: Tendrá las líneas comprendidas entre <cert> y </cert>

-----BEGIN CERTIFICATE-----
MIID6DCCA1GgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBoDELMAkGA1UEBhMCQ0gx
DzANBgNVBAgTBlp1cmljaDEPMA0GA1UEBxMGWnVyaWNoMRQwEgYDVQQKEwt2cG5i
b29rLmNvbTELMAkGA1UECxMCSVQxFDASBgNVBAMTC3ZwbmJvb2suY29tMRQwEgYD
VQQpEwt2cG5ib29rLmNvbTEgMB4GCSqGSIb3DQEJARYRYWRtaW5AdnBuYm9vay5j
b20wHhcNMTMwNTA2MDMyMTIxWhcNMjMwNTA0MDMyMTIxWjB4MQswCQYDVQQGEwJD
SDEPMA0GA1UECBMGWnVyaWNoMQ8wDQYDVQQHEwZadXJpY2gxFDASBgNVBAoTC3Zw
bmJvb2suY29tMQ8wDQYDVQQDEwZjbGllbnQxIDAeBgkqhkiG9w0BCQEWEWFkbWlu
QHZwbmJvb2suY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCkTM/8E+JH
CjskqMIwgYDrNCBTWZLa+qKkJjZ/rliJomTfVYwKwv1AHYYU6RHpCxS1qFp3BEKL
vQlASuzycSv1FGnNiLmg94fqzzWdmjs1XWosnLqbOwxx2Ye/1WoakSHia0pItoZk
xK7/fllm42+Qujri/ERGga5Cb/TfiP6pUQIDAQABo4IBVzCCAVMwCQYDVR0TBAIw
ADAtBglghkgBhvhCAQ0EIBYeRWFzeS1SU0EgR2VuZXJhdGVkIENlcnRpZmljYXRl
MB0GA1UdDgQWBBTDr4BCNSdOEh+Lx6+4RRK11x8XcDCB1QYDVR0jBIHNMIHKgBRZ
4KGhnll1W+K/KJVFl/C2+KM+JqGBpqSBozCBoDELMAkGA1UEBhMCQ0gxDzANBgNV
BAgTBlp1cmljaDEPMA0GA1UEBxMGWnVyaWNoMRQwEgYDVQQKEwt2cG5ib29rLmNv
bTELMAkGA1UECxMCSVQxFDASBgNVBAMTC3ZwbmJvb2suY29tMRQwEgYDVQQpEwt2
cG5ib29rLmNvbTEgMB4GCSqGSIb3DQEJARYRYWRtaW5AdnBuYm9vay5jb22CCQCk
baY7CL3pNTATBgNVHSUEDDAKBggrBgEFBQcDAjALBgNVHQ8EBAMCB4AwDQYJKoZI
hvcNAQEFBQADgYEAoDgD8mpVPnHUh7RhQziwhp8APC8K3jToZ0Dv4MYXQnzyXziH
QbewJZABCcOKYS0VRB/6zYX/9dIBogA/ieLgLrXESIeOp1SfP3xt+gGXSiJaohyA
/NLsTi/Am8OP211IFLyDLvPqZuqlh/+/GOLcMCeCrMj4RYxWstNxtguGQFc=
-----END CERTIFICATE-----


        Fichero ca.pem: Tendrá las líneas comprendidas entre <ca> y </ca>

-----BEGIN CERTIFICATE-----
MIIDyzCCAzSgAwIBAgIJAKRtpjsIvek1MA0GCSqGSIb3DQEBBQUAMIGgMQswCQYD
VQQGEwJDSDEPMA0GA1UECBMGWnVyaWNoMQ8wDQYDVQQHEwZadXJpY2gxFDASBgNV
BAoTC3ZwbmJvb2suY29tMQswCQYDVQQLEwJJVDEUMBIGA1UEAxMLdnBuYm9vay5j
b20xFDASBgNVBCkTC3ZwbmJvb2suY29tMSAwHgYJKoZIhvcNAQkBFhFhZG1pbkB2
cG5ib29rLmNvbTAeFw0xMzA0MjQwNDA3NDhaFw0yMzA0MjIwNDA3NDhaMIGgMQsw
CQYDVQQGEwJDSDEPMA0GA1UECBMGWnVyaWNoMQ8wDQYDVQQHEwZadXJpY2gxFDAS
BgNVBAoTC3ZwbmJvb2suY29tMQswCQYDVQQLEwJJVDEUMBIGA1UEAxMLdnBuYm9v
ay5jb20xFDASBgNVBCkTC3ZwbmJvb2suY29tMSAwHgYJKoZIhvcNAQkBFhFhZG1p
bkB2cG5ib29rLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAyNwZEYs6
WN+j1zXYLEwiQMShc1mHmY9f9cx18hF/rENG+TBgaS5RVx9zU+7a9X1P3r2OyLXi
WzqvEMmZIEhij8MtCxbZGEEUHktkbZqLAryIo8ubUigqke25+QyVLDIBuqIXjpw3
hJQMXIgMic1u7TGsvgEUahU/5qbLIGPNDlUCAwEAAaOCAQkwggEFMB0GA1UdDgQW
BBRZ4KGhnll1W+K/KJVFl/C2+KM+JjCB1QYDVR0jBIHNMIHKgBRZ4KGhnll1W+K/
KJVFl/C2+KM+JqGBpqSBozCBoDELMAkGA1UEBhMCQ0gxDzANBgNVBAgTBlp1cmlj
aDEPMA0GA1UEBxMGWnVyaWNoMRQwEgYDVQQKEwt2cG5ib29rLmNvbTELMAkGA1UE
CxMCSVQxFDASBgNVBAMTC3ZwbmJvb2suY29tMRQwEgYDVQQpEwt2cG5ib29rLmNv
bTEgMB4GCSqGSIb3DQEJARYRYWRtaW5AdnBuYm9vay5jb22CCQCkbaY7CL3pNTAM
BgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAKaoCEWk2pitKjbhChjl1rLj
6FwAZ74bcX/YwXM4X4st6k2+Fgve3xzwUWTXinBIyz/WDapQmX8DHk1N3Y5FuRkv
wOgathAN44PrxLAI8kkxkngxby1xrG7LtMmpATxY7fYLOQ9yHge7RRZKDieJcX3j
+ogTneOl2w6P0xP6lyI6
-----END CERTIFICATE-----


        Fichero key.pem: Tendrá las líneas comprendidas entre <key> y </key>

-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCkTM/8E+JHCjskqMIwgYDrNCBTWZLa+qKkJjZ/rliJomTfVYwK
wv1AHYYU6RHpCxS1qFp3BEKLvQlASuzycSv1FGnNiLmg94fqzzWdmjs1XWosnLqb
Owxx2Ye/1WoakSHia0pItoZkxK7/fllm42+Qujri/ERGga5Cb/TfiP6pUQIDAQAB
AoGANX508WQf9nVUUFlJ8LUZnnr4U2sEr5uPPNbcQ7ImTZm8MiMOV6qo/ikesMw5
8qCS+5p26e1PJWRFENPUVhOW9c07z+nRMyHBQzFnNAFD7TiayjNk1gz1oIXarceR
edNGFDdWCwXh+nJJ6whbQn9ioyTg9aqScrcATmHQxTit0GECQQDR5FmwC7g0eGwZ
VHgSc/bZzo0q3VjNGakrA2zSXWUWrE0ybBm2wJNBYKAeskzWxoc6/gJa8mKEU+Vv
ugGb+J/tAkEAyGSEmWROUf4WX5DLl6nkjShdyv4LAQpByhiwLjmiZL7F4/irY4fo
ct2Ii5uMzwERRvHjJ7yzJJic8gkEca2adQJABxjZj4JV8DBCN3kLtlQFfMfnLhPd
9NFxTusGuvY9fM7GrXXKSMuqLwO9ZkxRHNIJsIz2N20Kt76+e1CmzUdS4QJAVvbQ
WKUgHBMRcI2s3PecuOmQspxG+D+UR3kpVBYs9F2aEZIEBuCfLuIW9Mcfd2I2NjyY
4NDSSYp1adAh/pdhVQJBANDrlnodYDu6A+a4YO9otjd+296/T8JpePI/KNxk7N0A
gm7SAhk379I6hr5NXdBbvTedlb1ULrhWV8lpwZ9HW2k=
-----END RSA PRIVATE KEY-----


  • Abrimos el panel de configuración de la red, haciendo clic con el botón derecho del ratón en el icono de red de la esquina superior derecha de la pantalla y seleccionando la opción "Configuración de la red".
  • Bajo la lista de conexiones de red, pulsamos el botón "+" para añadir la interfaz VPN y pulsamos crear.
  • Elegimos ahora una conexión de tipo PPTP y pulsamos crear.
  • En la pantalla de configuración introducimos los datos proporcionados por el servidor VPN:

        Pasarela: euro1.vpnbook.com
        Autenticación Tipo: Contraseña concertificado TLS
        Usuario: vpnbook
        Contraseña: adv7ebeh
        Certificado usuario: Seleccionamos el fichero cert.pem
        Certificado ca: Seleccionamos el fichero ca.pem
        Clave privada: Seleccionamos el fichero key.pem
        Opciones avanzadas. Ajustaremos:
                Puerto 80
                Compresion LZO
                Conexion TCP
                Seguridad AES-128-CBC

Pulsamos el botón Guardar y listo.

Ya sólo queda activar la conexión VPN OpenVPN(SSL) gratuíta y navegar un poco. Ojo donde nos metemos con estas conexiones, sólo hay que probar la velocidad de conexión con portales como http://www.speedtest.com para ver que el servidor VPN está en Rumanía.
   
Referencias

http://geekland.hol.es/conectarse-a-un-servidor-vpn-gratis/
http://es.giganews.com/vyprvpn/compare-vpn-protocols.html
http://es.wikipedia.org/wiki/Red_privada_virtual