Cambios en GNUPG en Debian testing

gpg

Aprovechando que acaba de entrar en testing la versión “moderna” de GnuPG os traigo esta entrada sobre los cambios que introduce la nueva versión. De acuerdo al mantenedor del paquete en Debian, Daniel K. Gillmore, los principales cambios son:

  • gpg-agent (paquete gnupg-agent) será el responsable de manejar toda la información relativa a las claves secretas, lo que significa que las operaciones de cifrado/descifrado más delicadas quedan en manos de un software más contenido y menos proclive a sufrir vulnerabilidades.

  • Los demonios se irán lanzando según se necesiten, optimizando el uso de memoria.

  • scdaemon manejará todos los accesos a smartcards.

  • dirmngr manejará todos los accesos a red.

  • Se retira el soporte a claves PGPv3.

  • Las claves secretas dejan de almacenarse en secring.pgp y pasan a private-keys-v1.d

  • Los anillos de claves públicas ahora se almacenan en formato keybox (~/.gnupg/pubring.kbx) para nuevos usuarios.

  • Si actualizas desde una versión anterior de GNUPG mantendrás el archivo pubring.gpg hasta que decidas migrar a la nueva versión

Migrar el directorio de GNUPG a la versión moderna

Las claves secretas se migran de forma automática de la estructura clásica a la moderna tras las primera ejecución del programa. Si guardas tus claves secretas en una smartcard, tras la primera ejecución de la versión moderna de GNUPG, conecta el lector de tarjetas y teclea:

gpg --card-status

El anillo de claves públicas no se migra de manera automática. Si quieres pasar tus claves públicas a formato .kbx puedes usar el script incluido en /usr/bin/migrate-pubring-from-classic-gpg.

Más información

Podéis encontrar más información sobre la nueva versión de gpg en la web oficial del proyecto y en sus listas de correo.

Cifrad vuestras comunicaciones on-line

Recordad que utilicéis el proveedor que utilicéis, cifrar vuestras comunicaciones es la única forma de mantener vuestra privacidad en línea.

Happy cyphering!

 

El tiempo, en tu terminal

weather

Os dejo un pequeño tip para que podáis acceder a la información meteorológica de un montón de ciudades de forma fácil y visual desde vuestra terminal. El autor del proyecto es Igor Chubin, y aquí tenéis el enlace a Github, por si queréis echar un vistazo al código fuente. Se trata de un frontend web de la aplicación Wego, que nos evitará tener que instalar nada en nuestras máquinas. El funcionamiento es bastante simple, basta con hacer curl a la dirección wttr.in seguido de la ciudad que quieres consultar. Por ejemplo, para obtener la predicción metereológica en Madrid, tecleamos:
curl wttr.in/Madrid

Y se genera un informe de este tipo:

wttr

Si consultáis el tiempo de varias ciudades con cierta frecuencia, podéis crear un alias para cada una de ellas en vuestro bashrc para tenerlas a golpe de comando. Por ejemplo:

alias madrid_weather='curl wttr.in/Madrid'
alias oviedo_weather='curl wttr.in/Oviedo'

Fácil y rápido a más no poder ¿no os parece?

P.D. wttr.in está licenciado bajo Apache v2.0; Wego tiene una licencia ISC.

 

Vi(m)taminando el editor de texto

Vimlogo

Esta entrada no pretende ser una guía rápida, ni extensiva, ni para novatos, ni para profesionales de VIM. De esas las hay a cientos por la web, basta hacer una búsqueda rápida desde el pato para encontrarlas de todos los tipos. Esta entrada pretende tan sólo compartir una configuración personal que a mi me resulta útil en el día a día y de paso desmitificar el concepto de que configurar VIM es complicado. De hecho, veréis que con la ayuda de unos cuantos plugins mi .vimrc es más espartano que el mismísimo Heracles. Por supuesto, como para tantas otras cosas, el grado de complejidad de la configuración probablemente dependa del uso que penséis hacer del editor, pero se pueden cubrir muchas situaciones de manera óptima con una configuración relativamente sencilla. Mi caso de uso es muy sencillo: necesito un IDE para escribir código en Bash y Perl (para R el magnífico Rstudio no tiene rival; para LaTex afortunadamente existe Lyx) y un editor de textos multiusos.

