Dass ich tippfaul bin, sollte ich an dieser Stelle vielleicht nicht all zusehr betonen, jedoch um bei der Wahrheit zu bleiben, es war der ausschlaggebende Faktor um nach einer angenehmen Methode zu suchen. Authentifizieren per Fingerabdruck ist zwar eine Möglichkeit, jedoch bietet sie immer wieder ihre Macken, wenn es darum geht, das ‚Passwort‘ einmal weiterzugeben. Außerdem ist die Sicherheit fragwürdig.
Netterweise habe ich ja das Problem nicht als einziger Benutzer, und so kommt es, dass es das Paket sys-auth/pam_usb gibt – Authentifizieren via USB Gerät. Damit es klappt, empfiehlt es sich eine Version größer 0.4.1, welche wir unter Gentoo zuerst unmaskieren müssen:
# echo „sys-auth/pam_usb“ >> /etc/portage/package.keywords
# emerge -av „>=sys-auth/pam_usb-0.4.1“
Ist der Bau abgeschlossen, geht es an den Lieblingsteil, die Konfiguration, für welche ich mir einen SanDisk Corp. Cruzer Titanium ausgesucht habe. Mit den beigelegten Werkzeugen konfigurieren wir einmal den USB Stick:
# pamusb-conf –add-device MySecretDevice
Please select the device you wish to add.
* Using „SanDisk Corp. Cruzer Titanium (SNDKXXXXXXXXXXXXXXXX)“ (only option)
Which volume would you like to use for storing data ?
* Using „/dev/sdb1 (UUID: <6F6B-42FC>)“ (only option)
Name : MySecretDevice
Vendor : SanDisk Corp.
Model : Cruzer Titanium
Serial : SNDKXXXXXXXXXXXXXXXX
Volume UUID : 6F6B-42FC (/dev/sdb1)
Save to /etc/pamusb.conf ?
[Y/n] y
Done.
Wenn das genauso wie bei mir geklappt hat, dann wird es Zeit die entsprechenden Benutzer zu konfigurieren. Weil ich es einfach praktisch finde, nehme ich hier ‚root‘ als unser Opfer:If things work the same way they do on my howto, the USB stick is now set up for authentication in general. Now let’s add users. I’d say using root is pretty cool – so let’s try.
# pamusb-conf –add-user root
Which device would you like to use for authentication ?
* Using „MyDevice“ (only option)
User : root
Device : MySecretDevice
Save to /etc/pamusb.conf ?
[Y/n] y
Done.
Nun sollte der Benutzer ‚root‘ theoretisch mit dem Gerät authentifiziert werden können. Ob dem wirklich so ist, zeigt uns folgender Test:
# pamusb-check root
* Authentication request for user „root“ (pamusb-check)
* Device „MySecretDevice“ is connected (good).
* Performing one time pad verification…
* Verification match, updating one time pads…
* Access granted.
Da das geschafft ist, ist es Zeit, unser System zu versauen. Um also in der generellen System-Authentifikation herumschrauben zu können, passe ich die Datei /etc/pam.d/system-auth an:Well – the basic stuff is done. Now let’s start with the difficult part: we’re dangling on PAM. As I want to make the changes system wide, I’m working with the file /etc/pam.d/system-auth where I am looking for the line saying
auth required pam_unix.so nullok_secure
wird somit zu:
auth sufficient pam_usb.so
auth required pam_unix.so nullok_secure
Es folgt der Praxistest:
pavilion $ su
* pam_usb v.0.4.3
* Authentication request for user „root“ (su)
* Device „MySecretDevice“ is connected (good).
* Performing one time pad verification…
* Verification match, updating one time pads…
* Access granted.
Klappt doch wunderbar. Durch anpassen der entsprechenden PAM-Module kann man sogar mit kdm, gdm oder gar den Bildschirmschonern herumbasteln. Wobei – da fällt mir ein, dass es doch auch cool wäre, wenn der USB Stick gleich den Bildschirmschoner auslöst, wenn man ihn abzieht.
Doch selbst dazu gibt es eine Lösung. Der pamusb-agent. Ein Eintrag in der Config dazu könnte etwa so aussehen, wenn man wie ich KDE benutzt:
MySecretDevice dcop kdesktop KScreensaverIface lock dcop kdesktop KScreensaverIface quit
Nun muss nur noch der Agent beim Starten des KDE geladen werden und die Sache sollte rund laufen.
cd ~/.kde/Autostart
ln -s /usr/bin/pamusb-agent pamusb-agent
Das war’s dann auch schon – Viel Spass beim Nachbau
Ben L. says:
Dang. That’s got to be the coolest Linux trick I’ve run across in a couple of weeks. I’ve gotta try it.
Stargazer says:
Sadly my laptop here lacks a bluetooth adapter. I would have used my mobile phone instead by detecting it in range…