Idea: SSHFP Validator

The usage of the SSHFP resource record helps admins to authenticate the SSH server before they expose their credentials or before a man-in-the-middle attack occurs. This is only one great extension of DNSSEC (besides DANE whose TLSA records can be used to authenticate HTTPS/SMTPS servers).

While there are some great online tools for checking the mere DNS (1, 2), the correct DNSSEC signing (3, 4), or the placement of TLSA resource records for DANE (5, 6, 7), I have not found an online SSHFP validator. That’s the idea:

This blogpost is part of a series about DNSSEC. Refer to this list for all articles.

Well, you already got it: We need a webpage that connects to an SSH server to see the public key, while it verifies the SSHFP resource records via DNSSEC. A simple green checkmark should be displayed if the SSHFP is the same as the presented public key.

SSHFP Validator

Here are some ideas how to display more details:

  • Of course, use IPv6 and legacy IP to connect to the server.
  • Display the public key for all used algorithms (RSA, DSA, ECDSA, Ed25519, which requires to connect via all of these algorithms)
  • and the fingerprints for all of them in MD5-hex and SHA256-base64 (this is how OpenSSH displays fingerprints)
  • as well as SHA1-hex and SHA256-hex (this is how SSHFP RRs are used).
  • Verify the DNSSEC signature (AD flag).
  • [Optional] Display the latency and traceroute path so the SSH server.

Since the domain sshfp.net was free, I grabbed it immediately because to my mind this gives a good domain for such an SSHFP validator. ;) And, of course, security must be considered when implementing this script. Proper sanitization must be used, etc.

Master Thesis

Anyone interested in implementing such an online tool? If you are a student and searching for a thesis, please contact me.

Featured image “Lucky Nummer” by Daniele Civello is licensed under CC BY-NC 2.0.

3 thoughts on “Idea: SSHFP Validator

    1. Jein, ich bin mir da nicht so sicher. Es müsste schon etwas an Eigenleistung reingesteckt werden. Je nach dem welcher Kenntnisstand über IP, DNS, DNSSEC und SSH vorhanden ist, kann es also dauern, bis überhaupt der komplette Inhalt kapiert wurde. ;)
      [Ich hatte dieses Jahr zwei Masterarbeiten in einem internationalen Studiengang betreut und war überrascht, wie lange die Jungs gebraucht haben, um sich überhaupt in die Basics einzuarbeiten. Daher bin ich da gerade etwas pessimistischer.]
      Aber ja, für jemanden der aus der Materie kommt wäre es wohl kein Problem, das herunter zu tippen…

  1. Ob das nun unbedingt ein Online-Validator sein muss oder erst mal ein nettes python script, sei mal dahin gestellt. Die meisten SSH-Server sind ja doch durch FW/ALCs geschützt und Validator, der irgendwo im Internet seht müsste access haben.
    Der grösste Aufwand wird vermutlich darin die Konvertierung der unterschiedlichen Key Notationen vorzunehmen (wie Du ja schon einem anderen Artikel beschrieben hast), vielleicht sollte man sich hier mal von dem code in openssh inspirieren lassen, die machen das ja schon. Oder man benutzt gleich den openssh client als validator und muss sich dann gar nicht mehr kümmern.

Leave a Reply

Your email address will not be published. Required fields are marked *