vsFTPd:虚拟用户的每用户IP过滤

时间:2010-10-28 20:56:36

标签: linux ftp

我正在运行一个带有虚拟用户的vsFTPd FTP服务器(即用户存储在Berkeley DB中,并且在操作系统级别不存在)。用户通过/etc/pam.d/ftp验证:

%PAM-1.0

auth required pam_userdb.so db = / etc / vsftpd / vsftpd-virtual-user 需要帐户pam_userdb.so db = / etc / vsftpd / vsftpd-virtual-user

我想通过tcp_wrappers实现用户级IP过滤,例如:

/etc/hosts.deny中:

vsftpd: toto@10.10.10.10

(用户'toto')是一个玻璃用户。

但是,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?

2 个答案:

答案 0 :(得分:1)

不确定这是否有帮助,但请查看以下链接。

ftp://vsftpd.beasts.org/users/cevans/untar/vsftpd-2.3.2/EXAMPLE/PER_IP_CONFIG/README 基于此,您可能会找到适合您需求的解决方案......

答案 1 :(得分:0)

TCP包装器听起来可能是承诺但不起作用(长解释)但是您可以通过PAM实现相同级别的粒度。

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

# 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登录,同时允许其他用户从所有其他来源登录。