YubiKey 10 – Öffentlichen GPG-Schlüssel auf Linux-Server übertragen und für passwortlose Anmeldung nutzen

Die Anmledung an einem Linux-Server ist mit einem YubiKey ohne die Eingabe eines Passworts möglich. Die Administration wird damit erheblich erleichtert und die Sicherheit erhöht.

Ich nutze diese Art der Anmeldung seit ich einen YubiKey habe. Der Komfort ist einfach super. Bei der Anmeldung ist kein Passwort mehr einzugeben, sondern es ist lediglich der am PC angeschlossene YubiKey erforderlich.


SSH-Anmeldung nur für definierte Gruppe erlauben

SSH-Zugriff nur noch mir YubiKey erlauben

Einen neuen Benutzer anlegen mit Recht für SSH-Zugriff

Benutzer deaktivieren oder löschen

Passworteingabe zum Ausführen von sudo-Befehlen deaktivieren


Was ihr dafür benötigt sind lediglich euer exportierter öffentlicher Schlüssel und einen Admin-Zugang zum Server.

Euren öffentlichen Schlüssel müsst ihr in die Datei „~/.ssh/authorized_keys“ schreiben und schützen.

Anschließend ist die Datei „/etc/ssh/sshd_config“ noch ein wenig anzupassen.

In die schreibt bzw. kopiert ihr einfach euren öffentlichen Schüssel in eine neue Zeile, gerne mit einem Kommentar für eine bessere Zuordnung.
Kommentare werden am Zeilenanfang mit einem # begonnen.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDPFbvbwFIjSxU6o7lgr7xEaEbmKARa/1JaqzsMU1WLh/i519VQn/BN1BVHMTjxw2I/hNwG7YGpBUuhxAdiK53l/M...........

Ein paar hilfreiche Einstellungen, die die Administration der Linux-Server im Umgang mit SSH und einem YubiKey etwas erleichtern möchte ich hier noch kurz aufzeigen.

SSH-Anmeldung nur für definierte Gruppe erlauben

Die Anmeldung mit SSH lässt sich auf eine definierte Gruppe einschränken. Das ist sinnvoll, wenn viele Benutzer auf einem System angelegt sind und man den Zugriff auf das Terminal einschränken möchte, z.B. nur auf die Administratoren.

Zu diesem Zweck legen wir eine neue Gruppe für den SSH-Zugriff an

sudo groupadd -r sshadmin

Die bereits angelegten Benutzer auf dem Linux-System lassen sich mit dem Befehl der Gruppe hinzufügen.

sudo usermod -a -G sshadmin BENUTZERNAME

Damit auch wirklich nur diese Gruppe eine SSH-Sitzung starten darf, muss das in der „/etc/ssh/sshd_config“ mitgeteilt werden.

Tragt dazu in der Datei die folgende Zeile ein:

sudo nano /etc/ssh/sshd_config

#Laesst nur Mitglieder der Gruppe "sshadmin" eine SSH-Verbindung herstellen
AllowGroups sshadmin

Speichert die Änderung und startet den SSH-Daemon neu.

sudo systemctl restart sshd.service

ACHTUNG, ab diesen Zeitpunkt ist der Zugriff per SSH auch wirklich nur noch für die Mitglieder der Gruppe erlaubt. Alle anderen werden abgewiesen!


Gib mir gerne einen Kaffee ☕ aus!

Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕ ausgeben.

PayPal Logo


liberapay.com/strobelstefan.org


Kaffee via Bitcoin

bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj


SSH-Zugriff nur noch mir YubiKey erlauben

Damit nur noch die Anmeldung mit einem Schlüsselpaar erlaubt ist, sind noch ein paar Einträge in der „/etc/ssh/sshd_config“ zu erstellen.

!Die unten gezeigt „sshd_config“ erhebt keinen Anspruch auf Vollständigkeit. Prüft selbst noch einmal die Einträge, bevor ihr die Datei auf einem Systemn verwendet!

