seguridad, mfa y demás hierbas

Aún recuerdo la primera contraseña que utilicé en serio. Fue para la cuenta en el servidor Unix de la universidad y tenía ocho caracteres que formaban una palabra que no podía deducirse de mi persona. Me sentía completamente seguro. Luego aprendes lo que de verdad significa la seguridad aplicada a la tecnología y los sistemas informáticos y recuerdas aquella primera contraseña con cariño.

Y llega el día en que una buena contraseña (+50 caracteres de todo tipo) ya no es suficiente y descubres la autenticación con dos factores (o 2FA).

usando factores de autenticación

La autenticación con múltiples factores, un escalón por encima de la 2FA implica utilizar dos o más evidencias (o factores) para autenticar a alguien. Las opciones son: conocimiento, algo que sabe, como una contraseña; posesión, algo que tiene; e inherencia, algo que se es.

Contándolo rápidamente y usando el ejemplo de una cuenta de email, el 2FA sería utilizar dos factores, es decir, un factor más además de la contraseña (ese algo que conoces) para verificar que, efectivamente, eres quien dices ser. Así, podemos usar algo que tenemos o algo que somos. Como personalmente estoy en contra del uso de medidas de autenticación biométricas (a ver como cambias de iris…), usaremos algo que tenemos, algo como una contraseña temporal u OTP.

la app de google

Hace ya tiempo que google (quién sino) sacó una app para darte todas las contraseñas temporales que necesitases y, de paso, para que asegurases tu email a la vez que te liaban un poco más en su ecosistema de móvil, apps, email, calendarios y cualquier tipo de servicio que puedas imaginar. Esta app, google authenticator, validaba tu acceso dándote un número de seis cifras que tienes que introducir cada vez que accedas a tus cuentas. Todo muy seguro.

Y parecía que si querías usar un segundo factor de autenticación, o bien ponías tu número de teléfono en todas partes para que te enviasen un email o estabas fuera. Porque si intentas salir del yugo de google, terminar instalando una app así es un gran paso atrás. También hicieron una app para chrome pero, de nuevo, como utilizo firefox no podía usarla.

gauth

El truco radica en que el algoritmo sobre el que descansa la app es público y está perfectamente definido en el RFC 6238 y cualquiera puede usarlo. Tanto es así que un tal Gerard Braad se hizo su propio autenticador de dos factores, lo llamó gauth authenticator y lo publicó en github. Y, no contento con eso, hizo apps para firefox, firefox os, chrome, chromeOS, webOS y android.

Gauth almacena la información de la clave (la descriptción y la clave secreta) en la cache del navegador y lo vincula al perfil con lo que si cambias de navegador, de dispositivo o entras en el modo anónimo, las claves serán diferentes.

uso y disfrute

A mi, con mi tontería, se me han ocurrido tres formas de usar gauth en todos mis dispositivos porque claro, no voy a instalar una app en el móvil o en chrome para tener TOTP. Para disfrutar de la experiencia completa, recomiendo usar un gestor de contraseñas donde guardar los MFA. En mi caso concreto, utilizo keepass y tengo los ficheros en mi nube privada, disponibles desde cualquier lugar.

1. usa la web de gauth

Tan sencillo como eso, accedes a la web de gauth, introduces la clave (obviamente, no es una buena idea meter una descripción muy profusa) y ya puedes tener tu código.

2. instala el código en tu servidor

Te hace falta un dominio, un puñado de bytes disponibles y un git clone. Yo, además, le puse autenticacion extra usando el .htaccess. Una vez hecho esto, accedes a la URL de tu servidor y configuras las claves.

3. <modo paranoico on>

Esta opción también la uso para las claves que necesito en el móvil y con algunas del trabajo, aquellas que considero que merecen especial protección. Consiste en descargarme el código y descomprimirlo en local, ya sea el ordenador o el móvil. Obviamente, los dispositivos donde hago esto tienen el almacenamiento cifrado, ya ni lo considero una medida extra sino que va de serie.

Una vez instalado gauth en local, lo abro desde Firefox y añado las claves. Es lo más parecido a un google authenticator casero que he podido emular.

conclusiones

