GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

SSH-Schlüsselverwaltung mit privacyIDEA


von weinstock @ pixabay

In diesem Tutorial werde ich zeigen, wie Sie Ihre SSH-Schlüssel für alle Ihre Server und verschiedene Benutzerkonten verwalten können. Dies ist wichtig, wenn Sie mehr als einen SSH-Schlüssel haben, und es ist noch wichtiger, wenn Sie für viele verschiedene Benutzer mit unterschiedlichen SSH-Schlüsseln verantwortlich sind. Wissen Sie noch, wessen Schlüssel sich auf welchen Servern befinden? Was werden Sie tun, wenn Sie die Schlüssel des Benutzers widerrufen müssen?

Wir werden privacyIDEA als System zur Verwaltung der SSH-Schlüssel verwenden. Ursprünglich ist privacyIDEA ein System zur Verwaltung von One Time Password Tokens. Vor einiger Zeit wurde es jedoch um ein neues Konzept erweitert, sodass es zur Verwaltung vieler verschiedener Arten von Authentifizierungselementen verwendet werden kann - in diesem Fall SSH-Schlüssel. (Darüber habe ich auf der deutschen Konferenz OpenRheinRuhr einen Vortrag gehalten).

Voraussetzungen

Ich gehe davon aus, dass Sie ein privacyIDEA-System installiert und Ihre Benutzerdatenbank angebunden haben. Sie können dies ganz einfach tun, indem Sie diesem Tutorial folgen, das Ihnen ein Appliance-ähnliches System auf Basis von Ubuntu LTS bietet.

Was wir jetzt tun werden, ist

  1. SSH-Schlüssel für die Benutzer hochladen
  2. konfiguriere, welcher SSH-Key auf welchem ​​SSH-Server verwendet werden darf
  3. und schließlich die SSH-Konfiguration auf den SSH-Servern anpassen, sodass die von privacyIDEA verwalteten SSH-Schlüssel zur Authentifizierung auf dem SSH-Server verwendet werden.

SSH-Schlüssel hochladen

Zuerst müssen wir die SSH-Schlüssel der Benutzer hochladen.

Hinweis: Wir müssen nur den öffentlichen SSH-Schlüssel hochladen. Laden Sie niemals einen privaten Schlüssel hoch!

Beim Hochladen eines SSH-Schlüssels ein neues Token-Objekt vom Typ SSH-Schlüssel geschaffen. Momentan kann nur der Administrator den SSH-Schlüssel eines Benutzers hochladen. Der Administrator muss sich anmelden und den entsprechenden Benutzer auswählen.

Klicken Sie dann auf die Schaltfläche Anmelden und wählen Sie den Typ SSH-Token aus und kopieren Sie den öffentlichen SSH-Schlüssel und fügen Sie ihn ein.

Die Beschreibung des Tokens wird automatisch mit dem Kommentar des SSH-Schlüssels ausgefüllt.

Nun können Sie zum Token wechseln view und Sie können den neu erstellten Token vom Typ sshkey sehen

SSH-Schlüssel dem SSH-Server zuweisen

Die Idee, Tokens für bestimmte Maschinen zu verwenden, wurde ursprünglich auf github und auch in der Online-Dokumentation beschrieben.

Sie müssen festlegen, welcher Token sich bei welcher Anwendung auf welcher Maschine authentifizieren darf. (Auf diese Weise ist auch eine Offline-Authentifizierung mit LUKS möglich) Dies kann in den Maschinen erfolgen ansehen.

In privacyIDEA 1.5 müssen Sie auch die Maschine (den SSH-Server) mit der IP-Adresse definieren. Dies wird sich in privacyIDEA 2.x ändern.

Auf diese Weise erstellen wir eine Maschinendefinition, die besagt, dass der ssh-Token SSHK00018FD9 verwendet werden darf, um sich per SSH auf dem Server 172.16.200.1 anzumelden. Wenn der Optionsschlüssel leer gelassen wird, kann dieser SSH-Token verwendet werden, um sich als Benutzer root anzumelden. Sie können auch eine Option "Benutzer" mit dem Benutzernamen als Wert eingeben, um sich als anderer Benutzer anmelden zu können.

SSH-Server einrichten

Nun muss der SSH-Server wissen, dass der Schlüssel, der zentral in privacyIDEA definiert wurde, zum Login über SSH verwendet werden darf. Es gibt zwei alternative Möglichkeiten, dies zu erreichen.

