Desactivar el bloqueo de SSLv3 en Firefox

A partir de Firefox 34 el popular navegador libre bloquea el acceso a todas las páginas que usen SSLv3 por ser un protocolo de seguridad roto. ¿Cual es el problema? Que hay routers, por ejemplo los de fibra optica de Telefónica, que usan este protocolo para el acceso a su página de administración, así que si intentas acceder a la configuración simplemente no puedes, te quedas en una página de error. ¿Hay solución? , si no ya no me molestaría en escribir esto.

Primero hay que entrar en la configuración del navegador poniendo en la barra de direcciones about:config. Te dará un aviso de que por ahí mejor no tocar que igual se rompe, tú con aplomo y seguridad tira p’alante. En el campo de búsqueda pones security.tls.version.min, cuando lo encuentre haces doble click sobre él y cambias el valor que tiene por un 0. Tras esto cierras firefox y lo vuelves a abrir. Ahora ya debería permitirte acceder al router (o a la web a la que querías acceder, pero en caso de un sitio web externo ten en cuenta la seguridad de la transmisión no está garantizada)

Usar GoogleDrive como CDN

A la hora de mejorar la velocidad de carga de nuestra web es interesante usar un CDN para liberar de trabajo a nuestro servidor. Si bien es cierto que lo mejor sería pagar por uno a veces no nos compensa para el proyecto que realizamos. Y nos encontramos con otra opción: Usar una cuenta gratuita de GoogleDrive como CDN. ¿Es esto posible? Sí.

El primer paso, obviamente, es tener una cuenta de Google. Gracias a eso tendremos 15 GB de almacenamiento en GoogleDrive.Crea entonces dentro de tu cuenta una carpeta y llámala, por ser original, CDN.

Haz click derecho sobre la nueva carpeta y eliges la opción compartir. Una vez dentro de la ventana «Compartir» haces click en «Avanzada».

Compartiendo una carpeta en google drive
Esta imagen está siendo cargada desde una cuenta de drive

Por defecto la carpeta estará configurada para que sólo la veas tú, así que le das a cambiar y eliges la opción «Sí: Público en la web». Luego sólo te queda metar imágenes en esa carpeta.

otra imagen desde Drive como CDN

Ahora lo interesante es ver cómo usar esa imágenes en una web.

Si te vas a la foto y eliges «Compartir» te sacará un churro tal cual este

https://drive.google.com/file/d/0B-GFTravIZzzZWpkUnVwMkRLdUE/view?usp=sharing