La única conclusión posible es que, en un mundo tan digitalizado y accesible, que tus datos dependan de una contraseña que seguramente es demasiado sencilla de averiguar es un riesgo.

 

Keep It Simple Stupid

Hace tiempo que no dedicamos una entrada al principio KISS y a su aplicación al mundo del software. En pocas palabras, software sencillo que hace una cosa y la hace bien. Optimizar recursos. Hacer más con menos. Minimalismo.

La filosofía KISS no implica renunciar, sino optimizar. Significa pensar en qué necesitamos y cómo podemos conseguirlo de la manera más eficiente posible. Un concepto muy extendido cuandose habla de minimalismo en el software es el de bloat o bloatware. El significado de bloated es “hinchado, inflamado” y en este contexto hace referencia a código que añade características o funciones innecesarias que incrementan el uso de recursos. Por supuesto, existe un amplio debate en torno a qué es y que no es bloatware, y se trata de una cuestión fundamentalmente subjetiva. A mi el sentido común me dice que si lo utilizas, no es bloatware. Y por tanto, desde el entorno de escritorio más pesado hasta el gestor de ventanas más minimalista pueden ser considerados bloated, o no. Quizá necesites todas y cada una de las funciones de un gestor de archivos con interfaz GUI o quizá te sirva con ranger. Puede que no necesites que tu gestor de ventanas organice tus ventanas automáticamente. O a lo mejor es algo fundamental para tu flujo de trabajo. Gnome puede ser bloatware, dwm puede ser bloatware.

Disertaciones conceptuales a parte, en esto de programar software sencillo, la gente de suckless hace un trabajo excelente. Entre sus herramientas más famosas se encuentran el gestor de ventanas dwm, la suite suckless-tools (con dmenu y slock a la cabeza), el emulador de terminal st (simple terminal) y el navegador web surf. Hoy vamos a echar un vistazo a dwm y a algunas aplicaciones ligeras que conjugan la mar de bien con un flujo de trabajo minimalista. Casi, casi nos lo podemos tomar como un “aplicaciones ligeras (III)”. Hay infinidad de sitios donde podéis encontrar información sobre dwm, así que no me voy a extender demasiado.

Conceptos básicos sobre dwm:

  1. Es un tiling window manager, organiza ventanas automáticamente según una distribución (“layout”) predefinida para ocupar el máximo espacio posible en pantalla.
  2. Es sencillo (menos de 2000 líneas de código) y modular (hay una buena colección de parches que permiten personalizarlo.
  3. Está escrito en C, y se configura editando un header file (config.h) y recompilando.
  4. En lugar de escritorios virtuales trabaja con tags: la principal diferencia es que una misma ventana puede estar etiquetada en varios tags.

Compilación e instalación

Descargamos el código fuente de la web de suckless:

wget https://dl.suckless.org/dwm/dwm-6.2.tar.gz

Accedemos al directorio y compilamos:

make clean install

Y listo, en 2-3 segundos tenemos dwm compilado con la configuración por defecto. Para personalizarlo, editamos el fichero config.h y recompilamos. Aunque es bastante intuitivo, siempre es recomendable consultar el manual antes de tocar nada.

Aquí os dejo el mío como ejemplo:

Parcheando dwm

La idea detrás de dwm es ofrecer un software sencillo, que hace una cosa y la hace bien. Sin embargo, hay un montón de parches que permiten añadir distintas funcionalidades a dwm. El procedimiento es sencillo:

patch -p1 < parche
make clean install

El parámetro -p se refiere al nivel de directorio en el que se encuentra el código a parchear. Por ejemplo, si estamos en el mismo directorio, utilizaremos -p1. Aviso de que parchear el código fuente de dwm puede romper cosas, si pensáis utilizar más de un parche idlos incorporando uno a uno (parchear, compilar, parchear, compilar…).

Iniciando una sesión gráfica sin gestor de inicio de sesión

a. Instalamos xinit.

b. Creamos el archivo .xinitrc en nuestra /home:

Aquí podéis lanzar los programas que necesitéis al inicio. Importante, la última orden debe ser el exec dwm que lanza el gestor de ventanas.

c. Tecleamos startx después de loguearnos con nuestro usuario y contraseña.

KISS software

Estas son las aplicaciones ligeras que utilizo normalmente:

1) Gestor de ventanas: dwm
2) Compositor: compton
3) Demonio de notificaciones: dunst
4) Lanzador de aplicaciones: dmenu
5) Capturas de pantalla: scrot
6) Terminal: st
7) Editor de texto: vim / nano
8) Editor de texto GUI: mousepad
9) Gestor de fondos de escritorio: nitrogen
10) Gestor de temas GTK: lxappearance
11) Herramienta de configuración de monitores: lxrandr + xrandr
12) Navegador de archivos: pcmanfm / ranger
13) Lector RSS: newsbeuter (debian stable) / newsboat (debian testing/sid)
14) Cliente IRC: irssi
15) Cliente FTP: ftp/sftp en terminal / filezilla
16) Visor de imágenes: viewnior
17) Visor de PDF: zathura + tabbed / qpdfview (tiene pestañas)
18) Gestor de portapapeles: clipmenu

