
CentOS7下搭建vsftpd服务器(本地用户模式)
1、首先yum方式安装vsftpd
yum install vsftpd


2、修改vsftpd.conf配置文件
cd /etc/vsftpd/
cp vsftpd.conf vsftpd.conf_default
#修改下列参数的值
anonymous_enableNO #禁止匿名登录FTP服务器
local_enableYES #允许本地用户登录FTP服务器
listenYES #监听IPv4 sockets
#listen_ipv6YES #关闭监听IPv6 sockets或者改为NO
chroot_local_userYES #全部用户被限制在主目录
chroot_list_enableYES #启用例外用户名单
chroot_list_file/etc/vsftpd/chroot_list #指定例外用户列表文件列表中用户不被锁定在主目录
allow_writeable_chrootYES
以上配置可以直接用下面命令进行替换修改
sed -i s/anonymous_enableYES/anonymous_enableNO/ /etc/vsftpd/vsftpd.conf
sed -i s/listenNO/listenYES/ /etc/vsftpd/vsftpd.conf
sed -i s/listen_ipv6YES/listen_ipv6NO/ /etc/vsftpd/vsftpd.conf
sed -i s/#chroot_local_userYES/chroot_local_userYES/ /etc/vsftpd/vsftpd.conf
sed -i s/#chroot_list_enableYES/chroot_list_enableYES/ /etc/vsftpd/vsftpd.conf
sed -i s/#chroot_list_file/chroot_list_file/ /etc/vsftpd/vsftpd.conf
echo "allow_writeable_chrootYES" >> /etc/vsftpd/vsftpd.conf

3、创建ftp用户 例如yuanfan
useradd -d /data/FTP -s /sbin/nologin yuanfan
passwd yuanfan
并设置密码

4、启动vsftpd服务并设置开机自启动
systemctl enable vsftpd
systemctl start vsftpd

若有防火墙需要防火墙添加ftp服务
5、客户端登录测试
ftp 172.16.30.200

输入正确的用户名密码提示530错误
解决办法vi /etc/pam.d/vsftpd
注释掉这一行
#auth required pam_shells.so
然后重启vsftpd服务


这时再进行登录提示

再手动在/etc/vsftpd/目录下创建一下chroot_list文件即可
touch /etc/vsftpd/chroot_list后重新登录可以正常登录了


在FTP服务器上可以下客户端上传上来的文件

6、要实现用户能够切换用户家目录
在FTP服务器这边将用户加到/etc/vsftpd/chroot_list文件中
可以man vsftpd.conf查看chroot_list帮助说明

echo yuanfan > /etc/vsftpd/chroot_list然后重启vsftpd服务
如下图所示就可以切换家目录了(可以看出用户切换家目录风险较高)

7、被动模式限定端口
echo "pasv_enableYES">> /etc/vsftpd/vsftpd.conf
echo "pasv_min_port30001">> /etc/vsftpd/vsftpd.conf
echo "pasv_max_port30010">> /etc/vsftpd/vsftpd.conf

抓包分析可以看到传输端口已经被限制在30001-30010端口范围内

另外ftp登录过程是明文传输的抓包可以看到用户名与密码
8、设置成主动模式
删除上一步中被动模式添加的配置改成主动模式的配置
pasv_enableNO
port_enableYES
connect_from_port_20YES(默认有一行)

服务端要开放20端口
firewall-cmd --add-port20/tcp --permanent
firewall-cmd --reload
如下图所示Linux客户端使用主动模式需要关闭防火墙
passive命令切换成主动模式


抓包可以看到传输端口为20
9、安全加固
1)禁止显示 banner 信息
#ftpd_bannerWelcome to blah FTP service.
取消注释进行修改即可
2)限制 FTP 登录用户
在 ftpusers 和 user_list 文件中列举的用户都是不允许访问 FTP 服务的用户(例如 root、bin、daemon 等用户)。除了需要登录 FTP 的用户外其余用户都应该添加至此拒绝列表中
3)修改监听地址和默认端口
修改 VSFTP 配置文件 vsftpd.conf设置监听 1.1.1.1 地址的2121 端口
listen_address1.1.1.1
isten_port2121