Veamos cómo hacerlo:

Instalando plugins para VIM

Existen varias maneras de gestionar los plugins en vim. Mi favorita, por su sencillez, es pathogen. Instalarlo es tan sencillo como descargar el script pathogen.vim y copiarlo en el directorio .vim/autostart. Una vez instalado, editamos el archivo .vimrc y añadimos:

execute pathogen#infect

A partir de ahora añadir nuevos plugins para vim es tan sencillo como copiarlos a la ruta .vim/bundle. Por ejemplo, para instalar uno de mis plugins favoritos, vim-perl basta con teclear:

cd .vim/bundle
git clone https://github.com/vim-perl/vim-perl

Por supuesto, existen varias alternativas a para gestionar los plugins en vim:

  1. Vundle
  2. NeoBundle
  3. VimPlug

Vim is (fucking) awesome

Y sino que se lo digan a David Hu , Ben Alpert y Emily Eisenberg, creadores de VimAwesome, fantástica y extensa web con un índice de casi 13000 plugins clasificados por categorías y accesibles mediante un buscador integrado en la propia web. Para cada plugin hay instrucciones de instalación (para pathogen, vundle, neobundle y vimplug), documentación y un enlace directo al
repositorio en Github y/o a vim.org. Una auténtica joya de web: sencilla, funcional y con un diseño impecable.

vimawesome2

Vitaminando Vim

Como os decía al principio de la entrada, mi configuración es bastante sencilla. Gracias a i3, suelo trabajar con varias terminales abiertas de forma bastante cómoda, por lo que no necesito añadir demasiados plugins a mi configuración (ni utilizar un IDE complejo para escribir código). Básicamente trabajo con tres terminales abiertas, a la izquierda Ranger, ocupando la mayor parte de la pantalla Vim, y debajo una terminal para pruebas/debugging.

Los plugins que utilizo son:

(1) [Disclaimer] El uso de este plugin puede causar adicción de acuerdo a su creador 😉

me: Hi everyone, my name is Franco and I’m addicted to colorschemes
everyone else: Hi Franco

Los que no utilizo, pero pueden ser muy útiles cuando editáis código:

Para escribir, nada mejor para mantenerse concentrado que una terminal a pantalla completa y el plugin vim-markdown a cargo de nuestros ficheros markdown:

vim-md

Por último, aquí os dejo el contenido de mi .vimrc, más simple que el mecanismo de un botijo (no llega ni a las 10 líneas):

“Pathogen installation
execute pathogen#infect()

“General settings
syntax on
filetype plugin indent on
set number
set wrap
set nofoldenable

“Colorscheme
colorscheme Monokai

Happy hacking!

 

Apurando plazos con hacienda, errores, certificados y linux

Desde el año pasado (creo) la AEAT (hacienda, para el que no sea de siglas), tiene un programa Java que sustituye al programa PADRE. Al final creo que se cansaron de mantener varios sistemas para cumplir telemáticamente con el fisco y lo hicieron en Java. Yo me lo imagino tal que así:

