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.
Certstream, InfluxDB, Grafana und Netflix
16.04.2019
Nachdem ich vor kurzem über mein erstes Spielen mit dem certstream berichtete, habe ich weitere Experimente gemacht und die Daten zur besseren Auswertung in eine InfluxDB gepackt, um sie mit Grafana untersuchen zu können.
Weiterlesen...Android Basteln C und C++ Chaos Datenbanken Docker dWb+ ESP Wifi Garten Geo Git(lab|hub) Go GUI Gui Hardware Java Jupyter Komponenten Links Linux Markdown Markup Music Numerik PKI-X.509-CA Python QBrowser Rants Raspi Revisited Security Software-Test sQLshell TeleGrafana Verschiedenes Video Virtualisierung Windows Upcoming...
Die sQLshell hat eine weitere Integration erfahren - obwohl ich eigentlich selber nicht viel dazu tun musste: Es existiert ein Projekt/Produkt namens steampipe, dessen Slogan ist select * from cloud; - Im Prinzip eine Wrapperschicht um diverse (laut Eigenwerbung mehr als 140) (cloud) data sources.
Weiterlesen...Nach der letzten losen Zusammenstellung (für mich) interessanter Links aus den Tiefen des Internet von 2024 folgt hier gleich die nächste:
Weiterlesen...Da ich seit nunmehr einem Jahr bei meinem neeun Arbeitgeber beschäftigt und damit seit ungefähr derselben Zeit für Geld mit Python arbeite, haben sich gewisse Antipathien gegenüber Python vertieft (ich kann mit typlosen Sprachen einfach nicht umgehen) - aber auch einige meiner Gründe, Python zu lieben sind ebenso stärker geworden. Einer davon ist der Fakt, dass eine Methode in Python mehr als einen Wert zurückgeben kann.
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, muß 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 GitHub-Repositories findet man hier - meine öffentlichen GitLab-Repositories finden sich dagegen hier.