本例子将说明怎样以"虚拟用户virtual users"假设vsftpd和PAM

由 neptunes 在 04-23-2003 20:14 发表:

本例子将说明怎样以"虚拟用户virtual users"假设vsftpd和PAM

本例子将说明怎样以"虚拟用户virtual users"假设vsftpd和PAM

虚拟用户是指该用户并不是该服务器的实际用户。虚拟用户将更加安全因为该用户将仅仅限定于FTP登陆。虚拟用户通常使用于需要开放一些文件给非认证用户(公共用户)。

步骤 1) 创建虚拟用户数据库

我们将使用pam_userdb来认证虚拟用户。这需要建立一个保存用户名/密码的数据库文件。要创建该文件,你首先建立一个文本文件其中用户名和密码隔行排列。本目录中提供了例子"logins.txt",其中tom用户的密码是foo,用户fred的密码是bar。

然后你需要以root登陆系统,创建实际的数据库文件:

db_load -T -t hash -f logins.txt /etc/vsftpd_login.db

(这需要先已安装Berkeley db program)。

这将创建/etc/vsftpd_login.db文件.当然,你需要对该文件设定访问权限:

chmod 600 /etc/vsftpd_login.db

要更多的数据库维护信息,你可以参考"Berkeley DB"的相应资料:

http://www.sleepycat.com/docs/utility/index.html

步骤 2) 创建PAM使之使用你的数据库

参照例子vsftpd.pam:

auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login

account required /lib/security/pam_userdb.so db=/etc/vsftpd_login

这将告诉PAM使用你的新数据库文件进行用户认证。复制该文件到PAM目录,一般是/etc/pam.d/

cp vsftpd.pam /etc/pam.d/ftp

步骤 3) 建立虚拟用户的访问目录

useradd -d /home/ftpsite virtual

ls -ld /home/ftpsite

drwx------ 3 virtual virtual 4096 Jul 30 00:39 /home/ftpsite

这样,我们创建了虚拟用户virtual,并设定其主目录为"/home/ftpsite"。让我们再做一些操作

cp /etc/hosts /home/ftpsite

chown virtual.virtual /home/ftpsite/hosts

步骤 4) 创建你的vsftpd.conf配置文件

参考本目录中的例子

anonymous_enable=NO

local_enable=YES

这将禁止匿名FTP登陆并开放非匿名登陆。

write_enable=NO

anon_upload_enable=NO

anon_mkdir_write_enable=NO

anon_other_write_enable=NO

考虑安全,所有写操作都被禁止

chroot_local_user=YES

这将限制虚拟用户只能访问我们前面设定的/home/ftpsite虚拟FTP目录

guest_enable=YES

guest_username=virtual

guest_enable非常重要,它用以激活虚拟用户功能!guest_username将所有虚拟用户都映射到真实用户"virtual"上,同时也限定了虚拟用户的主目录是/home/ftpsite

listen=YES

listen_port=10021

将使vsftpd工作于"standalone"模式。同时也使vsftpd在非标准端口10021监听FTP请求

pasv_min_port=30000

pasv_max_port=30999

这将设定passive FTP请求的端口范围,这对你配置防火墙非常有用。

复制vsftpd.conf文件到:

cp vsftpd.conf /etc/

步骤 5) 启动vsftpd

进入vsftpd的binary文件目录

./vsftpd

步骤 6) 测试

如在本机测试:

ftp localhost 10021

Connected to localhost (127.0.0.1).

220 ready, dude (vsFTPd 1.1.0: beat me, break me)

Name (localhost:chris): tom

331 Please specify the password.

Password:

230 Login successful. Have fun.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> pwd

257 "/"

ftp> ls

227 Entering Passive Mode (127,0,0,1,117,135)

150 Here comes the directory listing.

226 Transfer done (but failed to open directory).

ftp> size hosts

213 147

ftp>

注解:

1.密码是"foo".

2.不要担心看到"failed to open directory"。这是因为目录/home/ftpsite没有设定为world readable(

Published At
Categories with 服务器类
Tagged with
comments powered by Disqus