环境:CentOS 6.5 64位

yum install -y vsftpd

vim /etc/vsftpd/vsftpd.conf

#禁止匿名用户登录
anonymous_enable=NO
#允许本地用户登录
local_enable=YES
#具有写权限
write_enable=YES
#本地用户创建文件或目录的掩码

local_umask=022
dirmessage_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
#屏蔽本地所有用户浏览其他目录的权限
chroot_local_user=YES
#使用/etc/vsftpd/user_list配置文件
userlist_enable=YES
userlist_deny=NO
#pam模块
pam_service_name=vsftpd
#passive mode 连接端口

pasv_min_port=20000
pasv_max_port=20009
listen=YES

vim /etc/vsftpd/ftpusers 去掉ftp用户

#增加用户,不让他登录服务器

useradd upuser -s /sbin/nologin

#设置密码

passwd upuser

#设置家目录

usermod -d /data/upuser upuser

vim /etc/vsftpd/user_list

增加upuser一行

vim /etc/sysconfig/iptables

#ftp监听端口

-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

#Passive模式 随机打开的端口

-A INPUT -p tcp -m state --state NEW -m multiport --dports 20000:20009 -j ACCEPT

重启iptables

service iptables restart

service vsftpd restart


Ps:

被动和主动模式简介

Port模式FTP 客户端首先和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。

Passive模式在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。FTP服务器收到 Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接

userlist_enable与userlist_deny

  1. userlist_enable和userlist_deny两个选项联合起来针对的是:本地全体用户(除去ftpusers中的用户)和出现在user_list文件中的用户以及不在在user_list文件中的用户这三类用户集合进行的设置。

  2. 当且仅当userlist_enable=YES时:userlist_deny项的配置才有效,user_list文件才会被使用;当其为NO时,无论userlist_deny项为何值都是无效的,本地全体用户(除去ftpusers中的用户)都可以登入FTP

  3. 当userlist_enable=YES时,userlist_deny=YES时:user_list是一个黑名单,即:所有出现在名单中的用户都会被拒绝登入;

  4. 当userlist_enable=YES时,userlist_deny=NO时:user_list是一个白名单,即:只有出现在名单中的用户才会被准许登入(user_list之外的用户都被拒绝登入);另外需要特别提醒的是:使用白名单后,匿名用户将无法登入!除非显式在user_list中加入一行:anonymous