一、概述
    1、工作模式:
        主动模式:服务器主动对客户端发起连接
        被动模式:服务器开启相应端口,等待客户端发起连接
    2、主动模式端口: 控制 21  传输数据 20
    3、被动模式端口: 随机

二、安装
    1、服务名:vsftpd
    2、主配置文件:/etc/vsftpd/vsftpd.conf
    3、验证方式:
        匿名访问
        本地用户访问
        虚拟用户访问
    4、软件:
        服务器端 vsftpd 客户端 ftp
三、匿名用户

anonymous_enable=YES:启用匿名访问
anon_umask=022:匿名用户所上传文件的权限掩码(无此项,默认600)
anon_root=/var/ftp:匿名用户的FTP根目录
anon_upload_enable=YES:允许上传文件(服务器权限和目录权限均需要设置)
anon_mkdir_write_enable=YES:允许创建目录
anon_other_write_enable=YES:开放其他写入权
anon_max_rate=0:限制最大传输速率(字节/秒)

四、本地用户

local_enable=YES:是否启用本地系统用户
local_umask=022:本地用户所上传文件的权限掩码
local_root=/var/ftp:设置本地用户的FTP根目录
chroot_local_user=YES:是否将用户禁锢在主目录
local_max_rate=0:限制最大传输速率(字节/秒)

常用的全局配置项:

listen_address=192.168.4.1:设置监听的IP地址
listen_port=21:设置监听FTP服务的端口号
write_enable=YES:是否启用写入权限
download_enable=YES:是否允许下载文件
max_clients=0:限制并发客户端连接数
max_per_ip=0:限制同一IP地址的并发连接数
Pasv_min_port=50000  将客户端的数据连接端口改在
Pasv_max_port=60000      50000—60000之间)

访问限制:

userlist_enable=YES:是否启用user_list列表文件
userlist_deny=YES:是否禁用user_list中的用户
Userlist_deny=NO;

其它安全选项:

connect_timeout=60
accept_timeout=60
data_connection_timeout=300
idle_session_timeout=300
ftpd_banner=xxx和banner_file=/path/file
tcp_wrappers=YES


五、访问控制

userlist_enable=YES
userlist_deny=YES时
出现在/etc/vsftpd/user_list文件里的用户,会被拒绝访问FTP服务器
userlist_enable=YES
userlist_deny=NO
只允许出现在/etc/vsftp/user_list文件里的用户登录FTP服务器
/etc/vsftpd/ftpusers
出现在该文件里的用户,全部拒绝访问FTP服务器,不管user_list做任何设置

六、虚拟用户    
    特点:
        a、减少系统用户的数据,提高系统安全性
        b、根据不同的用户,设置不同的访问权限
创建账号数据:
1.建立虚拟FTP用户的帐号数据库文件
2.创建FTP根目录及虚拟用户映射的系统用户
3.建立支持虚拟用户的PAM认证文件
添加虚拟用户支持
4.在vsftpd.conf文件中添加支持配置
5.为个别虚拟用户建立独立的配置文件
启动服务并测试
6.重新加载vsftpd配置
7.使用虚拟FTP账户访问测试

[root@localhost]# vi /etc/vsftpd/vusers.list    #建立虚拟用户
zhangsan
123
lisi
456
[root@localhost]# cd /etc/vsftpd/
[root@localhost vsftpd]# db_load -T -t hash -f vusers.list vusers.db    #建立虚拟FTP用户的帐号数据库文件
[root@localhost vsftpd]# file vusers.db    #查看数据库文件
vusers.db: Berkeley DB (Hash, version 8, native byte-order)
[root@localhost vsftpd]# chmod 600 /etc/vsftpd/vusers.*
[root@localhost vsftpd]# ls -lh /etc/vsftpd/vusers.*
-rw------- 1 root root 12K 02-26 08:51 /etc/vsftpd/vusers.db
-rw------- 1 root root  18 02-26 08:48 /etc/vsftpd/vusers.list

2.创建FTP根目录及虚拟用户映射的系统用户

[root@localhost]# useradd -d /var/ftproot -s /sbin/nologin virtual
[root@localhost]# chmod 755 /var/ftproot/

3.建立支持虚拟用户的PAM认证文件

[root@localhost]# vi /etc/pam.d/vsftpd.vu
#%PAM-1.0
auth       required     pam_userdb.so db=/etc/vsftpd/vusers
account    required     pam_userdb.so db=/etc/vsftpd/vusers

4.在vsftpd.conf文件中添加支持配置

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
……
local_enable=YES
write_enable=YES
anon_umask=022
guest_enable=YES
guest_username=virtual
pam_service_name=vsftpd.vu

5.为不同的虚拟用户建立独立的配置文件
在vsftpd.conf文件中添加用户配置目录支持
         user_config_dir=/etc/vsftpd/vusers_dir
    为用户mike、john建立独立的配置目录及文件
         配置文件名与用户名相同

[root@localhost ~]# mkdir /etc/vsftpd/vusers_dir/
[root@localhost ~]# cd /etc/vsftpd/vusers_dir/
[root@localhost vusers_dir]# vi zhangsan
anon_upload_enable=YES
anon_mkdir_write_enable=YES
[root@localhost vusers_dir]# touch lisi