Información blog

Linux, tutoriales, noticias, sistemas, redes y seguridad informática, entre otras cosas.

viernes, 25 de septiembre de 2015

Entendiendo el ssh fingerprint

Más de una vez he hablado de las bondades que ofrece ssh; de sus virtudes y sus ventajas con respecto a su antecesor, telnet. Sí, ssh es considerado como un protocolo seguro, pero no por ello es infalible y siempre hay formas de intentar pillarnos desprevenidos y hacernos cometer errores garrafales.

Es por ello que para evitarnos posibles disgustos, vengo a hablaros de uno de los recursos que todo aquel que se ha conectado por ssh desde la consola o desde putty, ha llegado ver; si bien probablemente lo ha ignorado (ya sea por prisas o desconocimiento). Para poneros en situación; imaginemos que una persona nos ha pedido que le echemos un vistazo a un equipo que tiene en red... Al querer tener el máximo control posible hemos entrado por ssh mediante la herramienta putty... ¿A quien no le ha salido siempre un mensaje como éste?


Normalmente los usuarios suelen hacer lo mismo que con los términos y condiciones... Es decir, pulsar sí y punto, sin fijarse siquiera en lo que la pantalla muestra... En este caso el mensaje no es perjudicial para nosotros; o al menos no lo es en un principio, si bien nos muestra información que no es recomendable pasar por algo, ya que muestra nada más y nada menos que la "huella dactilar" de la clave rsa del servidor al que nos conectamos. Dicha clave es única, con lo que podría decirse que ningún otro equipo en el mundo entero debería tener ésta. Evidentemente dicha huella puede ser consultada en el propio equipo con facilidad... Para ello únicamente sería necesario consultar el archivo ssh_host_rsa_key.pub (ossh_host_ecdsa_key.pub dependiendo del tipo de conexión realizada), alojado en el directorio /etc/ssh/. Si hiciésemos una consulta "plana", del fichero, es decir, si hiciésemos un simple cat sobre el fichero, nos aparecería un galimatías ilegible parecido al mostrado a continuación:

  1. root@debian:/etc/ssh# cat ssh_host_rsa_key.pub
  2. ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4AWN3rg19Z5r0GFAs20UzdFNCPU+RjEfsB9rNsPw/drxoiPOyE6rEQsvQB9wuSOR8hmBr3ac9u+7nqgyW48tQYUV8zc7tmhOPMSV0G4Xfnp0Auk1gyNGEJNcsAPoDCFRInCoWuhKe/P/rGamaJpsxDb8UeizMUKAHNu9M3srbu/Yz09Pn1J15E/8hT8/MdFcdDnQIbRUJOsFc4uDYQcsalik/1Bnpnxp3/ILTr7q+ZlIij5VFoizfXXL9fzOUgUYAm9aWMu4I8puCcZ9ckWZyMeAly5uo3xcfUTaUCCa8QOq6JxzdTK8tl6Ddi6vDj1c8ZDk01raCcQf/ULbjkfej root@debian

Esta marabunta de caracteres no nos es de utilidad alguna, es por ello que habría que recurrir a una utilidad especialmente designada para este tipo de propósitos; utilidad que está instalada por defecto en el sistema: ssh-keygen. Esta utilidad nos ayudará a leer el contenido del fichero de forma mucho más legible... Para ello habría que recurrir al comando ssh-keygen, seguido de los parámetro -l y -f; junto con el nombre del fichero cuya "huella" deseamos observar. La salida del comando en cuestión nos mostraría la huella de la clave rsa:

  1. root@debian:/etc/ssh# ssh-keygen -l -f ssh_host_rsa_key.pub
  2. 2048 d8:70:02:60:85:a6:e0:2e:17:f9:12:aa:36:02:14:e4  root@debian (RSA)

¿Os suena dicha clave? Así es, es la misma que la mostrada en la pantalla cuando nos hemos intentando conectar por ssh al otro equipo...  Ahora bien: ¿Para qué nos puede servir este concepto? El objetivo del mensaje mostrado en pantalla cuando nos conectamos a equipo "desconocido" es informarnos y verificarnos que nos estamos intentando conectar a un equipo cuya huella dactilar de la clave es la que muestra en pantalla. Es por ello que es importante saber que el destino al que nos intentamos conectar posee EXACTAMENTE el mismo fingerprint que el mostrado en nuestra pantalla, ya que sino podríamos estar conectandonos a otro equipo... Dicha conexión puede ser accidental (debido a una mala gestión de la red) o debido a un ataque de Man In the Middle (MiM), con lo que en caso de no coincidir con el fingerprint que debería ser, habría que preocuparse y ver si nuestra seguridad se ha visto comprometida antes de decidir conectarnos a la máquina objetivo. Es decir que este recurso puede servirnos como medida de protección contra ataques de MiM, siempre y cuando prestemos atención al mensaje que nos muestra la pantalla al establecer una conexión ssh.

Todas las claves se almacenan dentro de un fichero especial que varía dependiendo de la herramienta usada o el sistema operativo desde el que hemos realizado la conexión. Por ejemplo, si quisiésemos consultar las conexiones ssh realizadas con el usuario root desde Linux, habría que dirigirse a la carpeta home del usuario con el que nos hemos conectado (en este caso root). Dentro del directorio personal existe un subdirectorio oculto denominado .ssh donde se almacenan los hosts que el usuario "conoce". Dicho conocimiento se alberga dentro de un fichero denominado known_hosts (dentro de la carpeta .ssh)  y es consultado de la misma forma que el fingerprint de las claves almacenadas en /etc/ssh/; es decir que se consultaría así:

ssh-keygen -l -f /root/.ssh/known_hosts

Si deseásemos limpiar algún host de dicho fichero bastaría con eliminar la línea correspondiente o simplemente eliminando todo el contenido del fichero.

En Windows el proceso varía, ya que para empezar se necesita usar sí o sí la herramienta putty, herramienta que guarda los hosts dentro de una lista que se encuentra dentro del registro de Windows. Para acceder a dicha lista habría que escribir en el buscador de programas y archivos la palabra regedit. Dicho comando nos llevaría directamente al registro del sistema, en el cual habría que acceder a esta ruta:

HKEY_CURRENT_USER-->Software-->SimonTatham-->PuTTY -->SshHostKeys

Dentro de dicha ruta veríamos un listado en el cual podríamos consultar, modificar y eliminar los fingerprint a nuestro gusto.

Como podemos ver, el mantener bajo vigilancia nuestros fingerprints es relativamente sencillo y nos hace concluir que, si nos aparece el mensaje de un nuevo fingerprint cuando nos conectamos a un sitio al que accedemos habitualmente... Hay que sospechar...

Espero que os resulte útil.

Saludos.

No hay comentarios :

Publicar un comentario