PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : pam_mysql und cyrus-imapd/ vsftpd



eBoy
24.10.09, 22:54
Hallo Zusammen,

ich sitze hier nun schon eine ganze Weile an der Einrichtung meines FTP- und Mail-Servers. Soweit hat alles geklappt, aber beim Thema Authentifizierung am Mail- oder FTP-Server per pam_mysql verzweifle ich gerade...

Ich habe jeweils einen Beispieleintrag vorgenommen und versuche nun schon länger mich einzuloggen.

Die Anfragen des vsftpd kommen an der Datenbank auf jeden Fall mal an:

091024 23:43:57 22 Connect <DB-USER>@localhost on <DB>
22 Init DB <DB>
22 Query SELECT password FROM ftp WHERE username = '<USER>'
091024 23:43:58 22 Query SELECT password FROM ftp WHERE username = '<USER>'
22 Quit

Leider bekomme ich im FTP-Client lediglich ein Antwort: 530 Login incorrect. zurück.


Folgendes findet sich in /var/log/secure:

Oct 24 23:43:57 mail1 vsftpd: pam_mysql - option verbose is set to "1"
Oct 24 23:43:57 mail1 vsftpd: pam_mysql - pam_mysql_close_db() called.
Oct 24 23:43:57 mail1 vsftpd: pam_mysql - pam_sm_authenticate() called.
Oct 24 23:43:57 mail1 vsftpd: pam_mysql - pam_mysql_open_db() called.
Oct 24 23:43:57 mail1 vsftpd: pam_mysql - pam_mysql_open_db() returning 0.
Oct 24 23:43:57 mail1 vsftpd: pam_mysql - pam_mysql_check_passwd() called.
Oct 24 23:43:57 mail1 vsftpd: pam_mysql - pam_mysql_format_string() called
Oct 24 23:43:57 mail1 vsftpd: pam_mysql - pam_mysql_quick_escape() called.
Oct 24 23:43:57 mail1 vsftpd: pam_mysql - SELECT password FROM ftp WHERE username = '<USER>'
Oct 24 23:43:57 mail1 vsftpd: pam_mysql - pam_mysql_check_passwd() returning 6.
Oct 24 23:43:57 mail1 vsftpd: pam_mysql - pam_mysql_sql_log() called.
Oct 24 23:43:57 mail1 vsftpd: pam_mysql - pam_mysql_sql_log() returning 0.
Oct 24 23:43:57 mail1 vsftpd: pam_mysql - pam_mysql_converse() called.
Oct 24 23:43:57 mail1 vsftpd: pam_mysql - pam_mysql_open_db() called.
Oct 24 23:43:57 mail1 vsftpd: pam_mysql - pam_mysql_check_passwd() called.
Oct 24 23:43:57 mail1 vsftpd: pam_mysql - pam_mysql_format_string() called
Oct 24 23:43:57 mail1 vsftpd: pam_mysql - pam_mysql_quick_escape() called.
Oct 24 23:43:57 mail1 vsftpd: pam_mysql - SELECT password FROM ftp WHERE username = '<USER>'
Oct 24 23:43:58 mail1 vsftpd: pam_mysql - pam_mysql_check_passwd() returning 6.
Oct 24 23:43:58 mail1 vsftpd: pam_mysql - pam_mysql_sql_log() called.
Oct 24 23:43:58 mail1 vsftpd: pam_mysql - pam_mysql_sql_log() returning 0.
Oct 24 23:43:58 mail1 vsftpd: pam_mysql - pam_sm_authenticate() returning 7.
Oct 24 23:43:58 mail1 vsftpd: pam_mysql - pam_mysql_release_ctx() called.
Oct 24 23:43:58 mail1 vsftpd: pam_mysql - pam_mysql_destroy_ctx() called.
Oct 24 23:43:58 mail1 vsftpd: pam_mysql - pam_mysql_close_db() called.


Mir ist nur nicht klar was ich von pam_mysql_check_passwd() returning 6. halten soll :confused:

Das Passwort habe ich in der Datenbank bereits im Klartext und verschlüsselt (password, encrypt, md5) abgelegt, leider alles ohne Erfolg.

Vorlage war folgendes HowTo:
http://www.howtoforge.de/howto/virtual-hosting-mit-vsftpd-und-mysql-auf-debian-etch/

Da unter CentOS 5.4 keine pam_mysql.so verfügbar war, habe ich das entsprechende RPM heruntergeladen und installiert. Da es zur Datenbankabfrage kommt, kann das ja nicht so verkehrt gewesen sein, denke ich mal.


Bei einem Login an cyradm mit dem bereits angelegten User in der DB (cyrus, in /etc/imapd.conf als admin eingetragen) wird ebenfalls die Datenbankanfrage durchgeführt. Der Login scheitert mit folgender Meldung:

cyradm -u cyrus localhost
IMAP Password:
Login failed: authentication failure at /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/Cyrus/IMAP/Admin.pm line 119
cyradm: cannot authenticate to server with as cyrus

Meine pam.d/vsftpd sieht aktuell wie folgt aus:

#%PAM-1.0
auth required pam_mysql.so user=<DB-USER> passwd=<GEHEIM> host=127.0.0.1 db=<DB> table=ftp usercolumn=username passwdcolumn=password crypt=0 verbose=1

account required pam_mysql.so user=<DB-USER> passwd=<GEHEIM> host=127.0.0.1 db=<DB> table=ftp usercolumn=username passwdcolumn=password crypt=0 verbose=1

crypt hatte ich bereits auf 2 (laut HowTo), 1 und nun 0. Auch bei den Zeilen an sich hatte ich zuvor bereits variiert...


Für Hilfe oder Tipps wäre ich sehr dankbar!!!



Grüße

eBoy
24.10.09, 23:40
Ich fasse es nicht... Ich sitz hier schon so lange dran und kaum habe ich den Beitrag geschrieben, schon komme ich Schritt für Schritt weiter... ...

Anpassung in der vsftpd.conf

guest_enable=YES
#local_root=/home/vsftpd/$USER
local_root=$USER

Im pam-d-File habe ich wieder crypt=1 eingetragen und das Passwort in der PW erneut per encrypt verschlüsselt.


Insgesamt bin ich die Anleitung und einige ergoogelten Foreneinträge durchgegangen und inzwischen funktionieren beide Logins. Ich verstehe aber nicht, weshalb es zuvor nicht funktioniert hatte. Rein die Authentifizierung sollte zuvor schonmal in der Form konfiguriert gewesen sein. Wie es aussieht war das Hauptproblem die Verschlüsselung des Passwortes mittels encrypt() anstatt (wie im HowTo angegeben) mittels password().