La parte interesante viene con el id de la imagen, que sería 0B-GFTravIZzzZWpkUnVwMkRLdUE (es decir, lo que va entre el /d/ y el /view?usp=sharing. Para poder usar la imagen en vuestra web debéis utilizar esta estructura

https://drive.google.com/uc?export=download&id=

y pegarle detrás el id de la imagen, tal que así:

https://drive.google.com/uc?export=download&id=0B-GFTravIZzzZWpkUnVwMkRLdUE

La desventaja de este método está a nivel de posicionamiento, ya que cuando los buscadores encuentren la imagen no remitirá a tu sitio sino a Google Drive, aunque por otra parte te libras del riesgo de hotlinking. En todo caso, esto de proporciona una solución por si tiene un hosting gratuito con espacio muy limitado, o simplemente para mejorar la velocidad de carga de tus imágenes.

Java/JSP: al enviar formulario por método POST los caracteres UTF-8 no aparecen bien representados

Me encontraba esta mañana trabajando sobre un proyecto desarrollado en Java haciendo uso de páginas JSP para las vistas, y me encontré con que al enviar un formulario no se insertaban bien en la base de datos los caracteres acentuados y las ñ, apareciendo otros extraños en su lugar. No era la primera vez que veía esto, era evidente que había un problema de codificación.

Lo primero fue comprobar que todas las páginas tuvieran definida en su cabecera la codificación adecuada:

<%@page contentType="text/html" pageEncoding="UTF-8"%>

Tras ver que eso estaba correctísimo, se me ocurre aplicar al principio del código, antes de recoger los resultados, la siguiente función:

request.setCharacterEncoding("UTF-8");

Y parecía que funcionaba, pero no. En principio en la mayoría de los casos eso soluciona el problema, pero a veces el Tomcat es puñetero (en mi caso estaba usando este servidor) y en algunas casuísticas decide que sigue cascando. Así que seguí buceando, y me encontré con que el problema está en que por defecto Tomcat interpreta los datos recibidos por POST como ISO-8859-1. Y había por medio un servlet funcionando como filtro que me escarallaba todo haciendo inútil el consejo anterior. Total, que fui a estudiarme la configuración del Tomcat, a ver si lo arreglaba definitivamente. Y así fue.

Lo primero es ir a la configuración de Tomcat y editar el archivo Server.xml, buscas allí el elemento Connector y en el valor de URIEncoding pones «UTF-8». Tras esto te vas a la carpeta WEB-INF de tu aplicación y allí editas web.xml, pegando este filtro antes que ningún otro:

  <filter>
    <filter-name>Character Encoding Filter</filter-name>
    <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>Character Encoding Filter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

Un último punto: ojito a servlets que puedan funcionar como filtros intermedios antes de llegar a vuestra página jsp, a librerías de generación de contenidos o a frameworks varios, que igual tenéis que configurarlos también (cada proyecto es un mundo, pero por ejemplo con Velocity o Freemarker tendríais que configurarlos para UTF-8).

Detectando intrusos en tu red wifi y bloqueándolos con Ubuntu.

Hace un rato comentaba en Facebook un artículo de El País sobre cómo detectar y echar a intrusos de tu red wifi. Aquí ya hablamos en el pasado sobre cómo asegurar una red wifi, y hace ya unos años sobre herramientas de Windows para detectar intrusos. Pero ¿y con Ubuntu/GNU Linux?

Recordaréis que hace unos meses hablamos sobre la forma de ver qué IP’s están libres en una red haciendo uso de nMap. Pues de forma similar, podemos usar esta herramienta para ver qué equipos están en nuestra red. Usaremos nMap para escanear nuestra red local en busca de todas las ip conectadas:

nmap -v -sP 192.168.1.1/24 | grep down -v

Nos dará un resultado tal cual este de la imagen (en mi caso está el portátil, un móvil y el router)

Escaneando ip con nMap
Captura de la consola usando el comando

Bueno, si compruebas que en esa lista de IP hay dispositivos que no deberían estar el primer paso es cambiar la contraseña del router para echarlos, pero antes puedes apuntar las MAC de los dispositivos para bloquearles el acceso a tu red. No es una medida definitiva, ya que les bastaría con camuflar su MAC para saltar el bloqueo, pero les dará la lata (otra solución, más efectiva aunque tampoco definitiva es usar una lista blanca, es decir, bloquear todas las MAC menos las de tus dispositivos). ¿Cómo conocemos las MAC de los equipos conectados? Pues ya que sabes su IP basta con un comando arp para que veamos la MAC:

#usamos arp -n seguido de la IP
#Para conocer la MAC de ese dispositivo
#en el ejemplo el 192.168.1.103
arp -n 192.168.1.103

De la lista de resultados obtenida, la MAC es el número que aparece como DirecciónHW. Una vez apuntadas las MAC a bloquear (o a permitir), te vas a la configuración de tu router y allí configuras el filtrado por MAC.

Y con esto tienes a los intrusos fuera, al menos por un rato.

Utilizar .htaccess para protegerse de inyecciones SQL

Llevo unos días que no encuentro tiempo para escribir, pero vamos con un tip cortito que puede servir de ayuda para mejorar la seguridad de nuestra web.

La inyección SQL es un peligro para la integridad de nuestros datos y ya más de una vez hemos visto formas de protegernos. Como un plus de seguridad nunca está mal, vamos a ver cómo usar el fichero .htaccess de nuestro servidor para conseguir un plus de protección contra este tipo de ataques. El siguiente cojunto de reglas nos ayudará a mejorar la protección de nuestro sitio:

RewriteCond %{QUERY_STRING} (;|<|>|’|”|\)|%0A|%0D|%22|%27|%3C|%3E|%00).*(/\*|union|select|insert|cast|set|declare|drop|update|md5|benchmark) [NC,OR]
RewriteCond %{QUERY_STRING} \.\./\.\. [OR]
RewriteCond %{QUERY_STRING} (localhost|loopback|127\.0\.0\.1) [NC,OR]
RewriteCond %{QUERY_STRING} \.[a-z0-9] [NC,OR]
RewriteCond %{QUERY_STRING} (<|>|’|%0A|%0D|%27|%3C|%3E|%00) [NC]
RewriteRule .* - [F]

Recordad que hay que tener el servidor configurado para que .htaccess esté activo y permita el filtrado de URL.

SquashFS: Creando archivos de sólo lectura para ahorrar espacio.

SquashFS es un sistema de archivos comprimido de sólo lectura para Linux. Se diseñó para utilizarlo en sistemas de memoria muy limitada, por ejemplo en muchos live-Cd de Linux, en el firmware de un router (y en general para sistemas embebidos), aunque también puede ser utilizado para ahorrar espacio. Veamos cómo:

Imagina que tu empresa tiene carpetas donde almacena los documentos de la última década organizados en carpetas por años. Lo más habitual es que estos archivos no vayan a ser modificados sino simplemente consultados. SquashFS nos permitiría comprimirlos, ahorrándonos espacio e incluso mejorando la velocidad de lectura.