INTERIOR, TARDE OSCURA DE INVIERNO EN UN EDIFICIO DE CRISTAL Y ACERO. UN GRUPO DE GENTE CON CORBATA (HOMBRES TODO) DISCUTE.
–Es un coñazo rehacer el programa ese año tras año. ¡Está en visual basic!
–Pues otra vez montar un Citrix para que se conecten los cuatro idiotas de linux, no. ¡Se quejaban de que no era una solución libre!
–Pues a ver qué hacemos…
–Un momento, que le pregunto a mi cuñao por whatsapp, que sabe mucho de estas cosas… Que busquemos una solución multiplataforma… Que se hace una vez y sirve para todos los sistemas operativos… Algo web, fácil, rápido y basado en estándares abiertos…
–Suena bien…
–Espera, que sigue. Dice que pidamos que lo hagan en java, que es todo eso y más.
–¡Cojonudo! Ahora sólo hay que montar que concurso para que se lleve un amiguete y que hagan una web con todo eso. Mándame los whatsapps que tengan siglas o cosas de esas, que quedarán muy bien en el concurso. Y a ver quien tiene narices ahora de quejarse…

Si, es una pantomima y es muy personal pero no creo que se aleje mucho de la realidad.

Si, además, eres de esas personas que apuran los plazos cuando se trata de pagar (bienvenido/a al club) y la web te de un error del certificado justo después de pagar y antes de declararte al día de tus obligaciones, a día y medio del plazo final, entonces no le encontrarás la gracia por ningún lado.

Usamos el Macbook con Linux Mint y todo fue bien hasta el paso siguiente tras haber pagado. Cuando sólo te falta confirmar tu identidad con el certificado electrónico, nos saltó un popup con el error «Error message: El almacén no contenía entradas». Muy clarito todo.

error-aeat2

Así que tocó revisar certificados, ficheros del programa y volverse loco para acabar concluyendo que la culpa es de java. ¿De quién sino?

El maldito programa o al menos la parte final que muestra el justificante de la operación y del pago, sólo funciona con java, java, el java de adobe, el de java.com. Linux Mint trae, por defecto, openjre, que es una opción muy válida para casi todo el mundo menos para hacienda por lo que tocó borrar openjre, bajar java-java, instalarlo y, para que el maldito programa lo reconociese sin mucho esfuerzo, crear un enlace en /usr/bin/java apuntando al binario de la nueva versión.

Después de eso, repetir, alegar que ya se había pagado y terminar el proceso no sin antes mentar mil veces a la familia directa del águila que señaló java-java como una solución multiplataforma.

PD a los que lo dejáis todo para el último día… ¡corred insensatos! ¡Sólo quedan unas horas! 🙂
PD2 no hay ningún enlace a la web de java-java porque aún me dura el cabreo.

 

Donad, malditos, ¡donad!

donate

Si utilizáis software libre en el día a día, puntualmente o incluso si pensáis que no lo habéis utilizado jamás (porque probablemente no sea cierto). Si creéis en la cultura libre y en el desarrollo colaborativo y abierto de ideas. Si defendéis que el acceso a la cultura debe ser universal y no el perverso feudo de multinacionales sin escrúpulos y delincuentes varios. Si queréis mostrar vuestro agradecimiento a los miles de autores que invierten tiempo, esfuerzo e ilusión en compartir su obra bajo licencias libres, por el bien común, porque difundir cultura genera cultura.

Libre no significa gratis. Libre significa que no hay barreras para acceder, modificar o compartir cultura. Sea software, una canción, un libro o una fotografía. Libre en muchos casos significa que el autor deja en vuestras manos que valoréis y recompenséis su obra.

Donad trabajo, donad dinero o criptomoneda pero donad. A vuestro sistema operativo libre favorito, a ese software que os ha sacado de apuros una y mil veces, al músico o escritor que cuelga su trabajo en la red tan pronto ha terminado de editarlo o al bloguero que tanto os ha enseñado (y no, nosotros no aceptamos donaciones, no seáis malpensados :P).

Donad malditos, ¡donad!

 

Aprendices de sysadmin

Resulta que tres elementos que conocemos, admiramos y queremos (y en ocasiones padecemos, ¿eh, presionator? :)) se han juntado para darle forma a un blog llamado Aprendiz de Sysadmin que ha abierto sus puertas hace un mes. @fpalenzuela, @itzala74 e @israelmgo van a escribir sobre administración de sistemas en varios entornos y ya tienen un par de entradas de cada, bastante interesantes.

