|
本例子将说明怎样以"虚拟用户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(我们可能通过设定anon_world_readable_only=NO改变这一情况,但是这样做会安全一些)。
=====================================
原文: ftp://vsftpd.beasts.org/users/cevans/untar/vsftpd-1.1.3/EXAMPLE/
翻译: Crazypalm
主页: http://www.c4mcr.shef.ac.uk/~ganglu
===================================== |
|