El procedimiento a seguir consta de dos pasos: crear una imagen de disco con SquashFS para comprimir los datos y montarla en el sistema para acceder a ellos. Para lo primero tenemos el comando mksquashfs, cuxa sintaxis sería algo así: mksquashfs [directorios a comprimir] imagenDestino.sqsfs -comp [el algoritmo de compresión a usar] -b [tamaño de bloque ]. Vale, que visto así acojona pero os pongo un ejemplo práctico, donde comprimiremos las carpetas Facturas-2010, Facturas-2011 y Facturas-2012 en una imagen de SquashFS llamada HistoricoFacturas201012, usando el algoritmo de comprsión xz (que es la opción que nos da un mayor ratio de compresión) y con un tamaño de bloque de 1024kb (1 mega). Si no definís tamaño de bloque, por defecto serán 64kb:

mksquashfs facturas-2010 facturas-2011 facturas-2012 historicofacturas201012.sqsfs -comp xz -bs 1M

Con eso habremos creado una imagen de disco de sólo lectura en formato sqsfs, por lo que sólo nos queda montarlo como si fuera un disco para poder acceder a su lectura:

mount historicofacturas201012.sqsfs Facturas_10_12/

Si posteriormente quisiéramos extraer una de estas carpetas, por ejemplo para eliminar algún archivo, nos bastaría con el comando unsquashfs, usado tal que así unsquashfs [opciones] nuestraimagen.sqsfs [Directorios o archivos que extraemos]

Con nuestro ejemplo:

unsquashfs historicofacturas201012.sqsfs facturas-2010

Por defecto usará como directorio de extracción squashfs-root. Esto puede cambiarse usando la opción -d con el comando antes citado.

Cambiando el color de fondo del Centro de Software de Ubuntu para verlo en temas oscuros

Como os comentaba no hace mucho, actualicé de ElementaryOS Luna a ElementaryOS Freya. Posteriormente le metí el tema Numix, que estéticamente ha quedado fetén, pero que tenía un problema muy grande (típico de los temas oscuros GTK, por cierto): el fondo del centro de software es demasiado claro y la letra es blanca, lo que provoca que sea imposible leer el texto.

¿Hay solución? Claro que sí, que para algo esto es software libre y podemos meter mano. Lo bueno del centro de software es que la estética está definida en un archivo CSS, así que podemos editarlo cómodamente.

Lo primero es abrir el archivo /usr/share/software-center/ui/gtk3/css/softwarecenter.css con un editor de texto y con permisos de administrador para poder trastear, por ejemplo con el comando

sudo gedit /usr/share/software-center/ui/gtk3/css/softwarecenter.css

Una vez con el archivo abierto, casi al principio de todo, tienes una línea que pone los siguiente:

@define-color super-light-aubergine #F4F1F3;

Ahí se define el color de fondo del Centro de Software, que es un gris muy clarito, por lo que al estar ahora la fuente en blanco por el tema no se verá. La cosa es ponerle un gris más oscuro, así que la solución es comentar esta línea y cambiarle el color por otro tal que así (le voy a poner un gris oscuro):

@define-color super-light-aubergine #8A8A8A;

Y esto deja un resultado como el de la siguiente foto:
Centro Software Modificado

No es muy estético, pero ahora ya se lee. Podéis elegir otro color si queréis, tened en cuenta que el texto oscila entre blanco y negro, por lo que estos dos no son recomendables, el resto ya a vuestro libre albedrío.

Instalando Elementary Tweaks en Elementary OS Freya.

No hace mucho comentaba que me había pasado a Elementary OS Luna. Anteayer instalé la última versión, Freya (y la verdad es que he notado una mejoría en el rendimiento, debe ser cosa del kernel). A raiz de aquella instalación os comentaba cómo instalar Elementary Tweaks, una herramienta que permite personalizar todavía más vuestro sistema. Pero con el cambio de versión el repositorio desde el que descargar Tweaks también cambia, así que si sois usuarios de Freya os tocará teclear lo siguiente:

sudo add-apt-repository ppa:mpstark/elementary-tweaks-daily
sudo apt-get update
sudo apt-get install elementary-tweaks

Luego, para seguir con la personalización ya podéis buscar diversos paquetes de iconos o temas. Para Luna había un huevo, como ya se comentó en el artículo pasado. Para Freya de momento no he encontrado tantos, aunque si le he metido el paquete de iconos de Potenza.

Conectando a IRC-Hispano con X-Chat