Pero lo mejor está llegando porque ya han comenzado con la guía Hardening en sistemas Linux con un capítulo sobre el proceso de instalación de un debian cifrado. Viendo el índice de esa guía lo mejor está por llegar.

Así pues, ¡bienvenidos!

 

Instalación de un repositorio debian con reprepro

Lenny Updated

Cuando se pega mucho (pero mucho, mucho) con debian, lleva un momento en que empieza a hacer o modificar paquetes y es entonces cuando el uso de un repositorio personal es una buena idea. Hace unos años, crear y sobre todo mantener un repositorio de paquetes de debian era doloroso por los scripts que había que ejecutar, puesto que funcionaban una de cada dos veces y estaban llenos de parches. Afortunidamente han surgido unos cuantos programas que facilitan mucho la tarea de instalación y sobre todo de mantenimiento de los repositorios y, dentro de todos ellos, mi favorito es reprepro.

No es excesivamente pesado, se maneja completamente desde la línea de comandos y el cifrado de los ficheros que contienen las sumas MD5 (los ficheros Release) es transparente. También, la configuración de cada repositorio es sencilla y mediante ficheros de texto y toda la información de los paquetes se almacen en una base de datos Berkeley, por lo que no es necesarios ningún SGBD.

Tener los repositorios disponibles para un sólo equipo no es muy inteligente así que se suelen instalar bajo servidores web o ftp. Los repositorios de mi red están en ranas, mi servidor raspberry NAS, así que por motivos de rendimiento y recursos preferí instalar un servidor pure-ftpd antes que un apache2. Como ambos pillan fuera del ámbito de esta guía, os dejo los enlaces de configuración de ambos:

Instalación

Instalamos conjuntamente reprepro y pure-ftpd.

pure-ftpd

Configuramos pure-ftp según se explica en los enlaces superiores y configuramos unas cuantas cosas más.

  • crear usuario ftp con directorio /media/nas/ftp/.

  • asignar permisos a mi usuario en el directorio de los repositorios.

reprepro

Toda la configuración y gestión del repositorio con reprepro se realiza como un usuario sin privilegios, salvo el de escribir en el directorio de los repositorios.

Dada la versatilidad de reprepro puedo crear tantos repositorios como quiera. Si, por ejemplo, quiero tener los repositorios de cada proyecto organizados, puedo crear dentro de /media/nas/ftp un directorio, proy01, que contenga los repos proy01, partners y apps. Para el segundo proyecto crearía proy02 con los repos proy02 y extras y así… Cada proyecto con sus paquetes y, probablemente, un repo general con debian, con jessie, wheezy y sid dentro.

  • debemos crear una llave gpg de 2048 bits con que firmar los paquetes.

  • exportamos la parte pública de la llave a un fichero asc.

  • creamos el fichero de configuración del repo nimhix.

Las líneas más jugosas son Architectures, donde indicamos que arquitecturas están soportadas, Components, donde se enumeran las ramas del repo y SignWith, donde especificamos la clave pública que se usará para firmar los paquetes. Codename es el nombre en clave del repositorio y si, en este caso viene de la serie Justified.

  • creamos el repositorio y los enlaces. Si estamos en el directorio principal del repositorio (donde se ve el directorio conf), no es necesario pasar el argumento -b.

Gestionando paquetes

Todos los ejemplos se ejecutan desde el directorio principal (al mismo nivel que conf). De no ser así, el argumento -b es tu amigo. 🙂

Listar paquetes del repositorio

Añadir nuevos paquetes (o versiones actualizadas)

Borrar paquetes

Y con esto ya tenemos cuantos repositorios necesitemos. Actualmente es ranas quien sirve los paquetes en mi red local, así que el gasto de recursos está bastante contenido (con pure-ftpd). Si, además, configuras samba para “tirar” los paquetes en el directorio del ftp, lo tienes todo más a mano.

 

