[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

bedingte Authentifikation via PAM



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi.

Ich sitze seit einiger Zeit an einem Problem mit der Authentifizierung via PAM.

Folgendes als Grundsituation: Ich habe einen Cyrus als IMAP und POP3 Server
laufen. Die Authentifikation prüft gegen eine MySQL DB, die unter anderem
regelt, ob dieser Account nur IMAPen, nur POPen oder beides darf. Sowohl für
IMAP als auch für POP existiert ein eigenes Flag. Für den IMAP sieht die PAM
also so aus:

- -- snip --
auth    required   /lib/security/pam_mysql.so  user=dblogin passwd=dbpasswort
host=localhost db=maildb table=user usercolumn=username passwdcolumn=password
crypt=1 where=imap_access=1

account  sufficent   /lib/security/pam_mysql.so  user=dblogin passwd=dbpasswort
host=localhost db=maildb table=user usercolumn=username passwdcolumn=password
crypt=1 where=imap_access=1
- -- snap --

Soweit funktioniert es super. Wenn der Account für IMAP zugelassen ist
(imap_access==1), dann darf der User eben drauf zugreifen, sonst nicht.

Jetzt möchte ich aber gern zusätzlich via Webmail IMAP für alle User zulassen.
Sprich, loggt sich ein nur-POP3-User über das Webfrontend ein soll er auch das
Webfrontend (systembedingt älteres Horde IMP) nutzen können, um auf seine Mails
zuzugreifen. Für den IMAP-Server sieht das ja so aus, das er eine Anfrage von
localhost bekommt.

Damit sind wir schon bei dem Problem angekommen. Wie kriege ich eine
Unterscheidung zwischen dem lokalen Login und dem Remote-Login hin?
Mein erste Ansatz ist das Benutzen von pam_rhosts_auth. Dann die Datei
/etc/auth.equiv angelegt, mit localhost und ggf. dem FQDN des Servers die Datei
füllen und gut ist. Das würde auch - zumindest theoretisch - funktionieren, wenn
ich die account Abfrage nur noch auf das Login und das Passwort beschränke. Das
sähe dann so aus:

- -- snip --
auth    sufficient	/lib/security/pam_rhosts_auth.so debug
auth	required	/lib/security/pam_mysql.so user=dblogin passwd=dbpasswort
host=localhost db=maildb table=user usercolumn=username passwdcolumn=password
crypt=1 where=imap_access=1

account  required   /lib/security/pam_mysql.so  user=dblogin passwd=dppasswort
host=localhost db=maildb table=user usercolumn=username passwdcolumn=password
crypt=1

- -- snap --

Da die Zugriffssteuerung via PAM aber über den Cyrus-SASL gesteuert wird hab ich
ein Problem, denn SASL setzt den Remote-Host nicht.

Kennt jemand eine Alternative? Wie kann ich via SASL ggf. den Host gegenprüfen?

Freu mich auf Antwort.

Beste Grüße
Holger

- --
Holger Librenz - http://www.librenz.com
Fachinformatiker Anwendungsentwicklung
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Darwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFFp9BcEKb1UsmnKEoRAnVQAKC0VSuucBDR+4Ykc32QkST3di3KUACeNqld
8EODLjPuEQy7CDaWVQ5QxSk=
=VNRh
-----END PGP SIGNATURE-----



Reply to: