Dieser Artikel wurde archiviert, da er - oder Teile daraus - nur noch unter einer älteren Ubuntu-Version nutzbar ist. Diese Anleitung wird vom Wiki-Team weder auf Richtigkeit überprüft noch anderweitig gepflegt. Zusätzlich wurde der Artikel für weitere Änderungen gesperrt.
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
PAM steht für "Pluggable Authentication Modules". Durch die Nutzung von PAM-Modulen ist man in der Lage, verschiedene Authentifizierungsmechanismen unter Linux zu implementieren. Zum Beispiel: Kerberus, LDAP, Public-Key-Authentication oder SmartCards. Das hier vorgestellte PAM-Modul ermöglicht es, dem Benutzer, sich mit einer OpenPGP SmartCard am System zu authentifizieren. Dazu wird PAM Poldi verwendet
Der Vorteile der Authentifizierung über eine SmartCard ist die erhöhte Sicherheit. Das Ausspähen des Passwortes ist unmöglich. Die Anmeldung ist an die Karte gebunden und kann zusätzlich mit einer PIN abgesichert werden.
Diese Anleitung basiert auf dem FSFE Card howto , GnuPG Card howto und dem PAM Poldi howto .
Um sich mit einer OpenPGP SmartCard am System zu authentifizieren, braucht man einen SmartCard Reader und eine OpenPGP SmartCard. Eine Liste unterstützter Kartenleser findet man in diesem HowTo von GnuPG. Eine OpenPGP SmartCard kann man entweder von der FSFE beziehen oder bei Kernel concepts bestellen.
Für die Authentifizierung über OpenPGP SmartCard und die Verwendung der SmartCard müssen folgende Pakete [1] installiert werden (und alle davon abhängigen Pakete):
gnupg
libpam-poldi
libccid
Um den Reader zu verwenden müssen die Dateien gnupg-ccid und gnupg-ccid.rules heruntergeladen werden und in die udev Konfiguration eingefügt werden. Hierfür werden Root-Rechte benötigt. Dazu können folgende Befehle in einem Terminal [2] verwendet werden:
mkdir smartcard cd smartcard wget http://www.fsfe.org/en/content/download/15872/77909/file/gnupg-ccid wget http://www.fsfe.org/en/content/download/17665/125518/file/gnupg-ccid.rules sudo cp gnupg-ccid.rules /etc/udev/gnupg-ccid.rules sudo mkdir /etc/udev/scripts/ sudo cp gnupg-ccid /etc/udev/scripts/gnupg-ccid sudo chmod +x /etc/udev/scripts/gnupg-ccid sudo ln -s /etc/udev/gnupg-ccid.rules /etc/udev/rules.d/gnupg-ccid.rules
Nun sind alle Konfigurationsdateien an der richtigen Stelle und haben die richtigen Benutzerrechte. Um den Kartenleser zu verwenden muss noch eine Gruppe angelegt werden und der Benutzer, der den Kartenleser verwenden soll, zur Gruppe hinzugefügt werden.
sudo addgroup scard sudo addgroup <benutzername> scard #(<benutzername> durch den entsprechenden Benutzernamen ersetzen)
Nun sollte der Kartenleser bei eingelegter Karte ansprechbar sein. Dies kann man mit folgendem Befehl überprüfen:
gpg --card-status
Um sich am System authentifizieren zu können, muss auf der Karte ein Schlüssel generiert werden (Eine Anleitung zur Verwendung bestehender Schlüssel findet man bei der FSFE ). Dies geschieht mit folgenden Befehlen:
gpg --card-edit admin (Um die Admin Befehle zu erhalten) generate
Den Angaben während der Generierung folgen.
Bei der Generierung die Backup Option auswählen, da ohne Backup eine Wiederherstellung des Keys im Falle eines Verlusts oder Defekts der SmartCard unmöglich ist!
Um den generierten Schlüssel zu sichern, sollte er auf einem externen Medium (z.B. USB-Key) gespeichert werden. Dazu die Dateien ~/.gnupg/pubring.gpg und ~/.gnupg/secring.gpg auf den USB-Key kopieren:
cd ~/.gnupg cp pubring.gpg /path/to/usb-key/pubring.gpg cp secring.gpg /path/to/usb-key/secring.gpg
Das Backup-Medium sollte abseits des Rechners an einem sicheren Ort aufbewahrt werden.
Zur Authentifizierung mit OpenPGP SmartCard wird das PAM Poldi Module verwendet. Zur Konfiguration wird die Seriennummer der Karte benötigt. Diese wird bei gpg --card-status als Application ID angezeigt. Es muss die Karte registriert werden und mit einem Account verbunden werden. Folgende Befehle konfigurieren PAM Poldi (SmartCard muss eingelegt sein).
sudo poldi-ctrl --register-card --account <benutzername> --serialno <Seriennummer der Karte> sudo poldi-ctrl --associate --account <benutzername> --serialno <Seriennummer der Karte> poldi-ctrl --set-key
Damit ist PAM Poldi konfiguriert und die Authentifizierung kann mit poldi-ctrl --test getestet werden.
Nun muss man nur noch PAM so konfigurieren, dass die Authentifizierung über SmartCard erfolgt. Dazu muss die Datei /etc/pam.d/common-auth mit Root-Rechten in einem Editor [3] geöffnet werden. Um sich ausschließlich über die SmartCard zu authentifizieren ändert man
auth required pam_unix.so nullok_secure
in
auth required pam_poldi.so quiet
Soll die Authentifizierung auf Passwortabfrage zurückfallen, sollte folgendes eingetragen werden:
auth sufficient pam_poldi.so quiet auth required pam_unix.so nullok_secure
Nun ist die Authentifizierung über PAM Poldi konfiguriert. Dies sollte auf jeden Fall noch getestet werden. Dazu ein neues Terminal öffnen und folgendes ausprobieren:
sudo -i
Es ist die PIN der Karte einzugeben. Wenn dieses funktioniert, dann ist die Karte richtig konfiguriert.
Erhält man bei der Authentifizierung eine Fehlermeldung wie Segmentation fault oder es funktioniert überhaupt nicht, hilft es den CardReader neu zu verbinden. Dieses Problem tritt auf, wenn man die Karte zwischenzeitlich in Kombination mit GnuPG verwendet hat.
Seit Gutsy ist in Kubuntu kdesu durch kdesudo ersetzt. Leider funktioniert kdesudo noch nicht mit PAM Poldi. Das Fenster zum Eingeben der PIN wird nicht geöffnet. Das Problem lässt sich umgehen indem man die try-pin Anweisung in /etc/pam.d/common-auth setzt. Leider wird dabei überhaupt nicht mehr nach der PIN gefragt. Anwender mit Programmiererfahrung können auch das Problem im Quelltext direkt beheben.
Allerdings ist die Funktionalität des ursprünglichen kdesu ist hier nun über kdesu.distrib verfügbar.
Diese Revision wurde am 25. November 2013 19:56 von aasche erstellt.