Lógicamente, esto no es una lista exhaustiva de todo el software que utilizo. Faltan muchos imprescindibles (GIMP, Inkscape, Darktable, LibreOffice, Calibre…) que no son tan ligeros y que seguro que todos conocéis.

Dudas, sugerencias y/o críticas en los comentarios.

Happy desktop hacking!!

Entradas anteriores:

¿Alguien dijo tiling?

Aplicaciones ligeras

Aplicaciones ligeras (II)

 

Calibre congelado en Debian testing

Me he topado con este mensaje en mi último update en Debian testing:

calibre (4.0.0+really3.48.dfsg-1) unstable; urgency=medium

Due to the removal of Python 2 from Debian, support for necessary modules
to run Calibre >= 4.0.0 are not available.

We recommend users to use upstream Calibre packages to obtain new
features and security fixes, until upstream together with plugin
authors switch to Python3. Until that point Calibre in Debian will be
frozen at the last 3.NN version (3.48) and no further features or security
fixes can be applied
.

— Norbert Preining <[email protected]> Sun, 06 Oct 2019 09:31:44 +0900

Que viene a decir que dado que se va a eliminar Python 2 de Debian, no habrá actualizaciones ni parches de seguridad en Calibre, que queda congelado en la versión 3.48 hasta nueva orden.

Como alternativa, se pueden descargar los binarios de la web de Calibre (versión 4.1.0).

 

Tres lecciones que aprender del caso Huawei

Creo que a estas alturas nadie es ajeno al caso Huawei. Es un ejemplo tan bueno de porqué debemos utilizar software libre que me voy a permitir reproducir aquí, en castellano, las tres lecciones que podemos aprender de todo esto según la FSFE (el original es de la Newsletter Digest de la FSFE, Vol 98, Issue 1).

  1. El software libre permite controlar la tecnología: cuanto más importante es la tecnología en nuestras vidas, más importante se torna el uso de software libre.

  2. La Unión Europea confía en exceso en proveedores extranjeros de tecnología: la Unión Europea y sus estados miembros deberían invertir en el desarrollo de software libre y enfocarse en apoyar organizaciones y negocios locales que fomentan el uso de software libre.

  3. El software libre otorga independencia económica a las empresas: la empresa que utiliza software propietario depende del proveedor de software y por tanto del gobierno del país que lo regula. La mejor estrategia para evitar esta dependencia es utilizar software libre en el mayor número de puntos de la cadena de suministro.

Podéis leer más aquí.

 

instalando mattermost en debian stretch

¡Me encanta el olor a software libre por las mañanas! Y más cuando una aplicación privativa que me gusta se vuelve un dolor de muelas por sus restricciones. Entonces es el momento de buscar alternativas de software libre.

mis requerimientos

  • open source
  • alternativa a slack
  • multiplataforma: linux, windows, android…
  • sin limitaciones en cuanto a mensajes, ficheros, etc…
  • instalable en un servidor que ya esté funcionando con otros servicios

el caso

Slack, la plataforma para facilitar el trabajo en equipo es una herramienta muy útil pero, cuando llevas un tiempo utilizándola en su versión gratuíta empiezan a aparecer los problemas, como no poder recuperar conversaciones porque has excedido el máximo y sólo te muestra las últimas diez mil. Y un día, sin saber cómo, te encuentras abriendo duckduckgo y buscando 'slack open source alternatives'. Y ahí es cuando descubres Mattermost.

