ago 10 2012

Reconexión automática a VPN en Ubuntu Linux

Gabolonte Blasfemus

Aquellos que osadamente urgan en este repositorio de pecaminosas incongruencias saben bien que la seguridad al conectarse en redes Wi-Fi es un tema que siempre me interesó, llegando a dejar algunos consejos para una navegación más segura.

Desde hace ya algunos años que mi método de seguridad rutinario a la hora de conectarme desde mi portátil, ya sea desde Windows o Ubuntu, es a través de una VPN. En particular uso OpenVPN, que me parece excelente por una larga serie de motivos, entre los que cuento:

  1. Open Source.
  2. Clientes para casi todas las plataformas, incluidas las móviles; aunque ahí el mayor problema es el soporte de los fabricantes ya que en Android o iOS no alcanza con instalar una aplicación.
  3. Servidor también multiplataforma, aunque lo más recomendable es hacerlo desde Linux.
  4. Y tal vez lo más importante, no usa ningún protocolo raro que vaya a dar problemas con routers hogareños y demás; va por UDP o por TCP, y hasta podemos configurarlo para elegir uno o el otro, incluso cambiar el puerto por defecto. Esto es especialmente útil para los access points de lugares como StarBucks donde tienen ortivamente bloqueados todos los puertos de salida con excepción de los necesarios para navegar, el 80 que corresponde a http, y el 443 para su contraparte segura el https, y sólo en TCP. En este caso podemos levantar nuestro servidor OpenVPN en cualquiera de estos dos puertos con TCP y hacerles pito catalán lo más panchos.

Sin embargo, dentro de toda esta maravilla tenía un pequeño problema. Es muy normal que a veces la conexión VPN se interrumpa, generalmente por microcortes en la red inalámbrica. En el caso de OpenVPN GUI, la interfaz gráfica para gestionar las conexiones del cliente para Windows, esto no es un gran problema, ya que automáticamente reintenta hasta que vuelve a establecer el túnel VPN. En Linux, al menos si utilizamos para conectarnos el Network Manager de Gnome que incorporan distros como Ubuntu, al ocurrir la interrupción la conexión no vuelve a resumirse, y nuestro único aviso es el pequeño y diminuto icono del candado que desaparece del icono del Network Manager y un temporal mensaje que nos avisa del evento. Si estábamos absortos en algo o no mirábamos a la pantalla es fácil obviarlo, y continuar con nuestra sesión ya sin contar con la protección necesaria para no encontrarse a merced de ojos ajenos. Y aunque los diálogos de configuración de Network Manager contemplan la posibilidad de marcar la conexión para que se realice automáticamente, esta opción sencillamente aún no funciona para las conexiones VPN.

Vi que existen otros métodos para resolver este problema, pero el que realmente me funcionó tiene que ver con la genial posibilidad que poseen las versiones más recientes del Network Manager de controlarlo desde la consola a través del comando nmcli. Esto abre las puertas a una solución simple y sucia de scripting como la que vi en este hilo de AskUbuntu.

#! /bin/bash

REQUIRED_CONNECTION_NAME="name-of-connection"
VPN_CONNECTION_NAME="name-of-vpn-connection"
activ_con=$(nmcli con status | grep "${REQUIRED_CONNECTION_NAME}")
activ_vpn=$(nmcli con status | grep "${VPN_CONNECTION_NAME}")
if [ "${activ_con}" -a ! "${activ_vpn}" ];
then
     nmcli con up id "${VPN_CONNECTION_NAME}"
fi

Este script básicamente conecta la VPN definida sólo cuando determinada conexión de red, que puede ser inalámbrica, por cable, o 3G, se vuelve activa. En este caso, name-of-connection es el nombre que lleva en Network Manager la conexión de red sobre la cual queremos establecer la conexión VPN, por ejemplo una conexión a una red Wi-Fi; name-of-vpn-connection es por otro lado el nombre que lleva la conexión VPN que deseamos usar, no importa si es por OpenVPN u otro estándar. Pero para mi menester necesito algo aún mucho más simple, yo sólo necesito que la conexión VPN a la que decidí conectarme vuelva a reconectarse automáticamente en caso de corte, por lo que mi script quedó, desde mi poco pulidos conocimientos, así:

