Admin Libre - Administración de sistemas y redes

Como obtener las huellas SSH de un servidor de forma segura con registros SSHFP
Por Francisco Gaitán el 24 de Septiembre de 2023

El RFC 4255 define un método de verificación de las llaves SSH de un host usando DNSSEC el cual consiste en publicar en el DNS las huellas SSH del servidor de forma que al usar la opción VerifyHostKeyDNS con ssh(1) se comprueba la autenticidad del mismo.

Basándome en esta idea de Solène Rapenne he elaborado este script que hace lo siguiente:

  1. Se conecta con verificación DNS al servidor especificado y guarda allí las huellas SSH
  2. Se vuelve a conectar con verificación DNS para traer dichas huellas
  3. Añade dichas huellas al archivo ~/.ssh/known_hosts
#!/bin/sh
if [ "$#" -ne 1 ] ; then
   echo "Usage: $0 FQDN" >&2
   exit 1
fi
ssh -o VerifyHostKeyDNS=yes $1 "ssh-keyscan localhost 2>/dev/null | sed "s/^localhost/$1/" > /tmp/$1-sshfp.txt"
scp -o VerifyHostKeyDNS=yes $1:/tmp/$1-sshfp.txt /tmp/$1-sshfp.txt
ssh -o VerifyHostKeyDNS=yes $1 "rm /tmp/$1-sshfp.txt"
cat /tmp/$1-sshfp.txt >> ~/.ssh/known_hosts
rm /tmp/$1-sshfp.txt

De esta forma la próxima vez que conectes al servidor no será necesaria la verificación por DNS ya que ahora tienes la huella guardada de forma local.

Cómo obtener dichos registros para incluirlos en el DNS

Es importante el . al final para la zona DNS ya que sino añadirá $ORIGIN al final de cada nombre de host.

ssh-keygen -r foo.example.com. 
foo.example.com. IN SSHFP 1 1 523877f688e2d570f016887ede167ca0479592d3
foo.example.com. IN SSHFP 1 2 03dfa8b0d055ea200aba7f895b658251fe084e9a05fa1a7ea712771133ce9a81
foo.example.com. IN SSHFP 3 1 93143a5d5f76fc207a554e5b51d13c96264915ff
foo.example.com. IN SSHFP 3 2 02f911af353310cc48eea0917cc5f1f3e27009bccb2a9450b092cf9c07805e8d
foo.example.com. IN SSHFP 4 1 72f91a10fc05342a7f382d1845b3ce825466dc5c
foo.example.com. IN SSHFP 4 2 26946db64dbdbf72ae7901a5cf5bc440586fc6fa19efd167a98122c1cfae516a

Destacado

Contacto

Si has encontrado algún error o quieres comentarme algo mándame un correo a webmaster@adminlibre.org