Firefox is back

Después de casi diez años usando la versión debianizada del mejor navegador que ha surcado internet, Mozilla Firefox, acabo de ver en los paquetes de debian que ya está de vuelta en los repositorios, al menos en la rama testing (si, lo sé pero es uno de esos vicios confesables...). Una gran noticia para los que no sabemos movernos sin esta gran pieza de software, ya sea en su estado normal o encebollado.

diego@tola:~$ apt-cache search firefox-esr
firefox-esr – Mozilla Firefox web browser

Han marcado como transitional a iceweasel y basta con hacer una actualización de paquetes para que se instale limpiamente, con los 450 MB restantes, por supuesto. Ha sido un detalle que hayan hecho coincidir el cambio con la mayor fiesta cristiana fuera del mes de diciembre y así nos ha pillado, por sorpresa y cara de susto.

Personalmente estoy encantado de que, por fin, haya vuelto la cordura y podamos disponer de Firefox sin trucos para evitar demandas legales absurdas porque, a pesar de intentar utilizar otros navegadores, ninguno
me convencía y no tardaba en volver a la comadreja de los hielos.

NOTA: esta entrada carece de enlaces y etiquetas html por un problema con el servidor. En cuanto se solvente, aparecerán mágicamente. :)

 

LinuxBBQ: barbacoa linuxera

Linuxbbq

Legendaria la distro que se han sacado de la manga los creadores de LinuxBBQ. Una Debian SID minimalista que en su edición LinuxBBQ cream cuenta con la friolera de 76 gestores de ventanas distintos incluidos, todo empaquetado en una ISO de unos 500Mb, ideal para llevar en un pendrive o para grabar en uno de esos CDs que ya creías obsoletos ante la avalancha de imágenes de giga y pico que reina entre las distribuciones linuxeras hoy día.

El leit motif de LinuxBBQ no podía ser otro que “Roast your own”: coge el sistema base, añade lo que necesites y genera una iso para compartir con el resto de usuarios. Siguiendo esta filosofía, la distribución cuenta con un número record de más de 100 ediciones diferentes. Sobra decir que el concepto que esconde su nombre hace referencia a la esencia misma del software libre, el espíritu colaborativo que se genera en torno a un interés común (ya sea carnaza, código o cultura :P).

Si estás pensando en dejar de lado al gigante tragarecursos que ocupa tu máquina por una opción más liviana y personalizada no se me ocurre mejor forma de empezar. Aquí tienes una galería con capturas de pantalla de los 76 gestores de ventanas incluidos en LinuxBBQ cream. Y aquí el foro de la distro, donde la gente comparte sus creaciones.

Sino, te aseguro que la estética ochentera de la web merece que al menos te des una vuelta por el sitio.

¡Buen provecho!

 

Securizando un VPS

Hace ya tiempo que busqué y alquilé el VPS (Virtual Private Server) más barato que pude encontrar, animado por dabo, que mantenía (y con razón) que por unos euros al mes tienes un juguete con el mantenerte bastante en forma en esto del sysadmining. Tras darle muchos usos, alguno incluso para el que no estaba preparado y no podía con ellos, se quedó con un apache2 y un par de blogs en wordpress durante el último año. Pero he decidio hacer de él un servidor de provecho y eso pasa por una reinstalación (aka limpieza) y configuración.

Ésta es una guía no exhaustiva de los pasos que sigo para dejar el servidor un poco más seguro tras la instalación.

1. Reinstalar el VPS

Desde el panel de control del VPS (al menos en mi caso), elijo una Debian GNU/Linux 8 de 64 bits y le digo que si, que estoy seguro de que se puede cargar el servidor y reinstalar. Al cabo de unos minutos asigno una nueva contraseña de root y me conecto por ssh.

2. Cerrar puertos abiertos (de más)

