[[Vorlage(Archiviert)]] ## [[Vorlage(Ausbaufähig, "Der Artikel ist für Karmic nicht mehr anwendbar, daher sollte er einer genaueren Überprüfung unterzogen und ggf. aktualisiert werden.")]] [[Vorlage(Fortgeschritten)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] }}} [[Inhaltsverzeichnis(2)]] = Übersicht = [http://de.wikipedia.org/wiki/Pluggable_Authentication_Modules PAM] {de} 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 [http://www.g10code.de/p-card.html OpenPGP SmartCard] {en} 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 [https://www.fsfe.org/en/card/howto FSFE Card howto] {en} , [http://www.gnupg.org/howtos/card-howto/en/smartcard-howto-single.html GnuPG Card howto] {en} und dem [http://www.schiessle.org/howto/poldi.shtml PAM Poldi howto] {en} . = 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 [http://www.gnupg.org/howtos/card-howto/en/ch02s02.html HowTo] {en} von GnuPG. Eine OpenPGP SmartCard kann man entweder von der [https://www.fsfe.org/en/card FSFE] {en} beziehen oder bei [http://www.kernelconcepts.de/shop/products/security.shtml?hardware Kernel concepts] {de} 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 [http://www.fsfe.org/en/content/download/15872/77909/file/gnupg-ccid gnupg-ccid] {dl} und [http://www.fsfe.org/en/content/download/17665/125518/file/gnupg-ccid.rules gnupg-ccid.rules] {dl} 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: {{{#!vorlage Befehl 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. {{{#!vorlage Befehl sudo addgroup scard sudo addgroup scard #( durch den entsprechenden Benutzernamen ersetzen) }}} Nun sollte der Kartenleser bei eingelegter Karte ansprechbar sein. Dies kann man mit folgendem Befehl überprüfen: {{{#!vorlage Befehl 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 [https://www.fsfe.org/en/card/howto/subkey_howto FSFE] {en} ). Dies geschieht mit folgenden Befehlen: {{{#!vorlage Befehl gpg --card-edit admin (Um die Admin Befehle zu erhalten) generate }}} Den Angaben während der Generierung folgen. {{{#!vorlage 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: {{{#!vorlage Befehl 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). {{{#!vorlage Befehl sudo poldi-ctrl --register-card --account --serialno sudo poldi-ctrl --associate --account --serialno 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: {{{#!vorlage Befehl 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_Gibbon: 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. = Links = * [https://www.fsfe.org/en/card/howto FSFE Card howto] {en} * [http://www.gnupg.org/howtos/card-howto/en/smartcard-howto-single.html GnuPG Card howto] {en} * [http://www.schiessle.org/howto/poldi.shtml PAM Poldi howto] {en} * [http://ubuntu-blog.at/2010/01/24/openpgp-mit-smartcard-verwenden-gnupg/ Neuere Anleitung für OpenPGP mit gpg2 unter Karmic Koala] {de} # tag: Sicherheit, System, Hardware, Chipkarte