#! /bin/bash

NUNCA=1
VPN_CONNECTION_NAME="name-of-vpn-connection"
while [ $NUNCA ]; do
     activ_vpn=$(nmcli con status | grep "${VPN_CONNECTION_NAME}")
     if [ ! "${activ_vpn}" ];
     then
          nmcli con up id "${VPN_CONNECTION_NAME}"
     fi
     sleep 5
done

El anterior es un script que podemos ejecutar desde cualquier ventana de terminal y dejarlo corriendo todo el tiempo que lo necesitemos de fondo. Al ejecutarlo lo único que hace es entrar en un loop interminable donde chequea si la conexión VPN definida está levantada, y si no lo está la activa; luego espera 5 segundos y vuelve a comenzar. Se puede refinar muchísimo más la idea pero si lo queremos hacer simple y rápido podemos tener una copia de este script para cada perfil VPN que usemos, y luego ya no hará falta conectarse desde el icono del Network Manager a la VPN, simplemente ejecutamos el script seleccionado y mientras no lo interrumpamos con un Ctrl+C o cerrando la ventana se va a encargar de mantener siempre arriba el enlace VPN.


ago 7 2012

Mobile kills the desktop star

Gabolonte Blasfemus

Los windólogos sabíamos que cuando a Microsoft se le ocurrió sepultar de un plumazo el escritorio de Windows tirándole el entorno/interfaz Metro encima se venían tiempos oscuros, tanto para el Windows de siempre como para todo sistema operativo de escritorio, ya que, de una forma o de otra, Windows continúa marcando ciertas tendencias, les guste o no a los miembros del rebaño cupertinense y a los amantes del mundo *nix.  Todo en nombre de la era post-PC y de montarse a caballo de su única obra actual que recibe buenas críticas, la interfaz Metro nacida en el moribundo Zune y que alcanzó su actual aceptación en la línea de Windows Phone 7.

Y ya estamos viendo los primeros síntomas de la agravación del estado del paciente: Los gadgets de escritorio de Windows Vista/7 fueron sentenciados a la muerte y el olvido más humillantes, todo porque recién ahora se dieron cuenta que tener una plataforma de widgets que no se controla puede provocar un tremendo agujero de seguridad. A decir verdad, creo que nadie va a extrañar tanto al gadget del clima que venía por defecto activado, el único más o menos agradable a la vista y que proporcionaba algo útil en medio de los pocos que aportaba la propia Microsoft (y del mar de sinsentido nauseabundo creado por terceros). Opera también se dio cuenta que el concepto de los gadgets palidecía al lado de lo que puede hacer un buen framework de aplicaciones/extensiones debidamente actualizado, optimizado y vigilado.

Pero posiblemente (según gustos, claro) una de las peores afrentas a ese Windows de escritorio pujante y orgulloso que conocemos es la muerte declarada de Aero, la interfaz que debutó con Vista y que mejoró aún más en Windows 7, brindándonos ese estilo vidrioso que tanto nos gustaba a muchos. Esto era así, claro, si nuestro equipo contaba con al menos un adaptador gráfico decente y una edición de Windows que no sea de las “pobres”. Pero ahora resulta que Microsoft se acordó que manejar sombras y transparencias todo el tiempo afecta el rendimiento y además Aero ahora luce, citando textuales palabras, “dated and cheesy” (algo así como antiguo y gastado). Por tanto en Windows 8 el escritorio tendrá un estilo más basado en Metro y no volveremos a disfrutar de transparencias esmeriladas ni nada parecido. Lo único que sobrevive es el Live Preview, que nos permite ver la miniatura de cada ventana al pararnos sobre un botón de la taskbar.

La majestuosa interfaz Aero en Windows 7

