Pluggable Authentication Module (PAM)
PAM ist ein sehr flexibler Authentifizierungsmechanismus für Dienste auf UNIX-Rechnern. automatische Konfiguration von PAMpam_unix.so
Mit diesem Modul wird die lokale Authentifizierung eines Benutzers durchgeführt.
Beispiel: password sufficient pam_unix.so nullok use_authtok md5 shadow remember=20 pam_env.so
administratives Festlegen von Variablen: auth required pam_env.so
in der Datei TMOUT DEFAULT=3600
Danach sollte bei Neuanmeldung eines Benutzers die Variable pam_limits.so
Das Modul stellt bestimmte Limits pro Benutzer ein. session required pam_limits.so
dann editiere die Datei www-data soft nofile 8128 www-data hard nofile 8128 Überprüfe die gemachten Einstellungen mit: su www-data - ulimit -n ulimit -a exit
pam_tally.so
Benutzer nach 5 Fehlversuchen für 60 Minuten sperren: auth required pam_tally.so onerr=fail deny=5 unlock_time=3600 no_magic_root
pam_tally2.so
Benutzer nach 5 Fehlversuchen für 10 Minuten sperren: auth required pam_tally2.so deny=5 even_deny_root unlock_time=600
Dadurch werden jeweils alle die es 5 mal versucht haben(auch root) für 10 Minuten lahmgelegt. Das Modul geht übrigens nach der UID nicht nach dem Namen. pam_tally --user meinBenutzer --reset pam_mkhomedir.so
Bei erstmaliger Anmeldung eines Benutzers wird das HOME-Verzeichnis automatisch angelegt und berechtigt. pam-auth-update --package mkhomedir
Dabei werden die Einstellungen aus dem Verzeichnis session required pam_mkhomedir.so skel=/etc/skel umask=0022 oder auch einfach: session required pam_mkhomedir.so
Achtung! in debian muss der Eintrag manchmal in die pam_access.so
Verweigere allen Benutzern den Login, die nicht in der Gruppe account required pam_access.so
in der Datei /etc/security/access.conf muss dann dazu folgender Eintrag gemacht werden: -:ALL EXCEPT users :ALL pam_cracklib.so
Einstellungen für die Vergabe eines neuen Passworts werden wie folgt festgelegt: password requisite pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1
Die einzelnen Einstellungen sind dabei:
Wenn man mal ein Passwort ändern möchte ohne Komplexitätsregel (z.B. beim root) wurde die obige Zeile deaktiviert. Jedoch trat dann der folgende Fehler auf: passwd root passwd: Authentication information cannot be recovered passwd: password unchanged
die Lösung war dann das temporäre Löschen von password required pam_unix.so use_authtok nullok md5
Nach der erfolgten Passwortänderung habe ich die Zeile und den Wert wieder eingetragen. pam_passwdqc.so
Das Modul setzt strenge Regeln für die Passwortvergabe durch.(lästig) password requisite pam_passwdc.so random=50,only Passwortpolicy entschärfen: password requisite pam_passwdqc.so retry=3 min=0,0,0,0,0 pam_wheel.so
Erlaube allen Mitgliedern der Gruppe auth required /lib/security/pam_wheel.so use_uid group=wheel trust pam_winbind.so
Winbind erfordert umfangreiche Konfigurationsarbeiten. Deshalb siehe dazu: Winbind
Wichtig ist in jedemfall der Eintrag account sufficient pam_winbind.so use_first_pass /etc/pam.d/common-auth: auth sufficient pam_winbind.so use_first_pass /etc/pam.d/common-session: session sufficient pam_winbind.so use_first_pass mkhomedir Die Anmeldeeinschränkung auf Mitglieder von ein paar NT-Gruppen ( hier myNTGroup1 und myNTGroup2 ) kann wie folgt festgelegt werden: auth sufficient pam_winbind.so use_first_pass require_membership_of=myNTGroup1,myNTGroup2 oder ein anderes Beispiel: auth sufficient pam_winbind.so use_first_pass cached_login warn_pwd_expire winbind per Programm konfigurieren und anschalten: #suse: pam-config -a --winbind #debian: pam-auth-update --package winbind --force winbind per Programm wieder deaktivieren: pam-config -d --winbind
pam_mount.so
mountet bei Benutzeranmeldungen z.B. persönliche Freigaben auf cifs- oder nfs-Servern. ... <volume fstype="cifs" server="myfilesrv" path="userhome$/%(USER)" mountpoint="~/myuserhome" options="sec=krb5" /> </pam_mount>
Es z.B. wird hier ein Verzeichnis pam_ldap.so
ldap erfordert umfangreiche Konfigurationsarbeiten. Deshalb siehe dazu: ldap pam_motd.so
Zeigt bei erfolgreicher Benutzeranmeldung einen Text an. session optional pam_motd.so
wenn man eine andere Messagdatei benutzen will so kann man diese so konfigurieren: session optional pam_motd.so motd=/etc/motd
Im Gegensatz zeigt die Datei Welcome on \l users currently logged in : \u
pam_echo.so
Das Modul zeigt bei erfolgreicher Benutzeranmeldung den Text einer Datei an. session optional pam_echo.so file=/etc/echo.txt
Das Modul kann verschiedene Variablen auflösen. Beispieldatei Hallo remotehost %H lokaler Host %h servicename %s terminal %t remoteuser %U localuser %u
pam_nologin.so
dieses Modul verhindert bei Vorhandensein der Datei account required pam_nologin.so
pam_listfile.so
dieses Module überprüft eine vorgegebene Textdatei mit Benutzernamen und erlaubt oder verweigert dann den Zugriff auf einen Dienst oder die Anmeldung. auth required pam_listfile.so item=user sense=deny file=/etc/ftpd.users.deny onerr=succeed
die in der Datei auth sufficient pam_listfile.so item=ruser sense=allow file=/etc/suauth.users.nopass onerr=fail
pam_umask.so
dieses Modul setzt ähnlich wie session optional pam_umask.so umask=0002
Das ist nützlich, wenn man mit verschiedenen Accounts an seinem Rechner rumhantiert, stellt jedoch in Firmenumgebungen ein Risiko dar. session optional pam_umask.so umask=0000 Wenn man paranoid ist, kann man die Dateien der einzelnen Benutzer so sehr schützen dass sie jeweils nur noch selbst rankommen: session optional pam_umask.so umask=0077
dieses PAM-Modul wird gern in /etc/profile überschrieben und bleibt dann somit unwirksam.
pam_securetty.so
dieses Modul verbietet das direkte interaktive Anmelden von Root an einem Rechner. auth required pam_securetty.so
pam_time.so
Modul für die zeitliche Einschränkung von Benutzern und Diensten account required pam_time.so
dann Datei #erlaube dem Benutzer doedel nur am Montag von 08Uhr bis 16Uhr sich per login anzumelden: login ; tty* & !ttyp* ; doedel;Mo0800-1600 #erlaube dem Benutzer pitti NICHT sich am Wochenende per login oder ssh anzumelden: login & ssh ; * ; pitti ; !Wd0000-2400 #erlaube ihm alles nur innerhalb der Woche von täglich 07Uhr bis 20Uhr *;*;pitti;Wk0700-2000 #verhindere alle Anmeldungen von normalen Benutzern außer root immer täglich von 20Uhr abends bis 07Uhr morgens #auch root soll sich nicht mehr von 23Uhr abends bis 06Uhr morgens anmelden dürfen. *;*;!root;!Al2000-0700 *;*;root;!Al2300-0600
pam_group
nehme den Benutzer myansible in der Woche von 07:00 bis 21:00 in die Gruppe sudo auf wenn die Anmeldung über den sshd aus kommt, ... sshd;*;myansible;Wk0700-2100;sudo
pam_succeed_if.soBenutzer Paul die Anmeldung verweigern: auth required pam_succeed_if.so user !=paul quiet_success Nur Benutzer der Gruppe wheel dürfen sich am Modul anmelden: auth required pam_succeed_if.so quiet user ingroup wheel Nur Benutzer mit UID größer 1000 dürfen sich am Modul anmelden: auth requisite pam_succeed_if.so uid >= 1000 quiet pam_opie.so
Modul für die Einmalige Authentifizierung. pam_exec.soModul zum ausführen eines Skripts session optional pam_exec.so /usr/local/bin/mailme.sh |