DNS TTL of 0 and "nsec3params"

As described in Usar NSEC3 en vez de NSEC en un dominio DNSSEC con gestión de DNS dinámico, the common TTL (Time To Live (TTL)) used in NSEC3PARAMS record is Zero. This record is used in DNSSEC to provide a secure "proof non existence" with out leaking details about what names actually exist. I never fully understood why a TTL of zero is so common, but knowing in this case is not really important.

So good so far.

The problem was listening to The Ask Mr. DNS Podcast: Episode 57 [1]. There, Matt Larson and Cricket Liu talk long and deep about why using a TTL of Zero for DNS records is (almost) always a bad idea. I agree with the comments in the podcast, but the comments hit a nerve inside of me. I have been always unconfortable about not knowing WHY a TTL of Zero is used with NSEC3PARAMS and now real DNS experts [1] were saying that TTL of Zero is bad.

[1] (1, 2, 3)

The Ask Mr. DNS Podcast is (usually) a quite deep, insightful and (at times) funny podcast about DNS conducted by world class DNS experts Matt Larson and Cricket Liu.

You can ask them DNS questions at mrdns@ask-mrdns.com. If you are lucky (they are picky), they could reply them in the podcast.

Sorry, I needed to know. I sent a message to The Ask Mr. DNS Podcast people [1] asking for clarification and expert insight:

Leer más…

Saltarse el límite mensual de artículos leídos en Medium

Este artículo tiene la etiqueta Hacking, pero eso es muy pretencioso para los detalles reales. En fin.

Últimamente se está poniendo de moda Medium como plataforma de blogging. Sospecho que tiene que ver con que paguen a autores relevantes. Personalmente no me gusta por varios motivos:

  • Multitud de javascript y trackers.
  • No soporta sistemas de sindicación estándares como RSS. Si quieres enterarte de las novedades, tienes que entrar con frecuencia o suscribirte a su boletín por correo electrónico, proporcionándoles a cambio detalles personales con los que traficar.
  • Si no te registras, proporcionándoles detalles personales jugosos con los que traficar, estás limitado a leer solo un pequeño número de artículos mensuales.

Ni que decir tiene que no estoy ni suscrito a su boletín por correo electrónico ni estoy registrado. Por tanto es frecuente que me salga lo siguiente:

Leer más…

Bloqueo de direcciones XMPP con XEP-0191: Blocking Command

En Cleaning spurious presence subscription requests in Isode XMPP server y Código para limpiar peticiones de suscripción de presencia espurias en el servidor XMPP Isode describo una situación de spam aburrida pero insistente sobre mi dirección XMPP. Una vez solucionado el problema del bug del servidor Isode y la limpieza de las peticiones de suscripción de presencia espurias acumuladas, aún queda el problema del spam futuro.

La X en XMPP viene de eXtensible: Además del protocolo XMPP básico, se han definido y estandarizado numerosos XMPP Extension Protocols que amplían XMPP con nuevas funcionalidades. A la hora de bloquear el spam nos interesa XEP-0191: Blocking Command. Recomiendo leer el documento. Es claro y fácil de entender.

Modifiqué lo mínimo el código Python que describo en Código para limpiar peticiones de suscripción de presencia espurias en el servidor XMPP Isode para bloquear direcciones XMPP:

Leer más…

Bookmarklet para buscar una página en Wayback Machine

¿Cuántas veces te ha pasado que pulsas en un enlace o usas una entrada antigua de los marcadores de tu navegador y te encuentras con que esa página ya no existe?

Afortunadamente existe archive.org, una organización sin ánimo de lucro que se dedica, entre otras muchas cosas, a recorrer todo internet e ir guardando las páginas que se encuentra.

Si tenemos suerte y la web original permitía ser recorrida por procesos automáticos (conocidos como robots), es muy posible que archive.org la tenga no solo disponible, sino que podemos ver cómo era la página en diferentes fechas.

Repasando un marcador antiguo cualquiera en mi navegador, me encuentro con lo siguiente:

Leer más…

Código para limpiar peticiones de suscripción de presencia espurias en el servidor XMPP Isode

En Cleaning spurious presence subscription requests in Isode XMPP server describo una situación en la que el servidor XMPP Isode no limpia las peticiones de subscripción de presencia que vamos denegando. stpeter sugiere una solución. Casi cualquier cliente XMPP permitirá enviar stanzas XMPP de forma manual, pero durante el proceso de investigación del problema escribí bastante código.

A continuación listo y explico el código que utilicé para limpiar las peticiones de subscripción de presencia pendientes en un servidor Isode. El código se programó de forma iterativa, rápida y chapucera, lo justo para salir del paso:

