文章目录
- 一、概述
- 1.1 标准模式
- 1.2 被动模式
- 二、FTP作用与工作原理
- 2.1 FTP的作用和模式以及通信方式
- 2.2 FTP工作原理与流程
- 2.2.1 主动模式的工作原理
- 2.2.2 被动模式的工作原理
- 2.2.3 主动和被动模式的区别
- 三、搭建和配置FTP服务
- 3.1 安装前准备工作
- 3.1.1 关闭防火墙和增强型安全功能
- 3.1.2 查看信息
- 3.2 开启FTP服务
- 3.2.1 切换服务配置目录并做备份
- 3.2.2 匿名用户案例
- 修改配置文件
- 匿名访问测试
- 3.3 设置用户模式登录
- 修改配置文件
- 重启服务
- 用户登录测试
- 修改匿名用户和本地用户的默认根目录
- 3.4 使用 user_list 用户列表文件
- 修改 user_list 文件
- 修改配置文件
- 四、总结
一、概述
FTP(File Transfer Protocol,文件传输协议)是典型的 C/S 架构的应用层协议,需要由服务端软件和客户端软件两个部分共同实现文件传输功能。FTP 客户端和服务器之间的连接是可靠的,面向连接的,为数据的传输提供了可靠的保证。FTP 使用 TCP 协议的 20 和 21 端口,其中 21 端口用于传输指令,20 端口用于传输数据。
FTP 支持两种模式:标准模式(Standard,即 Active,主动方式)和被动模式(Passive,即 PASV,被动方式)。标准模式下,FTP 客户端发送 PORT 命令到 FTP 服务器;被动模式下,FTP 客户端发送 PASV 命令到 FTP 服务器。
1.1 标准模式
FTP 客户端首先与 FTP 服务器的 TCP 21 端口建立连接,通过这个通道发送命令。当客户端需要接收数据时,在这个通道上发送 PORT 命令。PORT 命令包含了客户端用于接收数据的端口。在传送数据时,服务器通过自己的 TCP 20 端口发送数据,服务器必须与客户端建立一个新的连接用于数据传输。
1.2 被动模式
被动模式下,客户端与服务器建立控制通道的过程与标准模式类似。当客户端通过控制通道发送 PASV 命令时,FTP 服务器打开一个位于 1024 和 5000 之间的随机端口,并通知客户端在此端口上进行数据传输请求。然后,FTP 服务器通过这个端口传输数据,此时不再需要建立新的连接。
二、FTP作用与工作原理
2.1 FTP的作用和模式以及通信方式
FTP 是 Internet 上用来传送文件的协议。VSFTP(Very Secure FTP)是一种安全的 FTP 服务,采用 C/S 模式。FTP 服务器默认使用 TCP 协议的 20 和 21 端口与客户端通信,20 端口用于建立数据连接并传输文件数据,21 端口用于建立控制连接并传输 FTP 控制命令。
2.2 FTP工作原理与流程
FTP 数据连接分为主动模式和被动模式。FTP 会话包含控制通道和数据传输通道两种模式,主动模式和被动模式。以 FTP 服务器为参照,主动模式是服务器主动连接客户端进行数据传输,被动模式是服务器等待客户端连接进行数据传输。
2.2.1 主动模式的工作原理
FTP 客户端连接到 FTP 服务器的 21 号端口,发送用户名和密码,客户端随机开放一个端口(1024 以上),发送 PORT 命令到 FTP 服务器,告知服务器客户端采用主动模式并开放端口。FTP 服务器收到 PORT 主动模式命令和端口后,通过服务器的 20 号端口与客户端开放的端口连接,发送数据。
2.2.2 被动模式的工作原理
被动模式(PASV)工作原理如下:FTP 客户端连接到 FTP 服务器的 21 号端口,发送用户名和密码,然后发送 PASV 命令到 FTP 服务器。服务器在本地随机开放一个端口(1024 以上),并告知客户端这个端口号,客户端再连接到服务器开放的端口进行数据传输。
2.2.3 主动和被动模式的区别
主动模式是服务器主动发起数据连接,被动模式是服务器被动等待数据连接。主动和被动模式的选择通常取决于网络环境和防火墙配置。
三、搭建和配置FTP服务
3.1 安装前准备工作
3.1.1 关闭防火墙和增强型安全功能
systemctl stop firewalld # 关闭防火墙
systemctl disable firewalld # 开机时自动关闭防火墙
setenforce 0 # 临时关闭增强型安全功能
3.1.2 查看信息
yum info vsftpd
# 或者
rpm -q | grep vsftp
如果没有安装,使用 yum
安装:
yum install -y vsftpd
3.2 开启FTP服务
systemctl start vsftpd
systemctl enable vsftpd # 开机时自动启动 FTP 服务
3.2.1 切换服务配置目录并做备份
cd /etc/vsftpd/
cp vsftpd.conf vsftpd.conf.bak
3.2.2 匿名用户案例
设置匿名用户访问的 FTP 服务(最大权限)
修改配置文件
vim /etc/vsftpd/vsftpd.confanonymous_enable=YES # 开启匿名用户访问,默认已开启
write_enable=YES # 开放服务器的写权限(若要上传,必须开启),默认已开启
anon_umask=022 # 设置匿名用户所上传数据的权限掩码(反掩码)
anon_upload_enable=YES # 允许匿名用户上传文件,默认已注释,需取消注释
anon_mkdir_write_enable=YES # 允许匿名用户创建(上传)目录,默认已注释,需取消注释
anon_other_write_enable=YES # 允许删除、重命名、覆盖等操作,需添加
chmod 777 /var/ftp/pub/ # 为匿名访问 FTP 的根目录下的 pub 子目录设置最大权限,以便匿名用户上传数据
匿名访问测试
在 Windows 系统打开开始菜单,输入 cmd
命令打开命令提示符
# 建立 FTP 连接
ftp 192.168.78.22
# 匿名访问,用户名为 ftp,密码为空,直接回车即可完成登录
ftp> pwd # 匿名访问 FTP 的根目录为 Linux 系统的 /var/ftp/ 目录
ftp> ls # 查看当前目录
ftp> cd pub # 切换到 pub 目录
ftp> get 文件名 # 下载文件到当前 Windows 本地目录
ftp> put 文件名 # 上传文件到 FTP 目录
ftp> quit # 退出
3.3 设置用户模式登录
设置本地用户验证访问 FTP,并禁止切换到 FTP 以外的目录(默认登录的根目录为本地用户的家目录)。
修改配置文件
vim /etc/vsftpd/vsftpd.conflocal_enable=YES # 启用本地用户
anonymous_enable=NO # 关闭匿名用户访问
write_enable=YES # 开放服务器的写权限(若要上传,必须开启)
local_umask=077 # 可设置仅宿主用户拥有被上传的文件的权限(反掩码)
chroot_local_user=YES # 将访问禁锢在用户的宿主目录中
allow_writeable_chroot=YES # 允许被限制的用户主目录具有写权限
重启服务
systemctl restart vsftpd
用户登录测试
ftp 192.168.10.12
或者在浏览器中输入:
ftp://zhangsan@192.168.10.12
修改匿名用户和本地用户的默认根目录
anon_root=/var/www/html # anon_root 针对匿名用户
local_root=/var/www/html # local_root 针对系统用户
3.4 使用 user_list 用户列表文件
修改 user_list 文件
vim /etc/vsftpd/user_list
# 在末尾添加 zhangsan 用户
zhangsan
修改配置文件
vim /etc/vsftpd/vsftpd.confuserlist_enable=YES # 启用 user_list 用户列表文件
userlist_deny=NO # 设置白名单,仅允许 user_list 用户列表文件中的用户访问。默认为 YES,为黑名单,禁用列表中的用户
四、总结
- 什么是 FTP
- VSFTP 模式
- 工作原理模式:主动和被动
- FTP 端口和作用
- FTP 配置文件
- 实验匿名用户与本地用户登录权限和方式
- 用户黑白名单