las alternativas

Mattermost es una alternativa a slack pero de software libre, su misión es la misma, su interfaz es terriblemente similar y no tiene las limitaciones de aquella pero no es la única alternativa. Durante un tiempo barajé la opción de zulip pero tiene un requerimiento que choca frontalmente con los míos:

(Zulip Requirements)

Mis servidores son limitados y por eso trato de aglutinar en ellos servicios similares y, en este caso, ni quería ni podía utilizar una máquina para la mensajería.

La única desventaja que le vi a Mattermost es que utiliza nginx como proxy inverso y yo utilizo apache pero se puede cambiar fácilmente, como veremos.

instalación de mattermost

Todo el proceso descrito en esta entrada se ha obtenido de la documentación oficial de Mattermost.

creación de la base de datos

El servidor de bases de datos también está instalado y configurado por lo que únicamente tendremos que crear una base de datos y un usuario nuevos.

Estos datos de conexión se utilizarán más adelante al configurar el Driver de Mattermost.

Mattermos, al fin

Instalaremos Mattermost en /opt y apuntaremos el virtual host de apache2 a ese directorio.

la columna de una tabla es demasiado grande

Si falla y da este error, {"level":"error","ts":1557928148.6244338,"caller":"sqlstore/supplier.go:811","msg":"Failed to create index Error 1709: Index column size too large. The maximum column size is 767 bytes."}, cambiar configuración en mariadb:

apache2

Crear el subdominio matter.example.com apuntando al servidor donde lo vas a instalar. En mi caso, en dicho servidor ya hay un apache funcionando y no necesito instalar software adicional. En caso de utilizar, como recomienda Mattermost, nginx tendría dos servicios operando sobre el mismo puerto y eso no termina bien nunca.

A partir de esta modificación, apache no sólo funcionará como servidor web sino que también hará de proxy inverso para redirigir el tráfico al puerto que escucha Mattermos, el 8065.

Creamos el VirtualHost para Mattermost, en principio vacío y luego, tras solicitar el certificado a letsencrypt, con la configuración de proxy.

Tras ejecutar estos comandos tendremos un nuevo virtual host redirigiendo el tráfico al puerto de Mattermost, adornado con un bonito certificado de Let’s Encrypt.

Configuración de mattermost

Ahora sólo nos queda abrir el navegador en https://matter.example.com y configurar el usuario administrador. También es necesario configurar el servidor de correo según el apartado Configuring Mattermost Server.

 

[Truco] cambiar la contraseña de una partición cifrada en debian stretch

Se nos llena la boca (a mí el primero) diciendo que tenemos que cifrar los dispositivos de almacenamiento, sobre todo los portátiles y los discos duros externos, para luego tener una única contraseña durante toda la vida útil del dispositivo.

En mi trabajo no tengo instalado linux en la estación de trabajo por directrices de la empresa pero, en cambio, sí que tengo una máquina virtual con VirtualBox que utilizo como sistema operativo principal, tanto que tengo un montón de alarmas de vbox para que no le de tantos recursos :-D. La cuestión es que el volumen de esa máquina virtual está cifrado desde el momento en que instalé debian y, pasado cierto tiempo, toca cambiar la frase de paso.

Cambiar la contraseña de LUKS puede hacerse mediante gnome-disks (en el paquete gnome-disk-utility) o, más fácil, desde la consola.

Lo primero es saber sobre qué partición quieres actuar, porque se puede dar el caso de que tengas varias particiones cifradas, incluso con diferentes contraseñas (ese es un nivel de paranoia al que aún no he llegado).

Ese fichero es la base de datos de volúmenes cifrados y, en este caso, sólo hay una partición que manejar, sda5.

A continuación, ejecutamos el comando que cambia la frase de paso sobre la partición correcta:

Cuando dentro de unos meses vuelva a cambiar la contraseña, ya no tendré que buscar más que aquí :-D.

 

[Short] FreshRSS: aloja tu propio servidor RSS