Leer más…

Cleaning spurious presence subscription requests in Isode XMPP server

This is an old issue, but I would like to document it publically.

Presence subscription requests are regular business in XMPP world. The recipient can accept or deny the request. That is fine. In my case, something fishy was going on, since I had been receiving presence subscription requests that I could not "clean up" from the same addresses for months. There are two posibilities:

  1. The presence request origins keep trying and trying. The usual approach here would be for me to block those users. Good bye.
  2. A bug in the XMPP server. For some reason the presence subscription requests are not being cleared when I "deny" the requests.

After a few tests I was pretty sure I was suffering a bug of the XMPP server: blocking origins didn't work and I got new presence subscription requests -that I "dened"- every time I connected to the XMPP server, even in "rapid fire" mode.

If I am hitting a bug, how to proceed? Next step?

Leer más…

Ejecutar un "rol" concreto con Ansible

Hasta la versión 2.2 de Ansible, para ejecutar un rol concreto era necesario crear un nuevo playbook ad hoc. Es algo fácil, pero resulta una carga administrativa que no debería ser necesaria.

En las versiones modernas de Ansible disponemos de dos módulos nuevos interesantes: include_role en Ansible 2.2 e import_role en Ansible 2.4.

Para lanzar un rol determinado en una máquina o un grupo concreto del inventario, podemos hacer:

$ ansible -u root -m include_role -a name=ROL HOST

Esto ejecutará el rol ROL en la máquina HOST de nuestro inventario con privilegios de administrador o root.

Es muy útil combinar include_role con una configuración dinámica de inventario. Por ejemplo, recientemente he hecho algo similar a esto:

$ HOST="MÁQUINA1,MÁQUINA2,MÁQUINA3"; \
  for i in arranque zram ; do \
    ansible -u root -m include_role -a name=$i -i "$HOST," $HOST || break; \
  done

Esto lanzará los roles arranque y zram como administrador o root en las máquinas MÁQUINA1, MÁQUINA2 y MÁQUINA3. Estas máquinas no forman parte del inventario normal, se ha creado un inventario dinámico sobre la marcha. Ojo al uso de la coma final en el parámetro -i. Si ocurre algún error, el proceso se aborta.

Cómo actualizar una instalación Linux cuando no tenemos espacio libre en disco

En Backup doméstico seguro con Linux, cifrado y ZFS (VII): Volvemos a la tarjeta microSD original nos quedábamos usando una tarjeta microSD de 4 Gigabytes. Tras completar todo el proceso, le quedan unos 300 Megabytes de espacio libre.

Esa cantidad es suficiente para el día a día de esa máquina y para muchas actualizaciones del sistema operativo, pero una actualización completa del kernel de Linux necesita más de 400 Megabytes de espacio libre.

Hago los siguientes pasos para poder realizar una actualización pesada:

Leer más…

Disco RAM en Linux

Hace mucho que Linux (y otros sistemas operativos) permiten el empleo de discos RAM como espacio de trabajo no persistente de alta velocidad a costa de invertir en ellos memoria RAM.

No voy a describir por qué nos puede interesar un disco RAM y cuáles son sus inconvenientes. Para eso tenéis la página de la Wikipedia. La forma de trabajar con disco RAM en Linux ha ido cambiando también con el paso del tiempo; aquí voy a tratar la forma contemporánea. Antiguamente había que crear los discos RAM en la configuración de arranque de Linux, de forma estática. Afortunamente hemos superado eso.

Hoy en día hay dos maneras básicas de usar la memoria de un ordenador Linux como disco RAM:

  • Creando un dispositivo de bloques en memoria RAM, particionándolo y formateándolo para el uso que necesitemos. Este sistema tiene una mayor sobrecarga y es más inflexible, pero su ventaja fundamental es que Linux puede emplear ese dispositivo para cualquier uso válido de un dispositivo de bloques general. Por ejemplo, se puede usar como espacio de intercambio o swap.

    Algunos ejemplos de esta aproximación son ZRAM y ZSWAP. No los voy a tratar en este artículo.

  • Creamos un dispositivo disco RAM con semántica directa de sistema de ficheros. No simula un dispositivo de bloques sobre el que creamos un sistema de ficheros, sino que implementa el sistema de ficheros directamente en memoria RAM.

    Este enfoque es mucho más eficiente y práctico. Una ventaja clara es que cuando se borra un fichero del disco RAM se reduce el espacio ocupado. Naturalmente, este dispositivo solo sirve para almacenar ficheros, no simula ni se puede utilizar como un dispositivo de bloques.

Leer más…