Wir können Saltstack verwenden, um die SSH-Schlüssel an alle SSH-Server zu verteilen. Dazu müssen wir Saltstack einrichten und ausführen, was uns einen gewissen Overhead beschert. Deshalb wählen wir in diesem Tutorial die zweite Alternative.

Die zweite Alternative verwendet den SSH-Konfigurationsschlüssel AuthorizedKeysCommand . Dies kann in /etc/ssh/sshd_config verwendet werden um einen Befehl zu definieren, der jedes Mal ausgeführt wird, wenn jemand versucht, sich über SSH anzumelden. Ein solcher Befehl muss den Benutzernamen als Parameter annehmen und eine Liste der erlaubten SSH-Schlüssel zurückgeben.

Dazu verwenden wir den Befehl privacyidea-authorizedkeys die mit dem privacyidea Admin-Client geliefert wird. Sie müssen also den privacyidea Admin-Client auf jedem Ihrer SSH-Server installieren. Sie können dies mit dem vorgefertigten Ubuntu-Paket von Launchpad oder dem Python-Paket aus dem Python-Paketindex tun.

Um den Privacyidea-Admin-Client in Ihrem Hauptsystem zu installieren, führen Sie Folgendes aus:

pip install privacyideaadm

privacyidea-autorisierte Schlüssel darf außer dem Benutzernamen keine weiteren Parameter annehmen. Aus diesem Grund müssen Sie eine Konfigurationsdatei /etc/privacyidea/authorizedkeyscommand erstellen das sieht so aus:

[Default]
url = https://your.privacyidea.server
admin = low_rights_admin
adminrealm = admin_realm
password = secret

Bitte achten Sie darauf, die Zugriffsrechte auf diese Datei einzuschränken. In einer produktiven Umgebung sollten Sie außerdem sicherstellen, dass der in dieser Konfigurationsdatei erwähnte Token-Administrator keine zusätzlichen Aufgaben wie das Löschen oder Erstellen von Token ausführen darf.

Wenn alles korrekt eingerichtet ist, sollten Sie laufen können

privacyidea-authorizedkeys root

...und Sie sollten den öffentlichen ssh-Schlüssel sehen, den Sie auf privacyIDEA hochgeladen haben.

Schließlich müssen Sie den SSH-Daemin neu konfigurieren und neu starten. Ihre /etc/ssh/sshd_config sollte einen Abschnitt haben, der so aussieht:

AuthorizedKeysCommand /usr/bin/privacyidea-authorizedkeys
# You also should run the command with lower privileges.
# The low_priv_user needs to have read access to /etc/privacyidea/authorizedkeyscommand.
# AuthorizedKeysCommandUser low_priv_user

Authentifizieren!

Nach dem Neustart des SSH-Daemons sollten Sie sich mit dem hochgeladenen SSH-Schlüssel über SSH anmelden können. Sobald Sie den SSH-Token entweder löschen oder sogar den SSH-Token in privacyIDEA deaktivieren, kann sich der Benutzer nicht mehr mit diesem SSH-Schlüssel anmelden.

Auf diese Weise haben Sie die volle Kontrolle über alle Schlüssel aller Ihrer Benutzer. Sie können einen SSH-Schlüssel an einem zentralen Punkt deaktivieren und ein Benutzer kann sich nicht mehr bei einem SSH-Server anmelden.


Ubuntu
  1. SSH – Generieren und Arbeiten mit SSH-Schlüsseln

  2. Ssh – Erhalten Sie immer noch eine Passwortabfrage mit Ssh mit Authentifizierung mit öffentlichem Schlüssel?

  3. Wie verwendet man Ssh-Copy-ID mit Multiple-Hop-SSH-Tunnel?

  4. Erste Schritte mit SSH unter Linux

  5. Generieren Sie ein SSH-Paar mit AES-256-CBC

So richten Sie SSH-Schlüssel unter Ubuntu 20.04 ein

Ubuntu-Paketverwaltung mit apt

So verwenden Sie einen SSH-Schlüssel mit Nicht-Root-Benutzern

Generieren Sie RSA-Schlüssel mit SSH mithilfe von PuTTYgen

Melden Sie sich mit einem privaten SSH-Schlüssel auf einem Windows-Client bei einem Linux-Server an

Melden Sie sich unter Linux und macOS mit einem privaten SSH-Schlüssel an