Verwendung von SSH-Schlüsseln für die Authentifizierung in anderen Anwendungen?

8

Nehmen wir an, ich möchte das Authentifizierungsschema eines armen Mannes für einen einfachen Netzwerkdienst einrichten.

Ich möchte mich nicht mit der Authentifizierung mit Benutzername / Passwort herumärgern, der Einfachheit halber möchte ich nur eine Liste öffentlicher Schlüssel in meiner Anwendung haben und jeder, der nachweisen kann, dass er der Besitzer dieses Schlüssels ist, kann meinen Dienst nutzen.

Für die Zwecke meiner Anwendung würde dies den Authentifizierungsprozess erheblich vereinfachen, da sich alle meine Benutzer im lokalen Netzwerk befinden und sie alle Unix verwenden. Immer wenn ich einen neuen Benutzer an Bord habe, kann ich sie einfach nach ihrem öffentlichen ssh-Schlüssel fragen.

Gibt es eine einfache Möglichkeit, den Mechanismus, der bei der Authentifizierung mit ssh Public Key in einer nicht-ssh-Anwendung verwendet wird, wiederzuverwenden? Diese Frage soll sprachunabhängig sein.

    
Mike 09.08.2015, 16:07
quelle

3 Antworten

2

Wenn Sie nur eine Liste von Benutzern haben, die Ihre Anwendung verwenden können und Sie nicht sehen müssen, wer was getan hat.

Sie können Ihren Server so einrichten, dass er nur auf localhost (127.1) und nicht auf 0.0.0.0 hört und ein eingeschränktes sshd bereitstellt, das den Port weiterleitet, der für die Verbindung mit der Anwendung erforderlich ist

~/.ssh/authorized_keys liefert eine Liste der autorisierten Schlüssel, die verwendet werden können.

%Vor%

Für eine grundlegende Einrichtung und Hilfe bei der Konfiguration Ihres sshd, lesen Sie diese Antwort: Ссылка

Hinweis: Seien Sie gewarnt, dass jeder Benutzer vollen Shell-Zugriff auf Ihre Box hat, auf der sich der Computer befindet, wenn Sie ihn nicht sperren.

    
Luke Exton 17.08.2015, 23:42
quelle
2

Ein schmutziger Hack von der Spitze meines Kopfes: Könnten Sie die Anwendung so verpacken, dass sie einen tatsächlichen SSH-Tunnel von localhost zu Ihrem Server erstellt, und diesen für?

verwenden     
Alois Mahdal 18.08.2015 00:51
quelle
1

Angenommen, Sie sprechen von einer webbasierten Anwendung. Was Sie wirklich suchen, sind X.509-Client-Zertifikate (1.3.6.1.5.5.7.3.2). Dadurch können Sie einen Benutzer individuell für Ihre Anwendung identifizieren.

Diese haben die gleichen Probleme, mit denen man sich normalerweise bei der Schlüsselverteilung konfrontiert sieht. Das wird allgemein als ein schweres Problem angesehen.

Wenn Sie diesen Weg hier hinunter gehen wollten, müssen Sie das tun.

  • Erzeuge einmal ein Stammzertifikat
  • Richten Sie den Webserver mit den entsprechenden Modulen ein, um das Zertifikat zu analysieren (nginx / apache)
  • Erzeuge ein Zertifikat für jeden Benutzer (openssl)
  • Herunterladen des Zertifikats vom zentralisierten Server. (benutzen Sie vielleicht ihren ssh Pub Schlüssel hier)
  • Installieren Sie das x509-Zertifikat lokal (Betriebssystemabhängig)

Auf der Serverseite müssten Sie das Zertifikat als Teil des Webservers verarbeiten (nginx oder apache sollten dafür Module haben) und dann den Namen als Headerfeld an Ihre Anwendung übergeben, das Sie dann verarbeiten können intern.

Dies ist eine viel bessere Sicherheitslösung als Benutzernamen und Kennwörter, ist jedoch wegen des Schlüsselverteilungsproblems komplex. Die meisten Leute würden sich nicht darum kümmern, da es in den meisten Anwendungen einfach ist, Logins mit LDAP oder Radius zu integrieren.

    
Luke Exton 17.08.2015 23:36
quelle

Tags und Links