vsftpd虚拟用户配置

虚拟用户的特点是只能访问服务器为其提供的FTP服务,而不能访问系统的其它资源。所以,如果想让用户对FTP服务器站内具有写权限,但又不允许访问系统其它资源,可以使用虚拟用户来提高系统的安全性。其配置步骤如下:

一、修改/etc/vsftpd/vsftpd.conf 文件

具体内容为:

[root@ /etc/vsftpd]cat vsftpd.conf
anonymous_enable=NO
listen=YES
listen_port=7722
################set pasv##################
pasv_enable=YES
pasv_min_port=9921
pasv_max_port=9927
#########################for vuser####################
guest_enable=YES
guest_username=www
pam_service_name=vsftpd.vuser
user_config_dir=/etc/vsftpd/vsftpd_user_conf
local_root=/data1
anon_umask=022
anon_other_write_enable=YES
######################################################
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
userlist_enable=YES
tcp_wrappers=YES
log_ftp_protocol=YES
dual_log_enable=YES
max_clients=200
max_per_ip=20

这里出于安全考虑我将默认监听端口21改成了7722 ,被动连接的端口为9921-9927 。这里所有的虚拟用户对应的系统真实用户是www ,对应的pam配置文件的名字为vsftpd.vuser 。虚拟用户对应的配置文件为/etc/vsftpd/vsftpd_user_conf 。

注:出于安全考虑vsftp.conf文件的权限需改成600,即chown 600  vsftpd.conf;

二、虚拟用户配置文件

现以新建test用户为例,在虚拟用户配置文件目录新建test文件,内容如下:

[root@ / ]cat /etc/vsftpd/vsftpd_user_conf/test
local_root=/data1/NFS/wwwroot
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

三、修改创建pam配置文件vsftpd.vuser

[root@ / ]cat /etc/pam.d/vsftpd.vuser
auth    required        /lib64/security/pam_userdb.so   db=/etc/vsftpd/vsftpd_login
account required        /lib64/security/pam_userdb.so   db=/etc/vsftpd/vsftpd_login

注: 出于安全考虑,这里还可以考虑增加Google Authenticator的pam模块。

四、生成密码文件

生成虚拟用户的db数据密码库,需要用到工具db_load,其在db4_utils包里,如下:

[root@ / ]whereis db_load
db_load: /usr/bin/db_load
[root@ / ]rpm -qf /usr/bin/db_load
db4-utils-4.7.25-17.el6.x86_64

通过命令生成密码数据文件,出于安全考虑,这里将其更改权限为600 

[root@ / ]cat  /etc/vsftpd/account.txt
test
123456
yang
aaabbbccc
zhu
pppef@123
[root@ / ]db_load -T -t hash -f /etc/vsftpd/account.txt /etc/vsftpd/vsftpd_login.db
[root@ / ]chmod 600 /etc/vsftpd/vsftpd_login.db

五、iptables配置

iptables中增加如下内容,并重启iptables 

-A INPUT -p tcp -m state --state NEW -m tcp --dport 7722 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 9921:9927 -j ACCEPT

增加完成后/etc/init.d/iptables restart生效。

以上五步都操作完成后,重启vsftpd 生效。至此,就可以通过vsftpd中配置的虚拟用户进行连接了。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注