Arbeitet zur Sicherheit mit einer offenen SSH-Sitzung, die ihr nicht schließt.
Diese aktive Sitzung ist normalerweise von einem Neustart des SSH-Daemons nicht betroffen.

###
# UsePAM
###
# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.

UsePAM yes



###
# ChallengeResponseAuthentication
###
# Specifies whether challenge-response authentication is allowed 
# (e.g. via PAM or though authentication styles # supported in login.conf(5)) 
# The default is ''yes''. 

ChallengeResponseAuthentication no


###
# X11Forwarding
###
# Specifies whether X11 forwarding is permitted. The argument must be ''yes'' or ''no''. 
# The default is ''no''. 

X11Forwarding no


### 
# PrintMotd
###
# Specifies whether sshd(8) should print /etc/motd when a user logs in interactively. 
# (On some systems it is # # also printed by the shell, /etc/profile, or equivalent.) 
# The default is ''yes''.

PrintMotd no


###
# LoginGraceTime
###
# The LoginGraceTime parameter specifies the time allowed for successful 
# authentication to the SSH server. The longer the Grace period is the 
# more open unauthenticated connections can exist. Like other session controls 
# in this session the Grace Period should be limited to appropriate organizational 
# limits to ensure the service is available for needed access. 

LoginGraceTime 1m


####
#ClientAliveInterval
###
# Sets a timeout interval in seconds after which if no data has been received from 
# the client, sshd(8) will send a message through the encrypted channel to request 
# a response from the client. The default is 0, indicating that these messages will 
# not be sent to the client. This option applies to protocol version 2 only.

ClientAliveInterval 600


###
# StrictModes
###
# Specifies whether sshd(8) should check file modes and ownership of the user's files 
# and home directory before accepting login. This is normally desirable because novices 
# sometimes accidentally leave their directory or files world-writable. 
# The default is ''yes''. 

StrictModes yes


###
# AllowTcpForwarding
###
# Specifies whether TCP forwarding is permitted. The default is ''yes''. 
# Note that disabling TCP forwarding does not improve security unless users are also 
# denied shell access, as they can always install their own forwarders.

AllowTcpForwarding no


###
# PermitEmptyPasswords
###
# When password authentication is allowed, it specifies whether the server allows 
# login to accounts with empty password strings. 
# The default is ''no''.

PermitEmptyPasswords no


###
# SSH Login Only For Group sshadmin
###
# Only members of goup "sshadmin" are allowed to establish a SSH connection to this server
AllowGroups sshadmin


###
# PasswordAuthentication
###
# Specifies whether password authentication is allowed. The default is ''yes''. 
# no = not required, SSH login is now only possible with SSH key
# yes = required, SSH login is possible with password

PasswordAuthentication no

Anschließend ist der SSH-Daemon neuzustarten

sudo systemctl restart sshd.service

Einen neuen Benutzer anlegen mit Recht für SSH-Zugriff

Ein neuer Benutzer lässt sich auf der Konsole einfach anlegen und auch gleich der sshadmin-Gruppe hinzufügen.

Des weitern wird der Benutzer auch gleich das Recht gewährt „sudo“ zu verwenden.

Für einen Raspberry Pi sieht das dann so aus:

sudo adduser neuerbenutzer
sudo usermod -a -G sshadmin neuerbenutzer
sudo usermod -a -G sudo neuerbenutzer
sudo usermod -a -G users neuerbenutzer

Anschließend müsst ihr darauf achten, dass für den neue Benutzer der öffentliche Schlüssel für die Anmeldung in der „authorized_keys“ hinterlegt wird.

Fehlt dort der Schlüssel, funktioniert die Anmeldung nicht.

Benutzer deaktivieren oder löschen

Ab und zu sind Benutzer auf einem System schnell zu deaktivieren, um einen Zugriff auf ein System komplett zu verhindern. Auf der Konsole kein Problem!

  sudo usermod -L pi
  sudo passwd -l pi

