网络安全服务基础Windows--第10节-FTP主动与被动模式

概述
将某台计算机中的⽂件通过⽹络传送到可能相距很远的另⼀台计算机中,是⼀项基本的⽹络应⽤,即⽂件传送。
⽂件传送协议FTP (File Transfer Protocol)是因特⽹上使⽤得最⼴泛的⽂件传送协议。
FTP是⼀个⽼早的⽹络协议,⾸次标准化发表在1971年的RFC 114中,后来的主要版本是RFC 959,发布于1985年。这个版本为FTP的操作和扩展奠定了基础,⾄今仍是FTP通信的基础。
FTP提供交互式的访问,允许客户指明⽂件的类型与格式(如指明是否使⽤ASCII码),并允许⽂件具有存取权限(如访问⽂件的⽤户必须经过授权,并输⼊有效的⼝令)。
FTP屏蔽了各计算机系统的细节,因⽽适合于在异构⽹络中任意计算机之间传送⽂件。
在因特⽹发展的早期阶段,⽤FTP传送⽂件约占整个因特⽹的通信量的三分之⼀,⽽由电⼦邮件和域名系统所产⽣的通信量还要⼩于FTP所产⽣的通信量。只是到了1995年,万维⽹WWW的通信量才⾸次超过了FTP。

⼯作原理:两种链接
控制连接
端⼝:默认使⽤TCP 21端⼝。
作⽤:控制连接在整个FTP会话期间⼀直保持打开,⽤于传送诸如登录、改变⼯作⽬录、列出⽬录内
容等FTP命令。
特点:此连接始终开放,以保证客户端和服务器之间可以随时交换FTP控制信息
数据连接
端⼝:在主动模式下,默认使⽤TCP 20端⼝。在被动模式下,端⼝号由服务器动态指定,并通知给客户端。
作⽤:数据连接仅在需要传输⽂件(包括上传和下载)或⽬录列表时建⽴。⼀旦⽂件传输任务完成,数据连接就会被关闭。
特点:数据连接的⽣命周期较短,只在需要时建⽴,并在⽤完后⽴即关闭。

 

 控制连接和数据连接 分离设计的优势:

1. 命令和数据分离
FTP通过单独的控制连接来处理命令和响应,确保了在进⾏⽂件传输的同时还可以接收和执⾏新的命令。这意味着⽤户可以在⼀个⽂件正在传输时发送额外的FTP命令(例如中断传输、开始另⼀个传输等),⽽不会⼲扰到当前的数据传输。
2. 提⾼效率
由于数据连接只在需要传输⽂件时才建⽴,并在传输完成后关闭,这种动态连接的管理⽅式可以更⾼效地使⽤⽹络资源。控制连接保持开放状态,以便随时准备接收新的指令,⽽不必每次传输数据时重新进⾏整个登录和认证过程。
3. 增强兼容性和配置灵活性
使⽤两种连接的⽅法提⾼了FTP的灵活性,允许服务器和客户端更好地管理⽹络配置如防⽕墙和NAT(⽹络地址转换)。例如,在被动模式中,客户端可以主动连接到服务器上的动态端⼝,这在客户端背后有防⽕墙时尤其有⽤。
4. 安全性考虑
将命令和数据传输分离也提⾼了FTP的安全性,因为控制连接可以加密命令传输,避免敏感信息(如⽤户名和密码)在⽹络中明⽂传输。尽管传统FTP本身不包括加密,但其设计允许通过扩展(如FTPS或与SSH隧道结合的SFTP)来提供这种安全性。
5. 错误处理和控制
在两个独⽴的通道中,⼀个⽤于命令和控制,另⼀个⽤于数据传输,使得错误处理更加简洁明了。如果数据传输出现问题,控制连接仍然保持开放,⽤户可以通过发送控制命令来解决问题或调整设置,⽽不会影响到控制流本身。

⼯作模式 

FTP可以在两种模式下⼯作:主动模式和被动模式

 

 1. 主动模式(Active Mode): 默认

客户端从任意⾮特权端⼝(端⼝号⼤于1023)发送FTP命令到服务器的命令端⼝,即21端⼝。
当服务器收到命令后,它从端⼝20发起⼀个到客户端命令所来⾃的端⼝的连接。
FTP客户端⾸先先会随机开启⼀个⼤于1024的端⼝N(1032)进⾏监听,并与服务端的21号端⼝建⽴连接,
然后开放N+1端⼝(1033)进⾏监听, 同时时向服务器发出PORT 1033命令通知服务器⾃⼰的在接收数据时所使⽤的端⼝号。
服务器在传输数据的时候,服务端通过⾃⼰的20端⼝去连接客户端的1033端⼝。当不需要传输时,此连接会⾃动断开。

 2. 被动模式(Passive Mode):

