2010-10-28 35 views
-1

我正在虚拟用户(即用户存储在Berkeley DB中,不存在于操作系统级别)运行vsFTPd FTP服务器。在使用者通过/etc/pam.d/ftp验证:vsFTPd:针对虚拟用户的每用户IP过滤

需要

%PAM-1.0

AUTH pam_userdb.so分贝=的/ etc/VSFTPD/vsftpd的虚拟用户 帐户pam_userdb.so分贝需要=在/ etc/VSFTPD/vsftpd的虚拟用户

我想要实现经由tcp_wrappers的一个用户级的IP滤波,用于离:

/etc/hosts.deny中:

vsftpd: [email protected] 

(用户'toto')是vitrual用户。

然而,TOTO可以从10.10.10.10登录到FTP服务器:

Status: Connecting to 10.10.10.10:21... 
Status: Connection established, waiting for welcome message... 
Response: 220 "FTP server" 
Command: USER toto 
Response: 331 Please specify the password. 
Command: PASS ******** 
Response: 230 Login successful. 
Status: Connected 

如何让VSFTPD的虚拟用户与tcp_wrappers的工作?如何调试对tcp_wrappers的系统调用以确保vsftpd将正确的用户名传递给tcp_wrappers?

回答

0

TCP包装可能听起来约定,但将无法正常工作(长说明),但你可以通过实现相同粒度PAM。

例如,如果您的vsFTPd是使用PAM支持(ldd/usr/sbin/vsftpd | grep pam)编译并替换帐户行以使用pam访问控制,您可以找到PAM的FTP conf文件。

# vi /etc/pam.d/vsftpd 
account include password-auth (comment this line out) 
# add the following line 
account required  pam_access.so 

然后,你可以编辑/etc/security/access.conf中,创造更复杂的规则来定制您的需求,即

+ : restricted_username : 192.168.1.10 
+ : ALL EXCEPT restricted_username : ALL 
- : ALL : ALL 

以上规则将允许用户“restricted_username”只登陆来自该特定IP,同时允许其他用户从所有其他来源登录。