Artikelformat

Linux und der Google Authenticator

Ihr kennt bestimmt die Google Authenticator App, welche euch ermöglicht euer Google/Facebbok/Microsoft Konto im Zwei-Faktor Verfahren zu nutzen. Die App generiert einen sechsstelligen Einmalcode, basierend auf Uhrzeit und einem Shared Secret (RFC 6238), welcher zusätzlich zum Benutzernamen und Passwort eingegeben werden muss.

Google Authenticator

Die Jungs von Google stellen auf der Projektseite auch ein PAM (Pluggable Authentication Module) für die Einbindung in ein Linux System zur Verfügung. Mit diesem Modul lassen sich diverse Aktionen (Einloggen, Aufwachen aus dem Bildschirmschoner, SSH Zugriff uvm.) durch dieses Verfahren absichern. Die Einbindung selber ist eigentlich kinderleicht:

Vorbereitung

Zuerst benötigen wir ein Terminal und laden uns ein Zusatzpaket für die Erstellung eines QR-Codes:

Für Debian / Ubuntu

$ apt-get install libqrencode3

Für Arch Linux

$ pacman -Sy qrencode

Installation

Danach haben wir zwei Möglichkeiten das Modul zu installieren:

Installieren über die Paketverwaltung unseres Systems

Für Debian / Ubuntu:

$ apt-get install libpam-google-authenticator

Für Arch Linux gibt es ein Paket im AUR:

$ yaourt -S libpam-google-authenticator

Wir installieren das Modul von Hand

Für Debian / Ubuntu brauchen wir folgende Pakete:

$ apt-get install libpam0g-dev make gcc-c++ wget

Für Arch Linux:

$ pacman -S pam

Nun laden wir uns das Quellpaket und entpacken dieses:

$ cd /usr/src/
$ wget https://google-authenticator.googlecode.com/files/libpam-google-authenticator-1.0-source.tar.bz2
$ tar -xvf libpam-google-authenticator-1.0-source.tar.bz2

Wir wechseln in das neue Verzeichnis, kompilieren und installieren das Modul:

$ cd libpam-google-authenticator-1.0
$ make
$ make install

Konfiguration

Als nächstes starten wir das Programm als den Nutzer, der abgesichert werden soll:

$ google-authenticator

Wir werden ein paar Dinge gefragt, die ich bei mir wie folgt beantwortet habe. Aber letztens muss jeder selbst wissen wie er das Ganze konfigurieren möchte.

Do you want authentication tokens to be time-based (y/n) Y

Do you want me to update your "/home/test/.google_authenticator" file (y/n) Y

Do you want to disallow multiple uses of the same authentication
token? This restricts you to one login about every 30s, but it increases
your chances to notice or even prevent man-in-the-middle attacks (y/n) Y

By default, tokens are good for 30 seconds and in order to compensate for
possible time-skew between the client and the server, we allow an extra
token before and after the current time. If you experience problems with poor
time synchronization, you can increase the window from its default
size of 1:30min to about 4min. Do you want to do so (y/n) N

If the computer that you are logging into isn't hardened against brute-force
login attempts, you can enable rate-limiting for the authentication module.
By default, this limits attackers to no more than 3 login attempts every 30s.
Do you want to enable rate-limiting (y/n) Y

Zwischendurch bekommen wir eine URL über die man den QR-Code aufrufen kann, sofern qrencode installiert ist auch direkt einen QR Code, den Geheimen Schlüssel im Klartext, einen Verfication Code und sogenannte „Scratch codes“. Diese sind vorgenerierte Einmalcodes die euch im Notfall den Login ermöglichen. Am Besten schreibt ihr diese auf oder druckt sie aus!

Google Authenticator - Terminal

Einrichtung der App

Nun ist ein guter Zeitpunkt die App auf unseren Smartphone einzurichten (Falls noch nicht vorhanden, einfach aus dem App / Play Store installieren).

Google Authenticator
Entwickler: Google Inc.
Preis: Kostenlos
Google Authenticator
Entwickler: Google, Inc.
Preis: Kostenlos

Hier beispielhaft an Android gezeigt:

Google Authenticator - App Menü
Zuerst rufen wir die App auf und wählen im Menü den Punkt „Konto Einrichten“:

Google Authenticator - App Settings
Hier haben wir die Möglichkeit unseren Linux Rechner hinzuzufügen. Der einfachste weg ist es den Barcode aus dem Terminal zu scannen.