客户端从任意⾮特权端⼝连接到服务器的命令端⼝。
然后服务器会在客户端命令中指定的端⼝上监听数据连接,⽽不是从服务器的20端⼝发起连接。
FTP客户端随机开启⼀个⼤于1024的端⼝X向服务器的21端⼝发起连接,同时会开启X+1端⼝
然后向服务器发送PASV命令,通知服务器⾃⼰处于被动模式。
服务器收到命令后,会开放⼀个⼤于1024的端⼝Y进⾏监听,然后⽤PORT Y命令通知客户端,⾃⼰的数据端⼝是Y。
客户端收到命令后,会通过X+1号端⼝连接服务器的端⼝Y,然后在两个端⼝之间进⾏数据传输
这样就能使防⽕墙知道⽤于数据连接的端⼝号,⽽使数据连接得以建⽴

被动模式更适⽤于客户端位于防⽕墙后的情况,因为它允许客户端初始化所有连接,解决了主动模式中服务器⽆法穿越客户端防⽕墙的问题。

客户机/服务器模式 

FTP采⽤客户机/服务器架构,其中:
FTP服务器:运⾏FTP服务软件,负责响应客户端的请求,管理⽂件的存储和访问。
FTP客户端:可以是任何⽤来发起连接和⽂件传输请求的软件,如命令⾏⼯具、Web浏览器或专⽤ 的FTP客户端应⽤。

 连接⽅式

