虚拟用户的特点是只能访问服务器为其提供的FTP服务,而不能访问系统的其它资源。所以,如果想让用户对FTP服务器站内具有写权限,但又不允许访问系统其它资源,可以使用虚拟用户来提高系统的安全性。
在VSFTP中,认证这些虚拟用户使用的是单独的口令库文件(pam_userdb),由可插入认证模块(PAM)认证。
虚拟用户并非系统上的用户,但它必须映射到系统上的某个用户,虚用户的家目录属主和属组就这系统上的这个用户。并且每个虚用户有自己的用户名和密码,每个虚用户也可以单独设定对家目录的访问权限。使用文件的方式创建并依此建立一个数据库文件,PAM可以读取这个数据库文件完成用户认证目的。
安装配置步骤
1、安装相关包(vsftpd,lftp,db4-utils)
ftp服务端:vsftpd
ftp客户端:lftp
由文本文件生成数据库文件:db4-utils
2、创建虚拟用户口令文件并依此生成数据文件
3、在PAM认证中添加ftp
4、添加虚拟用户的权限配置文件
5、创建虚拟用户对应本地用户,并授权访问虚拟用户的家目录
6、根据以上内容修改vsftpd.conf总配置文件
7、启动服务
8、验证服务是否可用
1、安装相关包(vsftpd,lftp,db4-utils)
yum install vsftpd lftp db4-utils
(系统环境centos6.6)
2、创建虚拟用户口令文件并依此生成数据文件
cd /etc/vsftpd/ vi vuserpass.txt jdsfeftp hH+GRu22pCa14eXoifEpqA==
说明1:第一行是用户名,第二行是密码,可以添加多个用户和密码
说明2:/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS/logins.txt 是示例文档
说明3:rpm -ql vsftpd可以查看其他版本生成的示例文档的位置
说明4:openssl rand -base64 16 可生成随机密钥
db_load -T -t hash -f /etc/vsftpd/vuserpass.txt /etc/vsftpd/vftpuser.db chmod 600 vftpuser.db
说明:vftpuser.db就是PAM认证时读取的数据库文件
3、在PAM认证中添加ftp
vim /etc/pam.d/vsftpd auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser
说明1:/lib64/security/pam_userdb.so检查是否存在该文件,此处是64位系统,所以是/lib64/,32位系统在/lib/下。
说明2:db=/etc/vsftpd/vftpuser无需".db"后缀名
说明3:/etc/pam.d/vsftpd有示例文件在/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS/vsftpd.pam
4、添加虚拟用户的权限配置文件
mkdir -p /etc/vsftpd/vsftpd_user_conf cd /etc/vsftpd/vsftpd_user_conf
以虚拟用户名创建同名文件
vi jdsfeftp local_root=/home/apps/ftpsite/public #虚拟用户的家目录 write_enable=YES anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES
5、创建虚拟用户对应本地用户,并授权该本地用户访问虚拟用户的家目录
useradd -s /sbin/nologin virtual mkdir -p /home/apps/ftpsite/public chown -R virtual:virtual /home/apps/ftpsite/
6、根据以上内容修改vsftpd.conf总配置文件
vi /etc/vsftpd/vsftpd.conf guest_enable=YES #开启虚拟用户的功能 guest_username=virtual #虚拟用户对应的本地用户名 user_config_dir=/etc/vsftpd/vsftpd_user_conf #虚拟用户的权限配置目录 local_enable=YES #必须允许本地用户访问 pam_service_name=vsftpd #pam目录下的文件名pasv_enable=YES pasv_min_port=30000 pasv_max_port=30999 pasv_address=192.168.1.137 #注意修改被动IP,使用ifconfig查看 pasv_addr_resolve=yes listen=YES anonymous_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES userlist_enable=YES tcp_wrappers=YES
7、启动服务
/etc/init.d/vsftpd start #需要开启防火墙的话 #iptables -t filter -A INPUT -m state –state NEW -p tcp -m tcp –dport 30000:30999 –syn -j ACCEPT
8、验证服务
lftp ftp://IP -u jdsfeftp
输入密码:
ls
!ls /tmp
put /tmp/testfile
mkdir testdir
登录服务器查看文件
ls /home/apps/ftpsite/public