Seit Jahren erwartet, ist endlich Version 4 des Samba-Servers erschienen, der nun als vollwertige Alternative zu Microsofts Active Directory dienen kann. In der ... (mehr)

SSH Server mit OTP absichern

Der Login auf einem SSH-Server lässt sich bereits mit Bordmitteln gut absichern. Voraussetzung dafür ist, dass der Admin in der »sshd_config« die Directive »PasswordAuthentication« auf »No« setzt und sämtliche Benutzer konsequent mit passwortgeschützten RSA / DSA-Keys ausstattet. Alternativ kann die Authentifizierung an einem OpenSSH-Server schon seit Urzeiten auch mit dem Einmalpasswortverfahren S/KEY abgesichert werden.

S/KEY wurde zwischenzeitlich durch OPIE [6] ersetzt und erlaubt es, im Voraus Passwortlisten mit Einmalpasswörtern zu generieren, die dann ähnlich wie die TAN-Listen beim eBanking verwendet werden. Alternativ können Einmalpasswörter aber auch im Bedarfsfall auf einem OTP-Generator erstellt werden, zum Beispiel mit Opikey [15] auf einem Android-Smartphone.

Wesentlich einfacher und eleganter lässt sich eine SSH-Sitzung heute aber mit dem Google-Authenticator [16] sichern. Denn das Google-Authenticator Project steht unter der Apache License 2.0 und ist damit frei verfügbar. Für den Server steht ein PAM-Modul zur Verfügung, der Google-Authenticator Client läuft auf Android-, iOS- und Blackberry-Geräten und kann einfach aus dem jeweilgen App-Store installiert werden.

Serverseitig ist die Installation des Google-Authenticator PAM-Moduls auf einem Ubuntu-Server ein Kinderspiel, denn hier lässt sich ein passendes Paket direkt aus den Repositories installieren:

sudo apt-get install libpam-google-authenticator

Alternativ laden Sie den Sourcecode von [17] herunter und kompilieren ihn für Ihre Plattform. Ist das PAM-Modul installiert, melden Sie sich mit dem Benutzer an der Konsole an, der sich später mit dem Google-Authenticator anmelden soll und geben Sie »google-authenticator« ein.

Das Programm zeigt dann im Terminal einen QR-Code, einen Secret Key, einen Verification Code sowie fünf Emergency Scratch-Codes an. Die Emergency Scratch-Codes sollten Sie wieder ausdrucken und an einer sicheren Stelle verwahren. Denn mit diesen Einmal-Passworten können Sie sich auch dann am SSH-Server anmelden, wenn Sie das Smartphone mit dem Google-Authenticator einmal nicht zur Hand haben.

Gegen Brute Force

In der Google Authenticator App auf dem Smartphone klicken Sie nun auf das Plus-Zeichen am unteren Rand und wählen dann den Befehl »Barcode scannen« . Alternativ können Sie das Konto auch manuell hinzufügen. Dazu geben Sie den Kontonamen in der Form »User@Host« und den entsprechenden geheimen Schlüssel an.

Die nachfolgenden Fragen dienen der zusätzlichen Absicherung des Accounts. Hier sollten Sie die mehrfache Verwendung eines Authentisierungs-Tokens verbieten und maximal drei Login-Versuche pro 30 Sekunden zulassen, um Brute-Force-Angriffen vorzubeugen. Abschließend müssen Sie den Google-Authenticator noch in der PAM-Konfiguration aktivieren und eine Änderung an der SSH-Konfiguration vornehmen. Dazu öffnen Sie die Datei »/etc/pam.d/sshd« im Editor und fügen am Ende die Zeile

auth required pam_google_authenticator.so

hinzu. Anschließend speichern Sie die Datei. In der »/etc/ssh/sshd_config« ändern Sie den Wert für die »ChallengeResponseAuthentication« auf »yes« und starten den SSH-Daemon neu.

Wenn Sie sich künftig auf Ihrem Server per SSH einloggen, fragt der SSH-Server wie gewohnt Benutzernamen und Passwort und zusätzlich den Verification Code ab, den der Google-Authenticator auf Ihrem Smartphone anzeigt.

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2021