环境: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
- userlist_enable和userlist_deny两个选项联合起来针对的是:本地全体用户(除去ftpusers中的用户)和出现在user_list文件中的用户以及不在在user_list文件中的用户这三类用户集合进行的设置。
- 当且仅当userlist_enable=YES时:userlist_deny项的配置才有效,user_list文件才会被使用;当其为NO时,无论userlist_deny项为何值都是无效的,本地全体用户(除去ftpusers中的用户)都可以登入FTP
- 当userlist_enable=YES时,userlist_deny=YES时:user_list是一个黑名单,即:所有出现在名单中的用户都会被拒绝登入;
- 当userlist_enable=YES时,userlist_deny=NO时:user_list是一个白名单,即:只有出现在名单中的用户才会被准许登入(user_list之外的用户都被拒绝登入);另外需要特别提醒的是:使用白名单后,匿名用户将无法登入!除非显式在user_list中加入一行:anonymous