Recuerdo mi sensación al enterarme de esto, fue algo como “¿de qué fecha es el frasco de pastillas vencido que confundieron por el actual?”. Simplemente me resulta inadmisible. No es que el escritorio chatito de Windows 8 sea realmente feo, tiene su belleza (¿exótica?), pero de ahí a sepultar a Aero tachándolo de demodé hay una distancia notable, asfaltada por toda la propaganda post-pc. Señores, Aero (en Windows 7, a Vista ni lo cuento) es una de las máximas expresiones de placer visual en la computación de escritorio actual. Sólo debe ser jubilado por algo sencillamente superior en sus logros, no algo inferior en nombre de hacerlo mobile friendly y por la optimización de recursos. Si es por la optimización de recursos bien nos podemos quedar con el desktop de Windows 95 que cargaba hasta en Windows Mobile. Y sobre esta urgida necesidad de llevar las tendencias de las GUIs móviles al escritorio, sólo imagínense buscando a ojo entre los tiles de Metro esa aplicación en particular de entre las 200 que tienen instaladas, o haciendo un movimiento de precisión sobre una pantalla táctil usando el mejor stylus, esos chorizos de carne gruesos y torcidos que muchos tenemos la costumbre de llamar dedos. Lo más loco es pensar en todos los que ni siquiera van a ver de lejos lo bueno que Aero estaba porque otra sabia decisión de Microsoft en su momento fue habilitarlo sólo para las versiones más costosas de Windows Vista/7, dejando el alevosamente asqueroso tema básico, ese pésimo substituto visual de bajo presupuesto de Aero, como única opción en Starter y Home Basic, las versiones más económicas, las que justamente venían preinstaladas en la mayor parte de las PCs.

Como dije, realmente no me desagrada tanto el escritorio metrizado de Windows 8, pero realmente te voy a extrañar Aero, los tiempos fueron injustos con vos.


jul 18 2012

Consola de root con derechos de escritura desde el menú de recuperación de Ubuntu

Gabolonte Blasfemus

Es sabido que en Ubuntu, por una cuestión de políticas acordes a su concepción de la seguridad, no se permite el ingreso bajo ninguna forma desde la cuenta de superusuario, normalmente conocida como root. A todos los efectos, todo usuario que tenga que realizar cualquier tarea administrativa en el sistema operativo deberá utilizar el comando sudo precediendo al comando original en la consola y luego validarlo ingresando su contraseña, o escribir esta cuando el sistema se lo pida ante determinadas acciones que requieren elevación de privilegios.

Sin embargo, existe un único caso en el que la distro de Canonical permite ingresar como root, aunque solo a una línea de comandos; y esto es cuando se elige desde el menú de inicio de GRUB2 la opción de arranque en modo de recuperación. Cuando la elegimos, en vez de cargar la interfaz gráfica como es habitual se acaba en un menú en modo texto con diversas opciones útiles a la hora de reparar un Ubuntu roto. Una de ellas, por razones obvias la más avanzada, es la de cargar una línea de comandos bajo la cuenta del superusuario. El problema es, al menos en la versión 12.04 de Ubuntu (Precise Pangolin), que esta opción monta al raíz del sistema como solo lectura; por tanto, tenemos todos los derechos para hacer lo que haga falta, pero como no podemos escribir nada al disco, no podemos hacer casi nada.

Desconozco si esto es una omisión o error o simplemente la aplicación de otra política más de seguridad para evitar que usuarios novatos metan mano y rompan algo, pero la realidad es que cuando se aterriza en el menú de recuperación y en particular en la opción de la consola de root es porque uno ya está medio desesperado porque su Ubuntu no levanta y está dispuesto a probar algunas cosas, al menos en mi caso con extremo cuidado y siguiendo instrucciones de antemano cuando no sé qué hacer, para ver si se resuelve. En estas situaciones, llegar hasta ahí y encontrarse con la impotencia de no poder hacer nada para reparar el sistema es bastante frustrante.

