USB-Stick als Authentifizierungs-Token

vorhergehende Artikel in: Linux Security
28.04.2016

Im Netz kursieren Anweisungen, wie man einen normalen USB-Stick zu einem Authentifizierungs-Token umwidmet. Ich habe diese Anweisungen nachvollzogen und dabei einige Fragen beantwortet, die ich in diesem Kontext hatte.

Zunächst möchte ich hier die Fragen zusammenfassen, die ich mir im Vorfeld der Tests gestellt hatte:

Funktioniert es?

Funktioniert es als 2-Faktor-Authentifizierung?

Funktioniert es für sudo?

Was passiert, wenn man in einer remote-Sitzung sudo startet und an dem Rechner der Stick angeschlossen ist?

Kann man diese Mechanik so instrumentalisieren, daß nur Nutzer, die sudo-Rechte haben, eine 2-Faktor-Authentifizierung benötigen, alle anderen aber nicht?

Einleitung

Ich beschreibe hier das Vorgehen unter Ubuntu 12.04 LTS - andere Distributionen können davon abweichen...

Einrichtung

Wie in mehreren guten Tutorials (siehe unten) beschrieben, müssen zunächst die Voraussetzungen geschaffen werden. Das geschieht mittels
sudo apt-get install pamusb-tools libpam-usb
Anschließend kann man das potentielle Token anschließen und richtet es mit
sudo pamusb-conf --add-device <name>
ein, wobei man einen sinnvollen Namen wählen sollte. An dieser Stelle sei darauf hingewiesen, daß pamusb den Stick über sie UUID der darauf befindlichen Partition identifiziert. Einen anderen USB-Stick mit derselben UUID zu erzeugen und damit die Absicherung zu durchbrechen, gelingt auch einem Angestellten oder WG-Kumpel, daher sollte man hier unbedingt einen Stick ohne Partition benutzen - dann nämlich identifiziert pamusb den Stick über seine Seriennummer. Auch das ist relativ einfach auszuhebeln: es existieren diverse Tools zum USB-Debugging, die beliebige Protokolle emulieren können, unter anderem könnte man mit einem solchen Werkzeug auch einen bestimmten USB-Stick bis zur Seriennummer hin vorspiegeln. Allerdings ist der Aufwand dazu schon deutlich größer.

Danach wird der oder die Nutzer festgelegt, die sich dieses Authentifizierungsmodus bedienen können sollen:

sudo pamusb-conf --add-user <username>
Wichtig ist als Referenz noch diese Seite hier.

Nunmehr muß das PAM-System noch über die neue Methode informiert werden:

sudo joe /etc/pam.d/common-auth
Wichtig hierbei ist, daß man auf jeden Fall während der Tests eine Session offen hält, in der ein Nutzer angemeldet ist, der über ausreichend Rechte verfügt, die Änderungen wieder rückgängig zu machen, falls beim Editieren etwas schief läuft. Anderenfalls kann es passieren, daß man mit einem System belohnt wird, in das man sich nicht mehr einloggen kann. Daher ist es auch wichtig, daß man ein Backup von /etc/pam.d/common-auth anlegt!! In dieser Datei kann man jetzt wahlweise eine von zwei Zeilen einfügen:
auth    sufficient      pam_usb.so
sorgt dafür, daß für die Anmeldung der korrekte Stick am Rechner ausreicht.
auth    required      pam_usb.so
wiederum legt fest, daß für die Anmeldung der korrekte Stick am Rechner nur mit der Eingabe des korrekten Passwortes ausreicht.

Damit ist auch gleich die Frage nach 2-Faktor-Authentifizierung beantwortet.

sudo

Die Antwort ist: ja. Hat man das System so konfiguriert, daß der Stick als Authentifizierung reicht, braucht man für sudo nie wieder ein Passwort eingeben. Auch die 2-Faktor-Variante funktioniert so.

Remote sudo

Die Variante, bei der der Stick alleine ausreicht, um sich zu authentifizieren, klingt in folgendem Szenario gefährlich: Der Stick steckt am Rechner. Ein Nutzer mit Rechten zur Benutzung von sudo meldet sich per ssh an. Er verlässt sein Terminal. Ein anderer Nutzer kommt und versucht, einen potentiell gefährlichen Befehl mittels sudo zu starten. Jetzt wäre es fatal, wenn der Stick sudo tatsächlich freischalten würde.

Die gute Nachricht ist: so funktioniert es nicht: in remote-Sitzungen muß man sudo trotzdem per Passwort freischalten. Allerdings gibt es auch eine schlechte Nachricht: nutzt man den 2-Faktor-Modus, scheint es so zu sein, daß remote-sudo gar nicht mehr funktioniert.

Selektiv pro Nutzer

Dafür muss man einfach das entsprechende Modul in /etc/pam.d/common-auth überspringen - etwa so:
auth [success=1 default=ignore] pam_succeed_if.so user in <Liste:von:Nutzernamen>
auth    required      pam_usb.so

Aktualisierung vom 28. April 2016

Mit einem neu installierten Ubuntu funktioniert diese Anleitung wie hier beschrieben nicht: UDisks wurde durch UDisks2 ersetzt (das könnte auch andere Distributionen betreffen). Daher existiert das Paket auch nicht mehr in den Ubuntu- bzw. Debian Repositories. Es ist ein entsprechendes Issue eingerichtet worden und es kümmerte sich bereits jemand darum, der einen Fork angelegt hat - dieser Fork hat bei mir funktioniert - er wird eventuell demnächst gemergt, sobald der Maintainer Zeit dafür findet....

Links

Artikel, die hierher verlinken

Vier-Augen-Prinzip bei Login mit PAM

16.01.2016

Zwang zur Anwesenheit mehrerer Personen zur Anmeldung als Systemuser - beispielsweise zur Verwaltung einer CA.

mOTP, PAM und OpenSSH

29.08.2014

Nach meinen erfolgreichen Versuchen zum Thema 2-Faktor-Authentifizierung und PAM habe ich nochmals eine Extraschicht eingelegt und eine "echte" Lösung ausprobiert.

Alle Artikel rss Wochenübersicht Monatsübersicht Codeberg Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • 8TB Raid5 mit Raspberry Pi

    25.04.2020

    Ich habe mir neulich überlegt, ob man einen Pi als Raid benutzen könnte - aber nicht mit dem ewig gleichen Setup mit 4 USB-Sticks...

    Weiterlesen...

Neueste Artikel

  • Watch David Byrne Lead a Massive Choir in Singing David Bowie’s “Heroes”

    Durch die Seite Open Culture bin ich auf diesen spektakulären Auftritt aufmerksam geworden:

    Weiterlesen
  • Zufälliges Füllen der Ebene

    Ich fand neulich einen sehr interessanten Artikel Zum Thema der algorithmischen Erzeugung von dekorativen (obwohl - das liegt im Auge des Betrachters) Bildern.

    Weiterlesen
  • Sicherheit beim Fernzugang per SSH

    Ich habe vor einiger Zeit bereits zwei Vorträge gestaltet und dafür meine Ideen zur unkomplizierten Erstellung von Präsentationen genutzt - nun ist ein weiterer hinzugekommen.

    Weiterlesen

Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.

Wer daran teilhaben und eventuell sogar davon profitieren möchte, muss damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.

Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...

PS: Meine öffentlichen Codeberg-Repositories findet man hier.