生产环境搭建ftp并配置虚拟用户

虚拟用户的特点是只能访问服务器为其提供的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