Ejecuto netstat -pta y detengo todos aquellos servicios que no sean ssh. En este caso, apache2 y postfix. En alguna ocasión me he encontrado con un montón de servicios instalados y funcionando, algunos de ellos inseguros por definición, así que antes de seguir, cerrojo.

3. Borrado de paquetes

Igual que con los servicios funcionando (o precisamente por eso), hay bastantes paquetes que a mi juicio sobran y que desinstalo por real decreto. Y si, algunos de los paquetes que elimino los instalaré más tarde pero será bajo demanda, porque decido instalar el servicio y configurarlo y no porque tenga que venir preinstalado. Llamadme exagerao pero, en un VPS donde no puedes instalar un escritorio, ¿para qué hacen falta fuentes truetype?

En esta ocasión, partí de una lista total de 380 paquetes y los reduje hasta los 290. La lista la genero mediante el comando:

Normalmente, en otra pestaña del terminal abro otra sesión ssh y creo un alias para que sólo sea copiar y pegar nombres de paquetes.

La lista de paquetes eliminados es:

Y para eliminar varios paquetes que empiezan por el mismo nombre, como las fuentes, unas cuantas tuberías y listo.

4. Creación y configuración de un usuario

Lo de conectarse como rootnunca ha sido una opción así que una de las primeras acciones es crear un usuario con el que conectarse.

No voy a explicar porqué debe usarse sudo porque, como decía un profe en la universidad “es de sentido común”.

5. SSH

Si ejecutamos nmap sobre sobre el propio servidor descubriremos que ssh es un chivato de cuidado.

Así que para vamos a pedirle que de menos información y a evitar que root pueda iniciar sesión a través de este protocolo.

Ahora estará un poco más callado :).

6. NTP

El VPN que estoy configurando está situado en la costa oeste americana a siete horas de diferencia y eso puede (y lo hace, vaya si lo hace) complicar bastante las cosas. Así que se impone el ajuste de la zona horaria y la instalación de un servidor de hora.

7. Securización extra

1. portsentry

No está de más tener un perro guardian que vigile todos los recovecos de la casa y eso precisamente hace portsentry. Audita los puertos inactivos del sistema en busca de actividad e informa si la encuentra donde no debe.

Si ejecutamos un netstat -pta veremos que hay servicios que antes no estaban y que ni tan siquiera están instalados, como finger.

2. logwatch

Un estupendo servicio que lee los logs del sistema y nos avisa en caso de que algo no le cuadre. Es un poco pesado en la configuración pero merece mucho la pena. Unas excelentes guías para la configuración de logcheck son las de Un pingüino en mi ascensor: Vigilando los logs con logcheck (I) y Vigilando los logs con logcheck (II).

3. maldet

maldet es un software muy interesante que escanea en busca de malware, se actualiza automáticamente y emite unos informes con todos los cambios que encuentra y que pueden ser de interés. No tiene paquete debian por lo que se descarga e instala.

En este punto tenemos un directorio, /usr/local/maldetect con el software instalado, por eso se borra el directorio de instalación en la última línea.

Lo configuramos y ejecutamos.

4. iptables (o ufw)

A estas alturas un firewall resulta imprescindible, ya estés configurando un servidor en el otro lado del mundo o una raspberry pi para tu red local. De hecho, es más importante en el caso de la raspi porque el servidor está protegido por la empresa que te lo alquila. Haz la prueba, instala ufw en tu raspi y échale un ojo a los logs, te garantizo que querrás llorar. Si iptables te asusta (a mí me pasó durante un tiempo), instala ufw que es su cara amable y de lenguaje llano. Si no te asusta, usálo a discrección porque es uno de esos programas sin los que linux estaría cojo.

Aquí dejo el script con las reglas para ufw que uso en una de mis raspberries.

Y hasta aquí, la configuración básica. Obviamente se complica cuando instalamos algún servicio porque hay que habilitarlo en el firewall, configurarlo adecuadamente y ajustar algunas cosas más. Pero esa es la magia de este juego al que es difícil cansarse de jugar.