FTP可以通过多种⽅式进⾏连接:
1. 命令⾏⽅式连接:
使⽤如 ftp 这样的命令⾏⼯具,在⼤多数操作系统中都内置此类⼯具,允许⽤户执⾏FTP命令
来传输⽂件。
2. Web⽅式连接:
通过Web浏览器直接访问FTP服务器,输⼊FTP的URL(如 ftp://ftp.example.com ),
浏览器会展示服务器上的⽂件和⽂件夹。
3. 本地安装FTP客户端软件连接:
使⽤专⻔的FTP客户端软件,如FileZilla、WinSCP等,这些客户端提供⽤户友好的界⾯和丰富的配置选项,⽀持⽂件的上传、下载和同步。

 登录方式

1. 匿名登录:
⽤户可以通过使⽤ anonymous 作为⽤户名进⾏登录,通常邮箱地址作为密码(尽管不⼀定会被真正验证)。这种⽅式允许⽤户访问公开的⽂件夹和⽂件,⼴泛⽤于公共⽂件的下载。
2. 授权帐户登录:
⽤户需要提供有效的⽤户名和密码才能登录FTP服务器。这提供了更⾼级别的安全性和访问控制,适⽤于需要限制访问权限的场景。

 文件传输

FTP的⽂件传输仅表示下列三件事件之⼀:
        从服务器把⽂件复制到客户(下载),称为读取⽂件。在RETR命令的监督下完成。
        从客户把⽂件复制到服务器(上传),称为存储⽂件。在STOR命令的监督下完成。
        从服务器向客户发送⽬录列表或⽂件名。在LIST命令的监督下完成。应注意,FTP把⽬录或⽂件名列表当作⽂件,在数据连接上发送。

 安全性

传统的FTP不加密其传输的数据,包括⽤户的认证信息(⽤户名和密码),因此它对窃听特别敏感。为了提供安全的⽂件传输功能,推出了以下⼏种⽅案:
  • FTP over SSL/TLS (FTPS):利⽤SSL或TLS提供加密的通道,以保护数据传输的安全。
  • SSH File Transfer Protocol (SFTP):作为FTP的替代,通过SSH提供加密的传输。
FTP协议虽然有其历史局限性,但因其简单和⼴泛⽀持,在很多环境中仍然是⽂件传输的可⾏选择。然⽽,在安全性是关键考量的环境下,建议使⽤FTPS或SFTP替代传统FTP。

 实验一 Windows FTP 匿名访问

 1.安装FTP服务(不同系统有差异)

首先,需要在Windows Server 上安装FTP服务器组件:

1. 打开“服务器管理器”。 

2.点击“管理”,选择“添加角色和功能”。 

3.在“添加角色和功能向导”中,点击“下一步”直到“服务器角色”页面。

4.展开“Web服务器(IIS)”角色,然后展开“Web服务器”部分,接着展开“FTP服务器”。

5.选择“FTP服务”,点击“添加功能"确认附加所需的功能。 

6.继续点击“下一步”,然后点击“安装”。 

7.完成安装后,点击“关闭”。 

 2.配置FTP站点

 安装FTP服务之后,需要配置FTP站点并启用匿名访问:

1.打开“IIS管理器”。

2.在“连接”窗格中,右键点击“站点”,选择“添加FTP站点”。 

3.为FTP站点命名,并指定FTP站点的本地路径(这是匿名用户将访问的目录)。 

4.点击“下一步”,配置IP地址设置,选择要绑定的IP地址或者保留“全部未分配”。 

5.在“SSL”页面,根据安全需求选择“No SSL”(如果不需要SSL加密)。 

6.点击“下一步”,在“身份验证”部分选择“匿名”。 

 7.在“授权”部分,选择“匿名用户”,权限选择“读取”(如果只需要下载文件)和“写入”(如果需要上传文件)。

 

3.配置匿名用户的权限 

要让匿名用户能够访问FTP站点,您需要确保匿名用户(通常是IUSR账户)有权访问FTP根文件夹: 

1.在文件资源管理器中,右键点击您为FTP站点设置的文件夹。 

2.选择“属性”,然后点击“安全”选项卡。 

3.点击“编辑”,然后点击“添加”。 

4.输入“IUSR",点击“检查名称”,确认后点击“确定”。 

5.在“权限”部分,根据需要选择适当的权限(如“读取&执行”、“列出文件夹内容”、“读取”)。 

6.点击“应用”和“确定”。 

4.测试FTP访问 

 通过浏览器访问FTP站点,测试是否可以成功进行匿名访问。

 上传失败,满足匿名用户不能上传的权限(可以读取,可以下载)

注意: 在新建站点时无需选择基于主机名的配置。主机名是用来配置有多个域名时,同一个IP地址且同一个端口号是来对应不同的FTP站点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/416230.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VMware 虚拟化平台部分问题和优化措施汇总

本文整理记录了VMware 虚拟化平台部分问题和优化措施。 1、vCLS虚拟机无法启动: 修改办法,参照本人下文: vCLS报错处理(缺少功能“MWAIT”,没有与虚拟机兼容的主机) 2、优化存储卷的路径选择策略 ESXi…

可以进行非机动车违停、人员聚集、临街摆摊、垃圾满溢、烟雾火情等城市治理场景的智能识别的智慧城管开源了

智慧城管视觉监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。 基于深度学习技…

Redis 篇-深入了解查询缓存与缓存所带来的问题(读写不一致、缓存穿透、缓存雪崩、缓存击穿)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 本章目录 1.0 什么是缓存 2.0 项目中具体如何添加缓存 3.0 添加缓存后所带来的问题 3.1 读写不一致问题 3.1.1 缓存更新策略 3.1.2 具体实现缓存与数据库的双写一致 3.2 缓存穿…

vue2———组件

一个简单的组件 组件进行注册并使用 结果: 在进行对组件的学习时遇见一些问题: 1、组件的命名 解决方法: 组件的命名 Vue.js 组件的命名遵循一些最佳实践,这些实践有助于保持代码的清晰和一致性。 多单词命名:Vue 官…

Robotics: computational motion planning 部分笔记—— week 2 Configuration Space 构型空间

基本概念 构型(Configuration):构型是机器人上所有点的完整描述。它提供了机器人在特定时刻状态的简洁表示。 构型空间(Configuration Space):也称为C-Space,指的是机器人可以到达的所有可能构型的集合。它考虑了空间限制范围和机器人的物理…

期权交易方式和基本策略有哪几种?期权交易要注意什么?

今天带你了解期权交易方式和基本策略有哪几种?期权交易要注意什么?期权,作为一种金融衍生品,它赋予了持有人在未来某个时间内购买或出售特定资产的权利,近年来在全球范围内得到了广泛的关注和应用。 期权交易方式 期…

Latex安装--新手教程、遇到的问题

第一个LaTeX文件的编写 1.tex文件:自己创建后缀为.tex的文件 2.在VScode中打开1.tex文件(图1),然后双击打开1.tex文件(图2),VScode左侧工具栏出现TEX插件,点击TEX即可 3.写第一个1.t…

SpringBoot-读取配置文件方式

目录 前言 一. 使用 ConfigurationProperties 注解读取 二. 使用 Value 注解读取配置文件 三. 使用 Environment 类获取配置属性 前言 Spring Boot提供了多种灵活的方式来读取配置文件,以适应不同的开发和部署需求,SpringBoot启动的时候,…

[Linux] 项目自动化构建工具-make/Makefile

标题:[Linux] 项目自动化构建工具-make/Makefile 水墨不写bug 目录 一、什么是make/makefile 二、make/makefile语法 补充(多文件标识): 三、make/makefile原理 四、make/makefile根据时间对文件选择操作 正文开始&#xff…

在安卓和Windows下使用Vizario H264 RTSP

Unity2021.3.35f1,运行模式为ENGINE_SERVER 1.环境设置 Windows设置 安卓设置 2.代码修改 ConnectionProperties中的server必须与真实IP一样,所以需要新增一个获取IP的函数 public string GetLocalIPAddress(){IPHostEntry host;string localIP &quo…

codesys进行控制虚拟轴运动时出现的一些奇怪bug的解释

codesys进行控制虚拟轴运动时出现的一些奇怪bug的解释 问题描述第一个奇怪的bug:新建的工程没有SoftMotion General Axis Pool选项第二个奇怪的bug:在新建工程SoftMotion General Axis Pool选项时,无法手动添加第三个奇怪的bug:虚…

Postgresql碎片整理

创建pgstattuple 扩展 CREATE EXTENSION pgstattuple 获取表的元组(行)信息,包括空闲空间的比例和行的平均宽度 SELECT * FROM pgstattuple(表名); 查看表和索引大小 SELECT pg_relation_size(表名), pg_relation_size(索引名称); 清理碎片方…

如何进行 AWS 云监控

什么是 AWS? Amazon Web Services(AWS)是 Amazon 提供的一个全面、广泛使用的云计算平台。它提供广泛的云服务,包括计算能力、存储选项、网络功能、数据库、分析、机器学习、人工智能、物联网和安全。 使用 AWS 有哪些好处&…

AI预测体彩排3采取888=3策略+和值012路或胆码测试9月4日升级新模型预测第72弹

经过70多期的测试,当然有很多彩友也一直在观察我每天发的预测结果,得到了一个非常有价值的信息,那就是9码定位的命中率非常高,已到达90%的命中率,这给喜欢打私菜的朋友提供了极高价值的预测结果~当然了,大部…

亚信安全信立方安全大模型荣获“磐石·Y”大模型安全评定

2024年4月,在中国软件评测中心(工业和信息化部软件与集成电路促进中心)联合数据安全关键技术与产业应用评价工业和信息化部重点实验室、中国计算机行业协会数据安全专业委员会开展的大模型安全性测评“磐石X”榜单计划中,亚信安全…

PTA L1-041 寻找250

L1-041 寻找250(10分) 对方不想和你说话,并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字。 输入格式: 输入在一行中给出不知道多少个绝对值不超过1000的整数,其中保证至少存在一个“2…

Java_jdk安装配置~java入门

目录 0.总体介绍 1.入门介绍 2.官网 3.关于版本的问题 4.环境变量配置 5.编码修改 6.创建项目 0.总体介绍 下面的这个情况比较复杂,因为遇到了一些别人没有遇到的问题,我会把自己遇到这个问题,到解决这个问题的过程尽可能详细的展示出…

Qt 字符串的编码方式,以及反斜杠加3个数字是什么编码\344\275\240,如何生成

Qt 字符串的编码方式 问题 总所周知,Qt的ui文件在编译时,会自动生成一个ui_xxxxx.h的头文件,打开一看,其实就是将摆放的控件new出来以及布局的代码。 只要用Qt提供的uic.exe工具,自己也可以将ui文件输出为代码文件…

设计模式 —— 单例模式

文章目录 一、单例模式1.1 单例模式定义1.2 单例模式的优点1.3 单例模式的缺点1.4 单例模式的使用场景 二、普通案例2.1 饿汉式单例模式(Eager Initialization Singleton)2.2 懒汉式单例模式(Lazy Initialization Singleton) 参考资料 本文源代码地址为 java-demos/singeleton-…

Leetcode236经典题目二叉树的最近公共祖先

本次为大家带来的题目是leetcode236二叉树的最近公共祖先 本道题的直观思路是自底向上进行寻找,如果存在的话那么向上返回,如何能够自底向上遍历呢?我们可以利用回溯进行处理,那么需要注意的是进行回溯的时候一定要使用后序遍历来…