文件传输协议FTP

FTP工作原理

  1. FTP介绍

文件传输协议:File Transfer Protocol ,基于C/S架构

数据传输格式:二进制(默认)、文本

双通道协议:命令和数据连接

  1. 两种工作模式:从服务器角度

1️⃣ 主动(port style):​服务器主动连接

命令(控制):客户端随机Port --->服务器21/tcp

数据:客户端随机Port<---服务器:20/tcp

2️⃣ 被动模式(PASV style):客户端主动连接

命令(控制): 客户端随机Port --->服务器21/tcp

数据:客户端随机Port--->服务器随机port/tcp

3️⃣ 范例:服务器被动模式数据端口

227 Entering Passive Mode (0,0,0,0,183,57).

在FTP中,当出现上述消息时,它通常意味着FTP客户端正在尝试与FTP服务器建立数据连接,而不是控制连接(控制连接用于发送FTP命令和响应)。

括号内的数字 (0,0,0,0,183,57)是被动模式(PASV模式)的IP地址和端口编码。FTP的被动模式允许FTP服务器告知FTP客户端哪个端口它应该侦听以便接收和发送数据。

数字解读:

前四个数字(0.0.0.0)通常代表FTP服务器的IP地址。但在某些情况下服务器会出于安全原因反回0.0.0.0。这通常表示客户端应该使用它用于控制连接的同一IP来连接数据端口

后两个数字(183,57)实际上是一个端口号。具体的说,随机端口号=183*256+57=46905

  1. FTP状态码:

1XXX:信息,125:数据链接打开

2XXX:成功类状态, 200:命令OK,230:登陆成功

3XXX:补充类,331:用户名OK

4XXX:客户端错误,425:不能打开数据连接

5XXX:服务器错误,530:不能登录

  1. 用户认证

匿名用户:ftp,anonymous,对应linux用户ftp

系统用户:Linux用户

虚拟用户:特定服务的专用用户,独立的用户/密码文件

vsftpd服务常见配置

1️⃣ 命令端口

listen_port=21默认值为21

2️⃣ 主动模式端口

connect_from_port_20=YES主动模式端口为20

ftp_data_port=20(默认)指定主动模式的端口

3️⃣ 被动模式端口范围

linux ftp客户端默认使用被动模式

window ftp客户端默认使用主动模式

--端口范围会影响FTP客户端的并发数

pasv_min_port=6000 #设置被动模式使用的最小端口号

pasv_max_port=6200 #设置被动模式使用的最大端口号

4️⃣ 使用当地时间

use_localtime=YES #使用当地时间(默认为NO,使用MGT)

5️⃣ 匿名用户登录

anonymous_enable=YES #支持匿名用户,CentOS8默认不允许匿名

no_anon_password=YES #匿名用户跳过口令检测,默认为NO

6️⃣ 匿名用户上传

anon_upload_enable=YES #匿名上传,须注意文件系统权限

anon_mkdir_write_enable=YES #匿名创建目录

注意:需要开启文件系统的访问权限,不能给FTP根目录写权限,只能给子目录写权限,否则会报错。

anon_world_readable_only=YES #只能下载全部读的文件,默认YES

anon_umask=0333 #指定匿名上传文件的umask,默认0777,注意0333中的0不能省略

anon_other_write_enble=YES #可删除和修改上传的文件,默认为NO

7️⃣ 指定匿名用户上传的文件的默认所有者和权限

chown_uploads=YES #默认为NO

chown_username=www

chown_upload_mode=0644

8️⃣ Linux系统用户

local_enable=YES #是否允许linux用户登录

write_enable=YES #允许linux用户上传文件

local_umask=022/ #指定系统用户上传的文件的默认权限

9️⃣ 将系统用户映射为指定的guest用户

guest_enable=YES #所有系统用户都用映射为guest用户

guest_username=ftp #配合上面选项才生效,指定guest用户

local_root=/ftproot guest用户登录所在目录

  1. 禁锢系统用户

chroot_local_user=YES #禁锢系统用户,默认NO,即不禁锢

# 禁锢或不禁锢特定系统用户在家目录中,与上面设置功能相反

chroot_list_enable=YES #默认是NO

chroot_list_file=/etc/vsftpd/chroot_list #默认值

  • 当chroot_local_user=YES和chroot_list_enable=YES时,则chroot_list中用户不禁锢,即白名单
  • 当chroot_local_user=NO和chroot_list_enable=YES时,则chroot_list中用户禁锢,即黑名单
  1. FTP日志

# wu-ftp日志:默认启用

xferlog_enable=YES #启用记录上传和下载日志,默认YES

xferlog_std_format=YES使用wu-ftp日志格式,默认为YES

xferlog_file=/var/log/xferlog #可自动生成

# vsftpd日志,默认不启用

dual_log_enable=YES #使用vsftpd日志格式,默认不启用

vsftpd_log_file=/var/log/vsftpd.log #可自动生成,默认路径

  1. 是否启用控制用户登录的列表文件

userlist_enable=YES #默认

userlist_deny=YES #黑名单,不提示口令,NO为白名单

userlist_file=/etc/vsftpd/user_list #默认文件路径

  1. vsftpd服务指定用户身份运行

nopriv_user=nobody #默认值

  1. 连接数限制

max_clients=0 #最大并发连接数,如果超出,会报错:421 There are too many connected users,olease try later.

  1. 每个IP同时发起的最大连接数

max_per_ip=0 #每个IP同时发起的最大连接数

  1. 传输速率,单位 :字节/秒

anon_max_rate=0 #匿名用户最大传输

local_max_rate=0 #本地用户最大传输

  1. 连接时间

connect_timeout=60 #主动模式数据连接超时时长

accept_timeout=60 #被动模式数据连接超时时长

data_connecttion_timeout=300 #数据连接无数据传输超时时长

idle_session_timeout=60 #无命令操作超时时长

  1. 优先以文本传输,注:不建议使用文本方式,可能会导致二进制文件内容损坏

ascli_upload_enable=YES

ascli_download_enable=YES

posted on 2024-10-24 09:50  杨小杨~  阅读(8)  评论(0编辑  收藏  举报

导航