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?
sudo apt-get install pamusb-tools libpam-usbAnschließ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-authWichtig 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.sosorgt dafür, daß für die Anmeldung der korrekte Stick am Rechner ausreicht.
auth required pam_usb.sowiederum 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.
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.
auth [success=1 default=ignore] pam_succeed_if.so user in <Liste:von:Nutzernamen> auth required pam_usb.so
16.01.2016
Zwang zur Anwesenheit mehrerer Personen zur Anmeldung als Systemuser - beispielsweise zur Verwaltung einer CA.
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.
Multi-User-WebDAV, Docker, GitHub
17.11.2019
Nachdem ich mich in letzter Zeit verstärkt mit Docker und dem zugehörigen Ökosystem beschäftige, habe ich begonnen, verschiedenste Dienste in Containern zu testen um zu sehen, ob in manchen Fällen LXC oder KVM nicht doch die bessere Wahl wäre...
Weiterlesen...Android Basteln C und C++ Chaos Datenbanken Docker dWb+ ESP Wifi Garten Geo Go GUI Gui Hardware Java Jupyter Komponenten Links Linux Markdown Markup Music Numerik OpenSource PKI-X.509-CA Python QBrowser Rants Raspi Revisited Security Software-Test sQLshell TeleGrafana Verschiedenes Video Virtualisierung Windows Upcoming...
In eigener Sache...
Weiterlesen...Ich habe eine neue Java Swing Komponente erstellt: Es handelt sich um einen Wrapper für von JToolBar abgeleitete Klassen, die die Werkzeugleiste minimieren und sie nur dann einblenden, wenn der Mauszeiger über ihnen schwebt.
Weiterlesen...Ich habe bereits in einem früheren Artikel über meine ersten Erfolge berichtet, der sQLshell auf Basis des bestehenden Codes aus dem Projekt EBMap4D eine bessere Integration für Geo-Daten zu spendieren und entsprechende Abfragen, bzw. deren Ergebnisse auf einer Kartenansicht zu visualisieren.
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.