9 Punkte von GN⁺ 2024-03-25 | 1 Kommentare | Auf WhatsApp teilen
  • tinysshd ist ein minimalistischer SSH-Server, der nur einen Teil der SSHv2-Funktionen implementiert
  • Unterstützt mindestens 128-Bit-Sicherheit und nur sichere Kryptografie, die gegen Cache-Timing-Angriffe ausgelegt ist
  • Veraltete Kryptografie wie RSA, DSA, HMAC-MD5, HMAC-SHA1, 3DES und RC4 wird nicht implementiert
  • Unsichere Funktionen wie Passwort- oder hostbasierte Authentifizierung werden nicht implementiert
  • Funktionen wie das SSH1-Protokoll, Komprimierung, Port-Forwarding, Agent-Forwarding und X11-Forwarding werden ebenfalls nicht angeboten
  • Verwendet keine dynamische Speicherzuweisung, daher gibt es keine Probleme wie Allokationsfehler

Kryptografische Primitive

  • Moderne Kryptografie: ssh-ed25519, curve25519-sha256, chacha20-poly1305@openssh.com
  • Frühere Standards (in Version 20190101 entfernt): ecdsa-sha2-nistp256, ecdh-sha2-nistp256, aes256-ctr, hmac-sha2-256
  • Gegen Quantencomputer ausgelegte Kryptografie: sntrup761x25519-sha512@openssh.com, chacha20-poly1305@openssh.com

Projekt-Zeitleiste

  • Experimentelle Phase (2014): Diente experimentellen Zwecken
  • Alpha-Phase (2015–2017): Nicht für Produktionsumgebungen geeignet, aber für Tests vorbereitet
  • Beta-Phase (seit 2018 bis heute): Für den Produktionseinsatz geeignet
  • Stabilisierungsphase: Wird voraussichtlich für Produktionsumgebungen geeignet sein, einschließlich gegen Quantencomputer ausgelegter Kryptografie

Aktuelles Release (20240101)

  • Der Code besteht aus 63899 Wörtern.
  • Befindet sich im Beta-Release-Status.

Ausführung

  • TCPSERVER: tcpserver -HRDl0 0.0.0.0 22 /usr/sbin/tinysshd -v /etc/tinyssh/sshkeydir &
  • BUSYBOX: busybox tcpsvd 0 22 tinysshd -v /etc/tinyssh/sshkeydir &
  • INETD: In der Datei /etc/inetd.conf ssh stream tcp nowait root /usr/sbin/tinysshd tinysshd -l -v /etc/tinyssh/sshkeydir hinzufügen
  • SYSTEMD: Dienst über die Dateien tinysshd.socket und tinysshd@.service konfigurieren und starten

Meinung von GN⁺

  • tinysshd ist ein SSH-Server mit minimalem Funktionsumfang, dessen auf Sicherheit fokussiertes Design hervorsticht. Das bringt den Vorteil mit sich, dass er durch den Verzicht auf überflüssige Funktionen leichtgewichtig ist und wahrscheinlich weniger Sicherheitslücken aufweist.
  • Da SSH-Server ein Kernelement der Netzwerksicherheit sind, kann ein minimalistischer Ansatz wie bei tinysshd besonders in sicherheitskritischen Umgebungen nützlich sein.
  • Für einige Nutzer kann jedoch das Fehlen fortgeschrittener Funktionen wie Port-Forwarding oder X11-Forwarding ein Nachteil sein.
  • Die Unterstützung von gegen Quantencomputer ausgelegter Kryptografie ist ein zukunftsorientierter Ansatz und spiegelt das anhaltende Interesse an Sicherheit und kontinuierlichen Updates wider.
  • Ein anderes Open-Source-Projekt mit ähnlicher Funktionalität ist OpenSSH; es bietet mehr Funktionen, ist dafür aber komplexer und bringt mehr sicherheitsrelevante Aspekte mit sich, die verwaltet werden müssen.
  • Bei der Einführung von tinysshd sollte geprüft werden, ob die funktionalen Einschränkungen zu den Anforderungen des Projekts passen; die Vorteile liegen in Einfachheit und erhöhter Sicherheit, der Nachteil im Fehlen einiger fortgeschrittener Funktionen.

1 Kommentare

 
GN⁺ 2024-03-25
Hacker-News-Kommentare
  • Anwendungsfälle für TinySSH:

    • Wird verwendet, um während des Linux-Bootvorgangs verschlüsselte Laufwerke remote zu entsperren.
    • Einsatz auf einem headless NAS-Server mit dm-crypt/LUKS und ZFS.
    • Bei Kernel-/ZFS-Updates wird der Server remote neu gestartet, und über TinySSH wird auf die Abfrage des Verschlüsselungsschlüssels zugegriffen, um die Laufwerke zu entsperren.
    • Wenn TinySSH beendet wird, erfolgt sofort ein Logout aus der SSH-Sitzung; verbindet man sich einige Sekunden später erneut per SSH, hat man Zugriff auf das vollständig gebootete System.
  • Links zu TinySSH:

    • Der Zugriff ist derzeit wegen des Slashdot-Effekts schwierig.
    • Die TinySSH-Seite ist über das Webarchiv einsehbar.
  • Meinung zum Codeumfang von TinySSH:

    • Es ist witzig, den Codeumfang in „Wörtern“ anzugeben.
    • Üblicherweise werben sicherheitskritische Repositories mit „X Zeilen Code“, aber die Angabe in „Wörtern“ ist ungewöhnlich.
  • Unterstützungsumfang von TinySSH:

    • Schade, dass ed25519-sk nicht unterstützt wird.
    • Ansonsten wirkt es sehr vielversprechend.
  • Auditierbarkeit von TinySSH:

    • Es wird infrage gestellt, ob sich 100.000 Wörter Code wirklich leicht auditieren lassen.
  • Frage nach den Unterschieden zwischen TinySSH und Dropbear SSH.

  • Meinung zu einem Ersatz für OpenSSH:

    • OpenSSH wird von sehr vielen Menschen genutzt und ist über lange Zeit geprüft worden, was es sehr stabil macht.
    • OpenSSH stammt aus dem OpenBSD-Umfeld, wo beim Schreiben von Sicherheitscode mit großer Sorgfalt vorgegangen wird.
    • Statt OpenSSH zu ersetzen, wäre es besser, auf schlüsselbasierte Authentifizierung umzusteigen und OpenSSH mit einigen einfachen Konfigurationsänderungen weiter zu härten, darunter Konfigurationsideen von Mozilla.
  • Lob für die Arbeit des TinySSH-Entwicklers:

    • Neben TinySSH entwickelt er auch verschiedene andere kleine Netzwerk-Utilities und Server.
    • Diese Arbeiten wirken so, als wolle der Entwickler Dinge wirklich „bauen“ und dabei verstehen.
  • Sicherheitsfunktionen von TinySSH:

    • TinySSH implementiert keine unsicheren Funktionen wie Passwort- oder hostbasierte Authentifizierung.
    • Frage, wie man auf gemeinsam genutzten Geräten private Schlüssel registrieren sollte.