Como un soplo de aire fresco, llega FreshRSS un agregador de canales RSS libre y ligero donde mantener al día y sincronizados vuestros feed RSS. Es compatible tanto con Apache como con Ngnix, así que debería funcionar sin problema aunque vayáis un poco justos de hardware (RasPi calling!). El funcionamiento es simple, instalas un servidor web (guía aquí -de momento sólo está en inglés-) y accedes a él desde cualquier dispositivo, bien vía web o desde la aplicación android (la podéis encontrar en F-droid pero ojo que aún está en versión alpha).

Aquí podéis indagar un poco sobre el funcionamiento de la aplicación y aquí se explica como programar cron para que actualice los feeds automáticamente cada cierto tiempo.

Happy hacking!

 

[Truco] Convierte un vídeo en imágenes con ffmpeg

¿Pulsaste el botón de vídeo en lugar del de la foto en aquel lugar y momento difícilmente repetible? ¿Te gustaría tener una de las escenas icónicas de tu película favorita de fondo de pantalla? Con ffmpeg es muy sencillo. Imaginemos que necesitamos extraer los primeros 30 segundos de un vídeo en fotogramas. Basta con teclear:

ffmpeg -ss 00:00 -i video.mp4 -t 00:30 fotograma%05d.png

En detalle:

  • -ss indica el inicio temporal a partir del cual empezar a extraer fotogramas.
  • -t el intervalo de tiempo en el que queremos extraerlos
  • %05d es una wildcard que sirve para añadir el número de fotograma con 5 dígitos al final del nombre de cada .png generado

Fácil ¿verdad? Esta es solo una pequeña muestra del potencial de ffmpeg, os invito a echar un vistazo más detallado a esta navaja suiza del multimedia. Aquí os dejo el enlace a la lista de formatos de vídeo soportados.

¡Que aproveche!

 

DataDetox: controla tu presencia on-line

De la mano del Tactical Technology Collective y la Fundación Mozilla llega esta fantástica iniciativa que busca concienciar sobre privacidad on-line. Decenas de aplicaciones y sitios web rastrean a diario nuestra actividad, preferencias de navegación y gustos en busca de un trocito del suculento pastel del Big Data.

¿Conoces tu huella digital? ¿Qué saben las redes de ti? ¿Y qué sabes tú de lo que las redes hacen con tus datos?

DataDetox nos invita a indagar en nuestra huella digital, descubrir cual es nuestra identidad on-line y prevenir la fuga masiva de datos a la que estamos expuestos.

8 días, menos de media hora al día ¿te atreves?

Ahí va el programa:

Día 0.- ¿Por qué Detox? Nos vamos preparando.

Día 1.- Descubrir. ¿Quién eres según otras personas?

Día 2.- Todo en un mismo lugar. ¿Cuánto te conoce Google?

Día 3.- Ser sociable. Desintoxicando tus cuentas en redes sociales.

Día 4.- Buscar&navegar. ¿Qué estás compartiendo a través de tu navegador?

Día 5.- Conectando. ¿Con quién habla tu móvil?

Día 6.- Limpieza. Hora de limpiar nuestras aplicaciones.

Día 7.- ¿Quién crees que eres? Porqué crear perfiles no se trata simplemente de mostrarte anuncios.

Día 8.- Creando un nuevo yo. Convierte tu “data detox” en un nuevo estilo de vida.

 

[truco] mariadb se va de paseo (MySQL server has gone away)

O dicho en el idioma de los errores de sistema, ERROR 2006 (HY000) at line 21232: MySQL server has gone away.

El lío

mariadb

mariadb

El error me apareció cuando intentaba importar la base de un wordpress en una instalación de MariaDB 10.1.37-0+deb9u1. Tengo que decir que el fichero SQL no es muy diferente al montón de importaciones que he hecho con MySQL, tiene un tamaño aproximado aunque sí que ha habido ficheros varios megas más grandes en el mismo servidor. Lo inusual del error, el que no fuese un error de sintaxis del fichero me hacía sospechar de la configuración de MariaDB.

La solución

Hay que aumentar una variable del sistema que se encarga del tamaño máximo del buffer donde se almacenan los paquetes, max_allowed_packet. Basta con añadir (o modificar) el valor y ponerlo a algo tremendo para que no falle, en este caso, 2 GB.

Tras aplicar el cambio, ya se puede importar sin problema volcados de wordpress o de lo que sea.