Alternativ könnt ihr den Benutzer auch komplett löschen. Da müsst ihr aber wirklich sicher sein, dass eine Löschung wirklich sinnvoll ist. Die erste Wahl ist eine Deaktivierung um auch eine Nachvollziehbarkeit zu gewährleisten (siehe Log Files)

  killall -u pi
  userdel -r pi

Passworteingabe zum Ausführen von sudo-Befehlen deaktivieren

Die Anmeldung wurde so konfiguriert, dass kein Passwort mehr erforderlich ist, sondern nur noch ein YubiKey vom System akzeptiert wird.
Trotzdem muss vor dem Ausführen der sudo-Befehle noch immer das Passwort eingegeben werden, was recht umständlich ist. Schließlich hat sich der berechtigte Benutzer schon am System legitimiert, mit einer sicheren Anmeldung, seinem YubiKey.
Zudem wurde auch nur einem ausgewählten Kreis an Benutzern der Zugriff via SSH gewährt.

Möchte man die Passworteingabe für die sudo-Befehle deaktivieren muss die Datei „/etc/sudoers“ angepasst werden.
Das Ändern funktioniert nur mit einem speziellen Editor, dem „viduso„.

sudo visudo

In der Datei sucht ihr den bestehenden Eintrag und ersetzt diesen.

  # aus kommentieren von
  %sudo  ALL=(ALL:ALL) ALL

  # einfügen von
  %sudo  ALL=(ALL) NOPASSWD:ALL

Nach der Anpassung ist die Eingabe des Passworts zum ausführen von „sudo-Befehlen“ nicht mehr notwendig.

Im nächsten Beitrag wird ein Windows System so konfiguriert, dass eine Anmeldung mit einem YubiKey an einem vorbereiteten Linux-Server funktioniert.
Windows System anpassen zur Anmeldung mit einem YubiKey an einem Linux-Server

Weitere Vereinfachungen bei der SSH-Anmeldung

SSH-Verbindungen verwalten mit Aliases

SSH-Verbindung und Jump Host


YubiKey Artikel Serie

Die Liste enthält alle Artikel der YubiKey-Serie, die dir genau aufzeigen wie du deinen Hardwaretoken für die unterschiedlichsten Anwendungsgebiete konfigurieren kannst.

  1. YubiKey 01 – YubiKey 5C NFC – Erste Schritte – Installation und Setup
  2. YubiKey 02 – Einmalpasswörter (OTPs) speichern
  3. Passwortmanager mit YubiKey absichern
  4. YubiKey 04 – Passwortlose Anmeldung an Microsoft 365
  5. YubiKey 05 – VirtualBox für die Erstellung des OpenPGP-Schlüsselpaars und zum Anschluss des YubiKeys vorbereiten
  6. YubiKey 06 – OpenPGP Schlüsselpaare erstellen – Master Key und Sub Keys
  7. YubiKey 07 – Revoke-Datei erstellen und Schlüssel exportieren
  8. YubiKey 08 – Hilfreiche GPG-Befehle zur Verwaltung von Schlüsselpaaren
  9. YubiKey 09 – OpenPGP-Schlüssel auf den YubiKey exportieren
  10. YubiKey 10 – Öffentlichen GPG-Schlüssel auf Linux-Server übertragen und für passwortlose Anmeldung nutzen
  11. YubiKey 11 – Windows anpassen zur SSH-Anmeldung an einem Linux-System
  12. YubiKey 12 – Benutzer-Anmeldung an Windows nur mit einem YubiKey erlauben
  13. YubiKey 13 – Benutzer-Anmeldung an Linux/Ubuntu nur mit einem YubiKey erlauben
  14. YubiKey 14 – SSH-Anmeldung mit einem Linux-Client mit YubiKey an einem Server

Hier geht es zur ➡ YubiKey Themenseite, dort findest du noch mehr Beiträge rund um den YubiKey.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.