Tres horas hasta Sanlúcar, dos servicios y una conversación a media voz con la vecina sobre por qué insistía en acompañarme (yo quería que se quedara; ella, con razón, me recordó que la última vez que se había quedado esperando había acabado en una sala de lavado de cerebro).
En el coche, antes de salir, había montado la VPN. Necesitábamos un canal donde Linares, yo y un par de colegas pudiéramos hablar sin que los bp, si aún tenían oídos en la red, nos escucharan. Wireguard es el protocolo más limpio que ha inventado la humanidad: unas claves Curve25519, un endpoint, unos AllowedIPs, y a correr.
# apt-get install wireguard qrencode -y
# wg genkey | tee privkey | wg pubkey > pubkey
Para el servidor, un VPS de 3€ al mes en un proveedor que no me leerá esto:
# /etc/wireguard/wg0.conf (servidor)
[Interface]
Address = 10.77.0.1/24
ListenPort = 51820
PrivateKey = SRV_PRIVKEY
[Peer] # Linux (yo)
PublicKey = JORGE_PUBKEY
AllowedIPs = 10.77.0.2/32
[Peer] # Linares
PublicKey = LINARES_PUBKEY
AllowedIPs = 10.77.0.3/32
[Peer] # Vecina
PublicKey = VECINA_PUBKEY
AllowedIPs = 10.77.0.4/32
Cada uno de nosotros con su perfil:
# /etc/wireguard/wg0.conf (cliente)
[Interface]
Address = 10.77.0.2/24
PrivateKey = MI_PRIVKEY
[Peer]
PublicKey = SRV_PUBKEY
Endpoint = 185.x.x.x:51820
AllowedIPs = 10.77.0.0/24
PersistentKeepalive = 25
Arrancar es una línea:
# wg-quick up wg0
# wg show
interface: wg0
peer: SRV_PUBKEY
endpoint: 185.x.x.x:51820
latest handshake: 3 seconds ago
transfer: 42 KiB received, 18 KiB sent
El QR para Linares (que se lo instalé en un Android prestado) lo generé con qrencode en la terminal:
# qrencode -t ansiutf8 < /etc/wireguard/linares.conf
Se le iluminaron los ojos como a un niño con un Game Boy. La tecnología nueva les gusta a los policías viejos.
Llegamos a Sanlúcar a las 2:15 am. El puerto a esa hora es una red de luces de sodio y silencio. Linares tenía dos agentes con chaleco y un remolcador de la Capitanía que nos acercaba a El Forkado sin ruido, vela apagada. A las 3:00 estábamos a 20 metros del barco. A las 3:27 subíamos por popa, tres personas, guiados por el plano del dump de memoria: cabina del capitán, debajo del mapa, cajón rojo.
Vargas dormía en el camarote 2, babor, según le habíamos sonsacado con tcpdump a su móvil vía wifi del puerto (confirmado por latencia entre paquetes). Dos hombres suyos, de guardia, mal: vinieron los agentes de Linares por un flanco y con un nmap... perdón, con un par de esposas, los pusieron a dormir antes de sonar una alarma.
En la cabina del capitán, bajo el mapa (un mapa de navegación cubierto de café), había un cajón rojo. Cerrado. Con una pegatina manuscrita: GNU/Linux, para ser más exactos. Me sonreí. La contraseña del cajón era literalmente eso: un candado de letras mecánicas. Diez clics. Abierto.
Dentro: un ordenador portátil ThinkPad X230, encendido, sesión abierta, tmux con cuatro ventanas, una con nessusd corriendo, otra con un irc oculto, otra con htop, y una cuarta con un README.txt titilando. Bajo el portátil, un sobre cerrado, con mi nombre y letra conocida.
La vecina abrió el sobre. Lo leyó en silencio. Me lo pasó.
# .(punto)Antúnez
# read-me, en serio, leeme
nessusd esta ya lanzado en localhost:8834.
Conectate con admin/root (por no variar).
la red del barco: 10.13.13.0/24
Vargas: 10.13.13.100
Cabeza del pulpo: 10.13.13.200
hay un usuario "vargas" en la ThinkPad,
en /home/vargas/.ssh/authorized_keys dejo
mi clave. eso es mi firma.
cuando termineis, corred "git log" en
/opt/bp/repo. hay cosas que contar.
estare haciendo CTRL+Z y bg hasta que me
volvais a llamar con fg.
.(punto)
Linares me miró. Asentí. Se llevó a Vargas esposado, todavía en pijama, tirándole del brazo con una suavidad que nunca antes había visto en un policía. Yo abrí nessus en la ThinkPad y con la vecina — sí, con la vecina, que ya estaba casi lista para leer informes de nessus — escaneamos 10.13.13.0/24, matamos los dos últimos servicios bp que quedaban en un segundo armario del barco, y desconectamos. En treinta minutos El Forkado dejó de ser nada.
Nos quedaba una cosa: git log en /opt/bp/repo. Y una promesa a Templix. Pero eso tocaba al amanecer, en la pensión.