PAM - Pluggable Authentication Modules
/etc/security/ Einstellung für die Sicherheit des Systems
Jeder Eintrag einer solchen Konfigurationsdatei besteht aus mindestens drei Elementen. Es beginnt mit einem Modultyp gefolgt von einem Kontroll-Flag. An dritter Stelle steht der Name des Moduls und optional dahinter weitere Argumente.
Modultyp - Kontroll-Flag - Modul
Modultyp | Beschreibung | unterstützte Funktion | Beschreibung |
---|---|---|---|
auth | Authentisierungsmanagement | pam_authenticate() pam_setcred() | Benutzerauthentisierung Setzen, Erneuern oder Löschen von Berechtigungen |
account | Zugangsmanagement | pam_acct_mgmt() | Entscheidung, ob Zugang gestattet oder verweigert wird (z.B. zeitliches Zugangslimit) |
session | Sitzungsmanagement | pam_open_session() pam_close_session() | z.B. Dauer einer Sitzung kontrollieren /protokollieren |
password | Passwort-Management | pam_chauthtok() | Kontrolle der Passwortänderung |
password required pam_cracklib.so retry=3 minlen=8 difok=3 password required pam_unix.so nullok use_authtok md5 shadow
wenn ein neues Passwort erstellt wir, prüft "pam_cracklib.so" das Passwort auf Schwachstellen (z.B. Wörterbuchtest).
retry=3 bei Fehlschlag des Testes hat der User noch zwei weitere Möglichkeiten hat ein besseres Passwort zu erstellen.
minlen=8 mindestlänge von 8 Zeichen
difok=3 mind. 3 Zeichen müssen im neuen Passwort geändert sein
nullok Benutzer darf ein Passwort von einem leeren Passwort ändern, anderenfalls wird ein Null-Passwort als Account-Sperre betrachtet.
use_authtok Dieses Argument weist das Modul an, den Benutzer nicht zur Eingabe eines neuen Passworts aufzufordern. Stattdessen wird jedes Passwort akzeptiert, das von vorherigen Passwort-Modulen verwendet wurde. Auf diese Weise müssen allen neuen Passwörter den pam_cracklib.so Test für sichere Passwörter durchlaufen, bevor sie akzepiert werden.
md5
shadow Update des Passwortes erfolgt in der shadow-Passwortdatei
Wie und in welcher Weise die aufgeführten Funktionen eines Moduls relevant sind, kontrollieren die sogenannten Kontroll-Flags:
control-flag | Beschreibung |
---|---|
required | Modul muss zwingend durchlaufen werden, auch bei nicht erfolgreichem Durchlaufen werden alle folgenden Module bearbeitet (damit ist nicht ersichtlich, welches Modul den Zugriff verweigert). |
requisite | Bei einem Fehler (nicht erfolgreiches Durchlaufen) wird sofort zum Anwendungsprogramm (z.B. login) zurückgekehrt, ohne die folgenden Module abzuarbeiten. Ansonsten wird in der Abarbeitung der Kette fortgefahren. |
optional | Bei Erfolg werden trotzdem alle nachfolgenden Module abgearbeitet. |
sufficient | Bei Erfolg des Moduls wird sofort zur Anwendung zurückgekehrt, die Abarbeitung der anderen Module ist nicht notwendig. |
wichtige PAM-Module | |
---|---|
pam_access | eingeschränkte Zugangsberechtigungen (Benutzer <--> Terminal) Konfigurationsdatei: /etc/security/access.conf |
pam_group | Zuweisung zu Benutzergruppen entsprechend bestimmter Kriterien (Benutzer, Zeit, Terminal). Konfigurationsdatei: /etc/security/group.conf |
pam_rhosts_auth.so | Unterbindung des Remote Zugriffs durch .rhosts Dateien |
pam_console.so | Räumt normalen Benutzern zusätzliche Rechte ein.(ACHTUNG: Dieses Modul sollte in abzusichernden Systemen NIE benutzt werden) |
pam_tally.so | Sperrung des Zugangs nach x fehlgeschlagenen Login-Versuchen |
pam_shield.so | Intrusion Prevention System (IPS) |
pam_siegho.so | Intrusion Prevention System (IPS) |
libxad.so | Einschränkungen der User definieren |
pam_wheel.so | Begrenzung des su Kommandos auf kleine Benutzergruppe |
xpam_time.so | zeitgesteuerte Zugangskontrolle |
pam_env.so | nicht veränderliche Umgebungsvariablen |
pam_pwdb.so | Authentifikation |
mod_auth_pam | PAM Modul für apache Webserver |
pam_ftp.so | Anonymous Zugriff (testet Passwort auf "@"-Zeichen) |
pam_php.so | PAM Unterstützung für PHP |
pam_ssh.so | Single Sign-on mit SSH, Passphrase des private Key wird abgefragt |
Server-basierte Authentifizierung | |
pam_krb5.so | MIT Kerberos 5 |
pam_ldap.so | LDAP Server (Lightweight Directory Access Protocol) |
pam_radius.so | Radius (Remote Authentication Dial-In User Service) |
pam_tacplus.so | TACACS+ Server |
pam_smb.so | pam_smbmount.so | Windows oder SambaServer |
pam_pop.so | pam_imap.so | eMail Server |
Datenbank-basierte Authentifizierung | |
pam_pgsql.so | Postgres SQL |
pam_mysql.so | MySQL |
pam_informix.so | Informix SQL |
pam_ibmdb2.so | IBM DB2 SQL |
pam_oci8.so | Oracle 8i | 9i |
Authentifizierung mit Kryptografische Token | biometrische Geräte | |
pam_x509.so | X509 Zertifikat |
poldi.so | OpenPGP Smartcard |
pam_pkcs11.so | Krypto Token auf Smartcard oder USB KryptoStick |
pam_p11.so | Krypto Token auf Smartcard oder USB KryptoStick |
UPEK SDK | Fingerabdruckleser von UPEK |
pam_blue.so | Authentifizierung mit der MAC Adresse einen Bluetooth Gerätes |
pam_mobtok.so | Schlüsselgenerator auf Java-fähigen Mobilgerät |
BioAPI | Linux BioAPI |
pam_thinkfinger.so | Fingerabdruckleser |
One Time Passwort (OTP) nach RFC1760 | |
pam_skey.so | S/KEY Einwegpasswort |
pam_sotp | S/KEY Einwegpasswort |
Anmeldung per Fingerprintreader
#/etc/pam.d/login auth sufficient pam_thinkfinger.so auth requisite pam_unix.so try_first_pass
Anmeldung mit Fingerprint und Passwort
#/etc/pam.d/login auth requisite pam_thinkfinger.so auth requisite pam_unix.so
SSH Loginversuche begrenzen, zwischen den Loginversuchen läuft ein Counter von 30 sek.
#/etc/pam.d/sshd auth required pam_tally.so onerr=fail lock_time=30 deny=5 unlock_time=600
lock_time=30 - 30 Sekunden zwischen den Loginversuchen
deny=5 - nach 5 Fehlversuchen wird der Account gesperrt für
unlock_time=600 - 10 Minuten
Wenn ein Benutzer Fehllogins hat, kann der Status mit pam_tally
abfragen werden.