Pero como decía antes, tal vez se trata solamente de una pruebita más puesta por Canonical para evaluar si sabemos lo que hacemos cuando nos dirigimos a la todopoderosa opción de la línea de comandos de root. No hay que olvidar que como le repitieron hasta el hartazgo a Peter Parker, con grandes poderes llegan grandes responsabilidades. Para resolver este root con acceso de solo lectura al disco, todo lo que tenemos que hacer es utilizar el comando mount para remontarlo con acceso de lectura/escritura, de la siguiente manera:

mount -o remount,rw /

Y listo, solo con introducir este comando ahora sí tenemos acceso a hacer, solucionar (o romper aún más) nuestra Ubuntu box.

Como dije, bien puede ser una feature by design. ¿Alguna vez la tuvieron que usar?


jun 16 2012

Error al actualizar Skype 4 para Linux

Gabolonte Blasfemus

Los usuarios de Linux tienen una razón más para estar contentos esta semana ya que Skype, que parecía eternamente estancado en su beta 2.x, dio el salto a una versión 4 final que, según aseguran, lo pone más o menos a la par de las características y mejoras que ya son moneda corriente en las versiones para Windows. Todo esto bajo el paraguas de Microsoft, actual dueño de Skype, no es poco.

El punto es que cuando me apresuré a instalar este nuevo Skype en mi Ubuntu, su Centro de software me ofrecía hacer una actualización desde mi actual versión 2.2 que tenía instalada, lo cual tiró un error al intentarlo que rezaba algo como lo siguiente:

“…dpkg: error processing /home/gabo/Descargas/skype-ubuntu_4.0.0.7-1_amd64.deb (–install):
trying to overwrite ‘/etc/dbus-1/system.d/skype.conf’, which is also in package skype-bin:i386 2.2.0.35-0precise3
dpkg-deb (subprocess): data: internal gzip write error: Broken pipe
dpkg-deb: error: subprocess returned error exit status 2
dpkg-deb (subprocess): failed in write on buffer copy for failed to write to pipe in copy: Broken pipe
Errors were encountered while processing…”

Este tipo de error con Skype, resumido como el error broken pipe, parece que es algo común, y aunque mi primer reacción fue desinstalar el Skype que ya tenía para repararlo, el problema persistía. Pero si eliminamos Skype desde la línea de comandos mediante apt-get es probable que luego de realizada la operación un mensaje nos liste una enorme cantidad de librerías y paquetes que eran utilizados por la aplicación y que permanecerán en el sistema mientras no elijamos desinstalarlos mediante el comando (sudo) apt-get autoremove. Si lo hacemos, luego podremos instalar el paquete .deb de Skype 4 con normalidad.

Saludos y buenas videoconferencias.


may 25 2012

Crear un hotspot Wi-Fi desde la línea de comandos de Windows 7

Gabolonte Blasfemus

MiFi, módem 3G + router WiFiHoy en día está muy expandida la idea de poder compartir inalámbricamente cualquier conexión a Internet de la que dispongamos, generalmente enlaces de datos de telefonía celular. La mayoría de los smartphones decentes tienen la capacidad de hacerlo nativamente o mediante algun hack y/o aplicación (lo que se le llama tethering), y de hecho ya son bastante comunes las “cajitas para compartir Internet” conocidas como MiFi, que no son más que un modem 3G asociado a un router WiFi, todo integrado en un solo gadget del tamaño de un estuche de anteojos, de manera que facilite tener un enlace móvil para dispositivos que también lo son, como notebooks, netbooks, smartphones, tablets o lo que se nos ocurra. ¡Si hasta ya son comunes los autos con WiFi!

Pero lo más probable es que no tengamos un auto que comparte Internet, ni aún justifiquemos la compra de un MiFi, pero que sí tengamos un modem 3G o 4G USB que usemos en nuestra PC o notebook, y a través del cual algunas veces nos gustaría poder compartir la conexión, inalámbricamente, con otros aparatos. Hace un buen tiempo vimos como una aplicación llamada Connectify nos permitía conseguir exactamente esto, utilizando capacidades propias de Windows 7. Lo que me enteré hace poco, despistado de mí, es que esto mismo podemos lograrlo desde la misma línea de comandos de Windows 7, sin necesidad de descargar e instalar aplicación alguna.

Continue reading