[Sysadmins] vsftpd + pam-mysql auth problem

Александр firmord на front.ru
Сб Янв 22 10:38:20 UTC 2011


попробую описать процесс:
имеем 530 ошибку - проблема в логине/пароле и/или правах.
проверяем пошагово.
mysql, БД vsftpd:
---
CREATE TABLE IF NOT EXISTS `users` (
   `id` int(11) NOT NULL auto_increment,
   `name` char(128) character set utf8 collate utf8_bin NOT NULL,
   `passwd` char(128) character set utf8 collate utf8_bin NOT NULL,
   PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ;
+таблица для логов, но в аутентификации она не участвует. опустим.
в БД ходит юзер vsftpd с паролем LRqwQ
---
pam.d/vsftpd:
#%PAM-1.0
session     optional     pam_keyinit.so     force revoke
auth required /lib/security/pam_mysql.so user=vsftpd passwd=LRqwQ 
host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd 
crypt=0 sqllog=1 logtable=logs logmsgcolumn=msg logusercolumn=user 
logpidcolumn=pid loghostcolumn=host logrhostcolumn=rhost 
logtimecolumn=logtime verbose=1 debug

account required /lib/security/pam_mysql.so user=vsftpd passwd=LRqwQ 
host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd 
crypt=0 sqllog=1 logtable=logs logmsgcolumn=msg logusercolumn=user 
logpidcolumn=pid loghostcolumn=host logrhostcolumn=rhost 
logtimecolumn=logtime verbose=1 debug
---
заходим (пытаемся) на ФТП пользователем test с plain-text паролем 111
логи mysql queries:
---
89 Connect     vsftpd на localhost on vsftpd
89 Init DB     vsftpd
89 Query       SELECT passwd FROM users WHERE name = 'test'
89 Query       INSERT INTO logs (msg, user, host, rhost, pid, logtime) 
VALUES ('AUTHENTICATION FALURE (FIRST_PASS)', 'test', '(unknown)', 
'192.168.хх.хх', '1', NOW())
---
логи PAM secure:
---
Jan 22 11:49:33 nanoRED vsftpd: pam_mysql - option verbose is set to "1"
Jan 22 11:49:33 nanoRED vsftpd: pam_mysql - option debug is set to ""
Jan 22 11:49:33 nanoRED vsftpd: pam_mysql - pam_mysql_close_db() called.
Jan 22 11:49:33 nanoRED vsftpd: pam_mysql - pam_sm_authenticate() called.
Jan 22 11:49:33 nanoRED vsftpd: pam_mysql - pam_mysql_open_db() called.
Jan 22 11:49:33 nanoRED vsftpd: pam_mysql - pam_mysql_open_db() returning 0.
Jan 22 11:49:33 nanoRED vsftpd: pam_mysql - pam_mysql_check_passwd() called.
Jan 22 11:49:33 nanoRED vsftpd: pam_mysql - pam_mysql_format_string() called
Jan 22 11:49:33 nanoRED vsftpd: pam_mysql - pam_mysql_quick_escape() called.
Jan 22 11:49:33 nanoRED vsftpd: pam_mysql - SELECT passwd FROM users 
WHERE name = 'test'
Jan 22 11:49:33 nanoRED vsftpd: pam_mysql - pam_mysql_check_passwd() 
returning 6.
Jan 22 11:49:33 nanoRED vsftpd: pam_mysql - pam_mysql_sql_log() called.
Jan 22 11:49:33 nanoRED vsftpd: pam_mysql - pam_mysql_format_string() called
Jan 22 11:49:33 nanoRED vsftpd: pam_mysql - pam_mysql_quick_escape() called.
Jan 22 11:49:33 nanoRED last message repeated 3 times
Jan 22 11:49:33 nanoRED vsftpd: pam_mysql - INSERT INTO logs (msg, user, 
host, rhost, pid, logtime) VALUES ('AUTHENTICATION FALURE (FIRST_PASS)', 
'test', '(unknown)', '192.168.', '1', NOW())
Jan 22 11:49:33 nanoRED vsftpd: pam_mysql - pam_mysql_sql_log() returning 0.
Jan 22 11:49:33 nanoRED vsftpd: pam_mysql - pam_mysql_converse() called.
Jan 22 11:49:33 nanoRED vsftpd: pam_mysql - pam_sm_authenticate() 
returning 3.
Jan 22 11:49:33 nanoRED vsftpd: pam_mysql - pam_mysql_release_ctx() called.
Jan 22 11:49:33 nanoRED vsftpd: pam_mysql - pam_mysql_destroy_ctx() called.
Jan 22 11:49:33 nanoRED vsftpd: pam_mysql - pam_mysql_close_db() called.
---
проблем с соединением с БД нет, данные читаются.
пароль выбирается из таблицы.
верно-ли из логов не ясно, но если повторить запрос напрямую, выбирается 
верно.
интересное сообщение тут: 
http://forum.altlinux.org/index.php/topic,5038.msg71717.html#msg71717

что дальше попробовать?
---
vftpd.log
---
Sat Jan 22 11:49:33 2011 [pid 2] CONNECT: Client "192.168."
Sat Jan 22 11:49:33 2011 [pid 2] FTP response: Client "192.168.", "220 
(vsFTPd 2.2.1)"
Sat Jan 22 11:49:33 2011 [pid 2] FTP command: Client "192.168.", "USER test"
Sat Jan 22 11:49:33 2011 [pid 2] [test] FTP response: Client 
"192.168.88.253", "331 Please specify the password."
Sat Jan 22 11:49:33 2011 [pid 2] [test] FTP command: Client 
"192.168.88.253", "PASS <password>"
Sat Jan 22 11:49:33 2011 [pid 1] [test] FAIL LOGIN: Client "192.168.88.253"
Sat Jan 22 11:49:34 2011 [pid 2] [test] FTP response: Client 
"192.168.88.253", "530 Login incorrect."
Sat Jan 22 11:49:35 2011 [pid 2] FTP command: Client "192.168.", "QUIT"
Sat Jan 22 11:49:35 2011 [pid 2] FTP response: Client "192.168.", "221 
Goodbye."
---
на папки /home/ftp и ниже даны права 777 для отладки
---
vsftpd.conf:
---
listen=YES

#анонимам
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES

#логи
xferlog_enable=YES
log_ftp_protocol=YES

connect_from_port_20=YES
nopriv_user=novsftpd

#запираем юзеров в их папках
chroot_local_user=YES

pam_service_name=vsftpd

#говорим, что входящие - гости с именем ...
guest_enable=YES
guest_username=ftp_virtual

secure_chroot_dir=/home/ftp

#пользовательские конфиги
user_config_dir=/usr/local/etc/vsftpd/user_conf

local_root=/home/ftp/$USER
user_sub_token=$USER
virtual_use_local_privs=YES

---


21.01.2011 21:39, Александр пишет:
> разбираться будем с проблемой?
> имею мнение, что проблема с дистрибутивом ШС 5.0.2.
> если кто поопытней сможет проверить работоспособность связки
> vsftpd+pam-mysql буду оч благодарен.
> или как-то иначе, но надо решать.
> модуль pam-mysql - pam-mysql-0.7-alt10.RC1.i586.rpm
>
>
> 15.01.2011 17:26, Александр пишет:
>> Добрый день,
>> проблема состоит в невозможности аутентификации в vsftpd через pam-mysql
>> при хранении юзеров и паролей в БД.
>> как прийти к пониманию, на чём затык?
>> пароль не криптованные и криптованные не проходят.
>> в vsftpd.log
>> [login] fail login
>>
>> подобная тема уже была, но решения, я так понимаю, не нашли:
>> http://lists.altlinux.org/pipermail/sysadmins/2009-December/031524.html
>> проблема не в NSS.
>>
>> --
>> С Уважением, Александр
>> _______________________________________________
>> Sysadmins mailing list
>> Sysadmins на lists.altlinux.org
>> https://lists.altlinux.org/mailman/listinfo/sysadmins
>

-- 
С Уважением, Александр


Подробная информация о списке рассылки Sysadmins