ubuntuusers.de

Authentifizierung OpenPGP SmartCard

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Übersicht

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 🇬🇧 .

Voraussetzung

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.

Installation

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

Einrichten des CardReaders

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 

Generierung des Schlüssels

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.

Hinweis:

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!

Sicherung des Schlüssels

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.

Einrichten von PAM Poldi

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.

Konfiguration von PAM

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.

Problemlösung

Segmentation fault

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.

Kdesu

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.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Chipkarte, Sicherheit, System, Hardware