SSH-Login mit OpenPGP Card
Voraussetzungen
Voraussetzung ist eine einsatzbereite OpenPGP Card bzw. ein Crypto Stick. Die Einrichtung wird an einem Linux-PC (Gentoo) mit aktuellem GnuPG und OpenSSH geschrieben.
Einrichtung
Die Konfigurationsdatei des GPG-Agents muß folg. enthalten:
~ $ cat ~/.gnupg/gpg-agent.conf
enable-ssh-support
Das Auslesen des Schlüssels erfolgt mit:
$ ssh-add -L
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCuLFtX2O9J5vCtSEpQJtpE6UVKmNC/Wx3NREnFNW5nyc9AB0yOl3B5fj+2KLk8wPx4w/0A9R0cK4JhdtiEA3eblKufD3TrJ5IJCwM7xMa1KpWgz65ELJ876jG1K3uIJo3VUe2JL2nse58m4CkCfPRpKPXZahhZtrAse3EHdp0Lmtx+Ha6e3h50K+aASniJL9rpAPV6AxoFhbm2wk7j+BlL65Fciso8i6e1P6/JMjNMfZDOQvMuXafkgJPLhaISf5ZsyryFnqElsz6eA8uWvv2g9CBH4X2Iu9mrgc02oXAFNlbrut3Omqm3zybexlV5aKe79Lt7CSKyQLn3hqOzO3PT cardno:0005000010B2
Dieser Schlüssel (die komplette Zeile) wird auf dem Zielhost in die Datei ~/.ssh/authorized_keys kopiert (Homedirectory des Benutzers, als welcher man sich anmelden will).
Nachdem der Login mit dem SSH-Key der OpenPGP Card erfolgreich getestet wurde, kann das Paßwort des Benutzers gesperrt werden:
$ passwd -l <Benutzername>
Anschließend ist nur noch ein Login per SSH mit der OpenPGP Card möglich.
sudo mit der OpenPGP Card
Nach dem SSH-Login über die OpenPGP Card als normaler Benutzer kann man Befehle, welche root-Rechte erfordern, mittels "sudo" ausführen. Dazu müssen folgende Voraussetzungen erfüllt sein (es gibt natürlich auch andere Wege):
- Die Gruppe "wheel" muß mittels alle Befehle ausführen dürfen. Dazu aktiviert man in /etc/sudoers die (bei Gentoo) bereits vorhandene, aber auskommentierte Zeile:
%wheel ALL=(ALL) ALL
Damit können Mitglieder der Gruppe "wheel" per "sudo" beliebige Kommandos nach nochmaliger Eingabe ihres Paßwortes mit root-Rechten ausführen.
Hinweis: Das Editieren von /etc/sudoers sollte nicht direkt, sondern nur mit dem Befeht "visudo" erfolgen.
- Der Benutzer muß Mitglied der Gruppe "wheel" sein. Das erreicht man mit folgendem Befehl (als root):
# usermod -aG wheel <Benutzername>
Zum Ausführen von Kommandos mit root-Rechten per sudo muß der Benutzer nun sein Paßwort eingeben, welches er aber gar nicht mehr besitzt. Damit dies auch über den Schlüssel der OpenPGP Card erfolgt, muß ein neues PAM-Modul installiert werden:
# emerge -av pam_ssh_agent_auth
In /etc/pam.d/sudo wird dies nun durch Hinzufügen der ersten Zeile aktiviert:
# nano -w /etc/pam.d/sudo
auth [success=2 default=ignore] pam_ssh_agent_auth.so file=~/.ssh/authorized_keys
auth include system-auth
account include system-auth
session include system-auth
Anschließend wird in /etc/sudoers folgende Zeile einfügt:
Defaults env_keep += SSH_AUTH_SOCK
Damit wird der vom SSH-Agent genutzte Socket auch in die root-Umgebung übergeben.
Das Ganze erfordert die Nutzung eines SSH-Agents auf Clientseite. Dessen Verbindung muß bei der Verbindungsaufnahme durch den Parameter "-A" mit übergeben werden. Die SSH-Verbindung wird also z.B. so gestartet:
$ ssh -A <Benutzer>@<Server>
Funktioniert das alles, kann auch für root das Paßwort entfernt und allgemein der SSH-Zugang mit Paßwörtern gesperrt werden.
Artikelaktionen