虚拟用户的特点是只能访问服务器为其提供的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中配置的虚拟用户进行连接了。