Passkontrolle

Es gibt viele Wege, die Identität von Nutzern zu überprüfen. PAM unterstützt sie alle – vorausgesetzt, man findet das passende Erweiterungsmodul.

vorlesen Druckansicht
Lesezeit: 4 Min.
Von
  • Michael Riepe

Pluggable Authentication Modules (PAM) kommen in beinahe allen Unix-Systemen und -Derivaten zum Einsatz. Sie erlauben es dem Administrator, Einfluss auf den Anmeldeprozess zu nehmen, ohne die einschlägigen Programme wie login, sshd oder su zu ändern. Die drei Inkarnationen für Solaris, Linux und die BSD-Abkömmlinge befriedigen allerdings nur die Grundbedürfnisse. Daher ist eine Reihe zusätzlicher Module entstanden.

In einer wohlgeordneten IT-Umgebung sind Passwörter auf einem zentralen Server gespeichert. Mit dem aus der Mode gekommenen NIS kann das Betriebssystem normalerweise selbst umgehen. Für modernere Varianten wie LDAP oder Active Directory (AD) braucht es Unterstützung, die das Modul pam_ldap liefert (siehe iX-Link unten). Bei AD kann man mit pam_krb5 Kerberos 5 einsetzen. Sind die Home-Verzeichnisse der Anwender auf einem Windows- oder Samba-Server untergebracht, verifizieren pam_smb oder pam_smbmount nicht nur die Identität des Nutzers, sondern mounten auch gleich sein Verzeichnis.

RADIUS- und TACACS+-Server lassen sich mit pam_radius und pam_tacplus zur Authentifizierung nutzen. AuĂźerdem kann man mit pam_pop3 oder pam_imap einen E-Mail-Server als Authentifizierungssystem missbrauchen. Wer den Aufwand nicht scheut, kann eine DB2-, Informix-, MySQL-, Oracle-8i/9i- oder PostgreSQL-Datenbank verwenden.

Statt mit einem Passwort können sich Nutzer auf diverse andere Arten authentisieren. pam_x509 etwa verwendet X.509-Zertifikate. Den privaten Schlüssel trägt der Anwender auf einem USB-Stick oder anderem Speichermedium mit sich. Wem das zu unsicher ist, der kann eine OpenPGP-SmartCard und poldi verwenden. pam_p11 und pam_pkcs11 unterstützen kryptografische Token nach dem PKCS#11-Standard.

Java-fähige Mobilgeräte lassen sich mit pam_mobtok als Schlüsselgeneratoren einsetzen. Eine Software auf dem Gerät erzeugt aus dem Passwort des Nutzers einen Hash-Wert, der nach einer einstellbaren Zeitspanne – voreingestellt sind zwei Minuten – seine Gültigkeit verliert. Ein vergleichsweise schwaches Authentifizierungsverfahren bietet pam_blue: Es verwendet die MAC-Adresse eines beliebigen Bluetooth-Geräts als Schlüssel. Ist das Gerät ausgeschaltet oder außer Reichweite, schlägt der Login fehl.

Wer einen Fingerabdruckleser von UPEK besitzt – er ist unter anderem in Notebooks von IBM/Lenovo und Toshiba zu finden –, kann ihn unter Linux ebenfalls zur Authentifizierung nutzen. Ein geeignetes PAM-Modul steht beim Hersteller als Teil des Software Development Kits zum Download bereit – leider nur für 32-Bit-Systeme mit x86-kompatiblem Prozessor. Außerdem setzt es voraus, dass auf dem Rechner das BioAPI-Framework installiert ist. Schneller kommt man eventuell mit dem spezialisierten Modul pam_thinkfinger ans Ziel.

Einweg-Passwörter (One-Time Passwords, OTP) lassen sich mit pam_skey oder pam_sotp realisieren. Ersteres verwendet das in RFC 1760 dokumentierte S/KEY-Verfahren, Letzteres ein eigenes.

Single Sign-On für SSH erlaubt pam_ssh. Statt des Passworts muss der Nutzer beim Einloggen die Passphrase seines Private Key eintippen. Lässt der sich entschlüsseln, gestattet das Modul dem Anwender den Zutritt. Außerdem startet es das Programm ssh-agent und lädt es mit seinen Schlüsseln. Anschließend kann der Nutzer sich ohne erneute Passwortabfrage auf allen Systemen bewegen, die seinen Public Key besitzen.

Alternative Authentifizierungsmechanismen lassen sich mit der normalen Passwortabfrage kombinieren. Die Zeilen:

auth   sufficient   pam_thinkfinger.so
auth required pam_unix.so try_first_pass

in der PAM-Konfigurationsdatei (/etc/pam.conf oder /etc/pam.d/login) etwa erlauben – geeignete Hardware vorausgesetzt – eine Anmeldung per Fingerabdruck. Schreibt man stattdessen:

auth   required   pam_thinkfinger.so
auth required pam_unix.so

muss der Nutzer sowohl seinen Fingerabdruck abliefern als auch sein Passwort eingeben.

Module wie XAD erlauben es, zusätzliche Einschränkungen zu definieren – etwa bestimmte Nutzer von einem Dienst auszuschließen. Mit pam_shield, pam_siegho oder pam_tally lässt sich ein einfaches Intrusion Prevention System (IPS) einrichten. pam_shield blockiert IP-Adressen, von denen zu viele Login-Versuche ausgehen. pam_siegho und pam_tally zählen fehlgeschlagene Logins und sperren das betroffene Nutzerkonto, wenn die Zahl der Fehlversuche eine Schwelle überschreitet.

Wer weitere Funktionen benötigt, muss sein eigenes Modul schreiben. Administratoren, die lieber in Python programmieren als in C/C++, können auf pam_python zurückgreifen. Skripte lassen sich mit pam_extern einbinden. Sie müssen das Passwort von der Standardeingabe lesen und bei korrekter Eingabe mit exit 0 zurückkehren. pam_script arbeitet ähnlich, übergibt jedoch das Passwort in der Environment-Variablen PAM_AUTHTOK. In jedem Fall empfiehlt es sich, die Eigenentwicklung mit pamtester zu testen, bevor man sie einsetzt.

iX-Link (mr)