Google Authenticator - Schlüssel hinzufügen
Alternativ kann man auch mit Hilfe des Secret Key das Konto manuell anlegen.

Aktivierung des Moduls

Als nächstes konfigurieren wir unser System so, dass das neue Modul auch genutzt wird:

1. Beispiel: Cinnamon-Screensaver

$ nano /etc/pam.d/cinnamon-screensaver

Folgende Zeile einfügen damit beim Aufwecken aus dem Bildschirmschoner (z.B. nach dem Standby / Ruhezustand) ein Einmalcode benötigt wird:

auth        required     pam_google_authenticator.so

Zum Test einmal in den Ruhezustand versetzen, wieder aufwecken und über das Ergebnis staunen.

Google Authenticator - MDM

2. Beispiel: SSH

Um SSH abzusichern müssen wir zuerst ein paar Änderungen an der ‚/etc/ssh/sshd_config‚ vornehmen:

ChallengeResponseAuthentication yes
UsePAM yes

Danach den SSH Dienst neustarten und die Datei ‚/etc/pam.d/sshd‚ bearbeiten, dass sie die Zeile von oben enthält.

Zusatzinfos

Solltet ihr euer Home-Verzechnis verschlüsselt haben (z.B. wie man es bei der Installation von Ubuntu anwählen kann) und wohl z.B. euren Login-Manager (GDM, MDM, KDM) absichern, muss die Datei ‚.google_authenticator‚ an einem lesbaren Ort liegen. Die Zeile für das Modul könnte dann wie folgt aussehen:

auth            required        pam_google_authenticator.so secret=/home/.ga/${USER}/.google_authenticator
Es gibt verschiedene Parameter für die Einbindung eines PAM:
  • required
    Erfolg ist notwendig für Gesamtbewertung: Erfolg, Fehler führt zur Gesamtbewertung: Misserfolg, es werden trotzdem alle weiteren Module von diesem type ausgeführt
  • requisite
    Erfolg ist notwendig für Gesamtbewertung: Erfolg, Fehler führt zur Gesamtbewertung: Misserfolg und termininiert den Authentisierungsprozess
  • sufficient
    Erfolg ist ausreichend für Gesamtbewertung: Erfolg, Fehler beeinflusst Gesamtbewertung nicht, Erfolg terminiert den Authentisierungsprozess, Ergebnis vorheriger required Module wird berücksichtigt
  • optional
    Erfolg oder Fehler hat nur Bedeutung, wenn es der einzige Module für diesen type ist
Für Windows Phone gibt es eine ähnliche App, diese scheint auch mit Google Konten (und damit auch mit dem Modul) zu funktionieren:
Die App konnte im App Store nicht gefunden werden. :-( #wpappbox

Links: → Store öffnen → Google-Suche

Autor: Pierre

Ich bin Pierre und im Moment Gastautor für aptgetupdate.de. Ich kümmere mich vorrangig um die Themenbereiche: Linux, Tor, OpenSource, Chromebooks, Google und Android. Bei Fragen oder Anregungen könnt ihr mich gerne per Email anschreiben.

5 Kommentare

  1. Die WP8-App ist übrigens in der Tat voll kompatibel zu dem Google Authenticator, ich nutze sie auch für andere Zwei-Faktor-Authentifikationen, wie bei Dropbox, Live, Facebook und meinem uberspace-Account.

  2. Ich finde 2-Faktor-Auth auch super. Danke für die Anleitung. Ich werde es auf jeden Fall mal ausprobieren.

    Frage: In wie weit macht man sich da von Google abhängig? Könnte Google diesen Dienst auch einfach abschalten? Wie sicherheitsrelevant ist diese Geschichte, wenn man Google nicht vertraut?

    • Da Google Authenticator Open-Source ist seh ich da keine Abhängigkeit. Wenn Google das Modul einstellt wird es weiterhin funktionieren – wenn nicht kann es geforkt werden.

      Ob es mit Google kommuniziert hab ich nicht geprüft, halte ich aber für unwahrscheinlich. Das ganze funktioniert auch ohne Internetanbindung. Was ich vergessen habe zu erwähnen, ist dass bei SSH keine Private Key Anmeldung ist wenn das Modul aktiviert wird. Dies kommt erst mit einer späteren OpenSSH Version