Um die Smartcard-Umleitung auf einem Ubuntu-Desktop zu konfigurieren, installieren Sie die Bibliotheken, von denen die Funktion abhängt, und das Stamm-CA-Zertifikat, um die vertrauenswürdige Authentifizierung von Smartcards zu unterstützen. Außerdem müssen Sie einige Konfigurationsdateien bearbeiten, um des Einrichten der Authentifizierung abzuschließen.
In einigen der Beispiele im Verfahren werden Platzhalterwerte verwendet, um Entitäten in Ihrer Netzwerkkonfiguration darzustellen, z. B. den DNS-Namen Ihrer Active Directory-Domäne. Ersetzen Sie die Platzhalterwerte durch spezifische Informationen für Ihre Konfiguration, wie in der folgenden Tabelle gezeigt.
Platzhalterwert |
Beschreibung |
dns_IP_ADDRESS |
IP-Adresse Ihres DNS-Namenservers |
mydomain.com |
DNS-Name Ihrer Active Directory-Domäne |
MYDOMAIN.COM |
DNS-Name Ihrer Active Directory-Domäne in Großbuchstaben |
MYDOMAIN |
DNS-Name der Arbeitsgruppe oder NT-Domäne, in der sich Ihr Samba-Server befindet, in Großbuchstaben |
ads-hostname |
Hostname Ihres AD-Servers |
ads-hostname.mydomain.com |
Vollqualifizierter Domänenname (FQDN) Ihres AD-Servers |
mytimeserver.mycompany.com |
DNS-Name Ihres NTP-Zeitservers |
AdminUser |
Benutzername des Linux-Desktop-Administrators |
Prozedur
- Installieren Sie die erforderlichen Bibliotheken.
apt-get install -y pcscd pcsc-tools pkg-config libpam-pkcs11 opensc
libengine-pkcs11-openssl libnss3-tools
- Installieren Sie ein Stamm-CA-Zertifikat.
- Laden Sie ein Stamm-CA-Zertifikat herunter und speichern Sie es in /tmp/certificate.cer auf Ihrem Desktop. Siehe How to export Root Certification Authority Certificate.
- Übertragen Sie das heruntergeladene Stamm-CA-Zertifikat in eine .pem-Datei.
openssl x509 -inform der -in /tmp/certificate.cer -out /tmp/certificate.pem
- Verwenden Sie den Befehl certutil, um das Stamm-CA-Zertifikat in der Systemdatenbank /etc/pki/nssdb zu installieren.
certutil -A -d /etc/pki/nssdb -n "root CA cert" -t "CT,C,C" -i /tmp/certificate.pem
- Kopieren Sie das Stamm-CA-Zertifikat in das Verzeichnis /etc/pam_pkcs11/cacerts.
mkdir -p /etc/pam_pkcs11/cacerts
cp /tmp/certificate.pem /etc/pam_pkcs11/cacerts
- Erstellen Sie eine pkcs11-Hash-Datei.
chmod a+r certificate.pem
pkcs11_make_hash_link
- Kopieren Sie die erforderlichen Treiber und fügen Sie die benötigten Bibliotheksdateien zum Verzeichnis nssdb hinzu.
- Führen Sie die folgenden Befehle aus.
cp libcmP11.so /usr/lib/
mkdir -p /etc/pki/nssdb
certutil -N -d /etc/pki/nssdb
certutil -A -n rootca -i certificate.pem -t "CT,CT,CT" -d /etc/pki/nssdb
modutil -dbdir /etc/pki/nssdb/ -add "piv card 2.0" -libfile /usr/lib/libcmP11.so
- Stellen Sie sicher, dass das erwartete Zertifikat erfolgreich geladen wurde.
certutil -L -d /etc/pki/nssdb
Certificate Nickname
rootca
- Stellen Sie sicher, dass die erwarteten Bibliotheken erfolgreich hinzugefügt wurden.
modutil -dbdir /etc/pki/nssdb -list
Listing of PKCS #11 Modules
–-----------------------------------------------------------
1. NSS Internal PKCS #11 Module
slots: 2 slots attached
status: loaded
slot: NSS Internal Cryptographic Services
token: NSS Generic Crypto Services
slot: NSS User Private Key and Certificate Services
token: NSS Certificate DB
2. piv card 2.0
library name: /usr/lib/libcmP11.so
slots: There are no slots attached to this module
status: loaded
–-----------------------------------------------------------
- Konfigurieren Sie die pam_pkcs11-Bibliothek.
- Erstellen Sie eine pam_pkcs11.conf-Datei mit dem standardmäßigen Beispielinhalt.
mkdir /etc/pam_pkcs11
zcat /usr/share/doc/libpam-pkcs11/examples/pam_pkcs11.conf.example.gz |
tee /etc/pam_pkcs11/pam_pkcs11.conf
- Bearbeiten Sie die Datei /etc/pam_pkcs11/pam_pkcs11.conf, wie im folgenden Beispiel gezeigt.
use_pkcs11_module = mysc;
pkcs11_module mysc {
module = /usr/lib/libcmP11.so;
description = "LIBCMP11";
slot_num = 0;
ca_dir = /etc/pam_pkcs11/cacerts;
nss_dir = /etc/pki/nssdb;
cert_policy = ca;
}
...
use_mappers = cn, null;
...
mapper cn {
debug = false;
module = internal;
# module = /lib/pam_pkcs11/cn_mapper.so;
ignorecase = true;
mapfile = file:///etc/pam_pkcs11/cn_map;
# mapfile = "none";
}
- Bearbeiten Sie die Datei /etc/pam_pkcs11/cn_map , damit sie die folgende Zeile enthält.
ads-hostname -> ads-hostname
- Konfigurieren Sie die PAM-Authentifizierung.
- Bearbeiten Sie die Konfigurationsdatei /etc/pam.d/gdm-password. Platzieren Sie die Autorisierungszeile pam_pkcs11.so vor der Zeile common-auth, wie im folgenden Beispiel gezeigt.
#%PAM-1.0
auth requisite pam_nologin.so
auth required pam_succeed_if.so user != root quiet_success
auth sufficient pam_pkcs11.so
@include common-auth
auth optional pam_gnome_keyring.so
@include common-account
- Bearbeiten Sie für Ubuntu 16.04 die Konfigurationsdatei /etc/pam.d/lightdm. Platzieren Sie die Autorisierungszeile pam_pkcs11.so vor der Zeile common-auth, wie im folgenden Beispiel gezeigt.
#%PAM-1.0
auth requisite pam_nologin.so debug
auth sufficient pam_succeed_if.so user ingroup nopasswdlogin debug
auth [success=3 default=ignore} pam_pkcs11.so
@include common-auth
auth optional pam_gnome_keyring.so
auth optional pam_kwallet.so
- Bearbeiten Sie für Ubuntu 16.04 die Konfigurationsdatei /etc/pam.d/unity. Platzieren Sie die Autorisierungszeile pam_pkcs11.so vor der Zeile common-auth, wie im folgenden Beispiel gezeigt.
auth [success=3 default=ignore} pam_pkcs11.so
@include common-auth
auth optional pam_gnome_keyring.so
- Führen Sie die folgenden Befehle aus, um die Smartcard-Hardware und die auf der Smartcard installierten Zertifikate zu überprüfen.
pcsc_scan
pkcs11_listcerts
pkcs11_inspect
- Konfigurieren Sie den pcscd-Dienst, um nach dem Neustart des Systems automatisch zu starten.
Hinweis: Wenn der pcscd-Dienst nach dem Neustart des Systems nicht gestartet wird, schlägt die Erstanmeldung über pam_pkcs11 fehl.
- Bearbeiten Sie die Datei /lib/systemd/system/pcscd.service, indem Sie dem Abschnitt [Install] die Zeile
WantedBy=multi-user.target
hinzufügen.
Stellen Sie sicher, dass die bearbeitete Datei dem folgenden Beispiel ähnelt.
[Unit]
Description=PC/SC Smart Card Daemon
Requires=pcscd.socket
[Service]
ExecStart=/usr/sbin/pcscd --foreground --auto-exit
ExecReload=/usr/sbin/pcscd --hotplug
[Install]
WantedBy=multi-user.target
Also=pcscd.socket
- Aktivieren Sie den pcscd-Dienst.
systemctl enable pcscd.service
- Aktualisieren Sie die PC/SC Lite-Bibliothek auf Version 1.8.8 und verwenden Sie dabei die folgende Befehlsfolge.
apt-get install -y git autoconf automake libtool flex libudev-dev
git clone https://salsa.debian.org/rousseau/PCSC.git
cd PCSC/
git checkout -b 1.8.8 pcsc-1.8.8
./bootstrap
./configure --prefix=/usr --sysconfdir=/etc --libdir=/lib/x86_64-linux-gnu/
CFLAGS="-g -O2 -fstack-protector-strong -Wformat ->Werror=format-security"
LIBS="-ldl" LDFLAGS="-Wl,-Bsymbolic-functions -Wl,-z,relro" CPPFLAGS="-Wdate-time -D_FORTIFY_SOURCE=2"
make
make install
- Installieren Sie das Paket Horizon Agent mit aktivierter Smartcard-Umleitung.
sudo ./install_viewagent.sh -m yes
Hinweis: Sie müssen
Horizon Agent 7.9 oder höher installieren.
- Starten Sie Ihr System neu und melden Sie sich an.