一、相关概念简介:
1、vsftpd:very secure FTP daemon,是一款开源FTP服务器软件,具有小巧轻快、安全易用等特点。
2、FTP主动模式:客户端向服务端发送数据端口的信息,由服务端主动连接客户端发送的数据端口。
3、FTP被动模式:服务端开启并发送数据端口的信息给客户端,由客户端连接服务端开启的数据端口,服务端被动接收连接。
二、部署FTP:
1、演示环境:
IP |
主机名 |
操作系统 |
192.168.0.202 |
ftp-server |
CentOS 7.9 |
说明:已关闭SELinux和firewalld
2、使用场景:
(1)FTP文件存放目录:/ftp
(2)管理员ftpadmin的权限:具有上传、下载、创建、删除和修改的所有权限
(3)普通用户ftpuser的权限:只能下载,不能上传、创建、删除和修改
3、安装vsftpd:
# yum install -y vsftpd
4、设置开机自启动:
# systemctl enable vsftpd
5、创建FTP管理员ftpadmin和普通用户ftpuser,并分别设置密码:
# useradd -s /sbin/nologin ftpadmin
# echo "asdf1234" | passwd --stdin ftpadmin
说明:密码中不能包含!、#、%、$和@等特殊字符
# yum -y install finger
# finger ftpadmin
# useradd -s /sbin/nologin ftpuser
# echo "123456" | passwd --stdin ftpuser
# finger ftpuser
6、修改配置文件/etc/shells:
# echo "/sbin/nologin" >> /etc/shells
# cat /etc/shells
7、创建FTP文件存放目录,创建测试文件,并按需求对目录授权:
# mkdir -pv /ftp/test
# touch /ftp/text.txt
# chown -R ftpadmin.ftpadmin /ftp
# ls -ldh /ftp
# ls -lh /ftp
# yum -y install tree
# tree /ftp
8、修改配置文件/etc/vsftpd/vsftpd.conf:
# cd /etc/vsftpd
# mv vsftpd.conf{,.bak}
# vim vsftpd.conf
#不允许匿名用户登录FTP
anonymous_enable=NO
#允许本地用户登录FTP
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
#限制本地用户在主目录
chroot_local_user=YES
#禁用例外用户名单
chroot_list_enable=NO
#本地用户登录FTP后的主目录
local_root=/ftp
allow_writeable_chroot=YES
userlist_deny=NO
#FTP以单机模式运行,并监听IPv4端口
listen=YES
#FTP不监听IPv6端口
listen_ipv6=NO
#将FTP的默认21端口修改为21021
listen_port=21021
pam_service_name=vsftpd
userlist_enable=YES
#FTP支持以被动模式运行
pasv_enable=YES
tcp_wrappers=YES
#如果FTP部署在公网,此IP必须为公网IP,不能为域名或内网IP
#此处演示部署在内网,此IP为内网IP
pasv_address=192.168.0.202
#配置FTP在被动模式下可供访问的端口范围,如下配置说明每次同时只能有5个客户端登录
pasv_min_port=21321
pasv_max_port=21325
说明:
(1)如果在类似阿里云ECS或腾讯云CVM上部署FTP,需要在安全组规则-->入站规则中放行如下端口:
- FTP主动模式:放行TCP/21021端口
- FTP被动模式:放行TCP/21021端口,还有TCP的pasv_min_port和pasv_max_port之间的所有端口
(2)查看去除注释行和空行的配置文件可用如下命令:
# grep -vE "^#|^$" /etc/vsftpd/vsftpd.conf
9、配置FTP白名单:
# mv user_list{,.bak}
# echo -e "ftpuser\nftpadmin" > user_list
# cat user_list
10、启动vsftpd:
# systemctl start vsftpd
# ss -tunlp | grep 21021
三、Xftp测试:
1、管理员ftpadmin:
说明:具有上传、下载、创建、删除和修改的所有权限
2、普通用户ftpuser:
说明:只能下载,不能上传、创建、删除和修改