Entrada que agrego porque me lo han preguntado hace un rato, y así comparto el tutorial con quien tenga dudas. Aunque a más de uno os sorprenda, el protocolo de chat IRC se sigue utilizando. Desde luego no de una forma tan masiva como a principios de los dosmiles, pero existe actividad. Me preguntaba hace un rato una colega cómo podría conectarse a un canal de la red IRC-Hispano y le dije que había un app para Android, que chupa la hostia de bateria y ancho de banda, pero cumple el cometido en tu móvil. ¿Y para PC? Pues en Ubuntu/Mint/Elementary tienes opciones como X-Chat, que puedes instalar desde el centro de software de la popular distribución (Existen otras, como HEX-Chat, del que ya hablamos aquí).

Una vez instalado verás que te da opciones como elegir varios apodos por si el tuyo está ocupado, nombre de usuario, etc… y debajo te aparecerá una lista de servidores a los que conectarte, entre los cuales NO ESTÁ el IRC-Hispano. Y esto era lo que le interesaba la persona que preguntaba, ya que quería unirse al canal #Coruña, perteneciente a ese servidor ¿Cómo se configura esto?. Pues muy simple:

  • En el apartado Redes pulsa el botón Añadir
  • Ponle el nombre, para acordarte
  • Con la red recién añadida selecciónala y pulsa Editar
  • Una vez pulsado editar veremos todos los servidores de la red (debería haber sólo uno que ponga «nuevo/6667» o algo así). Editáis el que aparece por defecto y lo cambiáis por irc.irc-hispano.org/6667 siendo 6667 el número del puerto al que os conectaréis.
  • Tras añadir esto os queda pulsar Aceptar y Conectar, y ya conseguís el acceso a los canales de IRC-Hispano.

Y tras esto podéis disfrutar del chateo old-school.

Primeros días con ElementaryOS

Como todo el que me siga en Twitter sabrá, no hace mucho en uno de mis equipos he migrado de Ubuntu (con Unity) a ElementaryOS. Vamos con una serie de primeras impresiones. Empezaré por lo malo, que ha sido poco.

Si tuviera que poner algo negativo, en comparación con Ubuntu (que a fin de cuentas, es la «madre» de Elementary) fue que durante la instalacioń no podía conectar con las redes WiFi, dado que ElementaryOS no incluye los paquetes de drivers privativos de Ubuntu, por lo que tuve que conectarme mediante cable para descargar e instalar todos los paquetes, incluyendo esos drivers. En fin, un problema menor pero hay que tener en cuenta antes de empezar la instalación.

Escritorio Elementary OS

El fuerte de ElementaryOS es el diseño, se trata de un sistema operativo «bonito«, muy bien diseñado. A la hora de personalizar su apariencia incluye varias opciones, aunque yo recomendaría la instalación de Elementary Tweaks, que nos permitirá personalizarlo con mayor precisión, e instalar los paquetes de iconos y temas alternativos:

sudo apt-get install elementary-blue-theme elementary-champagne-theme elementary-colors-theme elementary-dark-theme elementary-harvey-theme elementary-lion-theme elementary-milk-theme elementary-plastico-theme elementary-whit-e-theme elementary-elfaenza-icons elementary-emod-icons elementary-enumix-utouch-icons elementary-nitrux-icons elementary-taprevival-icons elementary-thirdparty-icons elementary-plank-themes elementary-wallpaper-collection

Elementary Tweaks

A pesar de su cuidado aspecto no es un sistema operativo pesado para nada. Ahora mismo, con varias pestañas abiertas en Firefox, Audacious reproduciendo música, Shutter abierto para editar capturas de pantalla para esta entrada y un par de procesos más trabajando en segundo plano no llega a los 1200 megas consumidos. A nivel de interfaz me gusta el dock, basado en Docky, y el concepto de las esquinas activas, que nos permite automatizar una acción cada vez que llevamos el botón a una esquina de la pantalla (por ejemplo, minimizar la ventana activa cuando lo llevo a la esquina izquierda). Para facilitar la instalación de software han incluído el centro de software de Ubuntu, y yo recomendaría además instalar también el gestor de paquetes de Synaptic. Y por comodidad también metería el lanzador de Synapse. Elementary OS no trae preinstalado mucho software (viene con el navegador Midori, el chat Empathy, Geary para el correo, Shotwell para las imágenes, sendos reproductores de música y vídeo…), por un lado os obligará a instalar muchas cosas tras la migración, por otro lado os evitará el coñazo de andar desinstalado según qué cosas (por ejemplo, no está la polémica búsqueda en Amazon por defecto de Ubuntu).

Añadiré que he leído que Elementary puede dar problemas con tarjetas gráficas ATI antiguas, aunque parece que se soluciona con la instalación de los drivers legacy y un downgrade (por cierto, estoy promocionando el uso del término «antiguación» en lugar de downgrade, un palabro que surgió entre cañas en una cena de ex-compañeros de clase, mucho más bonito ).

En resumen, la experiencia en los primeros días con este sistema operativo ha sido buena. De momento se quedará una temporada en el equipo.