1.安装测试vsftpd
[root@centos8 ~]# yum -y install vsftpd #安装vsftpd
[root@centos8 ~]# systemctl enable vsftpd --now #启动服务并设置开机自启
[root@centos8 ~]# netstat -pantu | grep ftp #查看ftp服务端口
2.配置vsftpd
①.vsftpd安装后默认开启匿名功能
匿名FTP:用户不用输入密码即可登录FTP服务器,但无修改或上传文件权限;
②.用户直接使用Linux操作系统中的账户登录服务器,会被vsftpd拒绝;
③.在vsftpd里配置用户账号和密码登录服务器
[root@centos8 ~]# useradd myftp #新建用户可根据自己需要创建
[root@centos8 ~]# echo "123456" | passwd --stdin myftp #使用非交互模式给用户创建密码
Changing password for user myftp.
passwd: all authentication tokens updated successfully.
[root@centos8 ~]# mkdir /var/ftp/work1 #创建供FTP使用的文件目录
[root@centos8 ~]# chown -R myftp:myftp /var/ftp/work1/ #将目录属主、属组改为用于登录FTP的本地用户
[root@centos8 ~]# vim /etc/vsftpd/vsftpd.conf #修改配置文件
#主动模式配置参数
#设置以下参数:不许匿名登录、允许本地用户登录FTP服务器、指定FTP本地用户使用指定的文件目录
anonymous_enable=NO #不允许匿名登录FTP服务器
local_enable=YES #允许本地用户登录FTP服务器
local_root=/var/ftp/work01 #FTP本地用户使用的文件目录
#设置如下参数,限制用户只能访问自身的主目录。
chroot_local_user=YES #所有用户都被限制在其主目录
chroot_list_enable=YES #启用例外用户名单
chroot_list_file=/etc/vsftpd/chroot_list #例外用户名单
allow_writeable_chroot=YES
#被动模式:主动模式所需的所有参数 + 如下参数
#设置以下参数,配置FTP支持被动模式指定服务器地址,可供访问端口的范围,端口范围根据自身实际情况设置
listen=YES
listen_ipv6=NO
pasv_address=xx.xx.xx.xx #FTP服务器的IP地址
pasv_min_port=3000 #被动模式下的最小端口
pasv_max_port=3100 #被动模式下的最大端口
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list #允许指定用户登录 FTP 服务器,写在此文件下
userlist_deny=NO
:wq #保存退出
[root@centos8 ~]# touch /etc/ftp/chroot_list
#"chroot_list"文件是限制在主目录下的例外用户名单,若需要设置某用户可以访问其他主目录的限制时,可以将对应的用户写入该文件。注意:没有例外用户也必须要有“chroot_list”文件,内容可以为空。
[root@centos8 ~]# systemctl restart vsftpd #重启vsftpd是配置生效
3.设置通行规则
FTP模式 | 方向 | 协议 | 端口 | 源地址 |
主动模式 | 入站 | TCP | 20、21 | 0.0.0.0/0 |
被动模式 | 入站 | TCP | 21端口和配置文件中参数“pasv_min_port”和“pasv_max_port”之间的所有端口 | 0.0.0.0/0 |
4.防火墙设置
[root@centos8 ~]# firewall-cmd --permanent --add-port=20-21/tcp #打开21端口(FTP 命令端口),20端口(FTP 数据端口)
[root@centos8 ~]# firewall-cmd --permanent --add-port=3000-3100/tcp #打开(被动模式端口范围)
[root@centos8 ~]# firewall-cmd --reload #重新加载防火墙规则