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

news2024/9/20 22:55:08
概述
将某台计算机中的⽂件通过⽹络传送到可能相距很远的另⼀台计算机中,是⼀项基本的⽹络应⽤,即⽂件传送。
⽂件传送协议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.coloradmin.cn/o/2107686.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图形几何-如何将凹多边形分解成若干个凸多边形

凹多边形的概念 凹多边形是指至少有一个内角大于180度的多边形。与之相对,凸多边形的所有内角均小于或等于180度,且任意两点之间的连线都完全位于多边形内部。将凹多边形分解成若干个凸多边形是计算几何中的一个重要问题。 分解原理 将凹多边形分解为凸…

Python【3】乌七八糟

目录 if __name__ "__main__ 模块名————__name__ 装饰器 参数的优化——可以接受任何函数 需要添加自定义参数——再套一层 语法糖——好甜! 类init self if __name__ "__main__ 在Python中,if __name__ "__main__"…

再谈全排列

题目链接: . - 力扣(LeetCode) 每次做全排列的题目,我都要孕育好一阵子,到底怎么去思考这个问题呢? 首先,我觉得最好的方式就是画个树。 画了树之后,你就知道,这个问题&…

鸿蒙轻内核M核源码分析系列五 时间管理

往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 持续更新中…… 在鸿蒙轻内核源码分析上一篇文章中,我们剖析了中断的源码,简单提到了Tick中断。本文会继续分析Tick和时间相关的源…

多所高校拟撤销地理、测绘、建筑等相关专业!网友:游了很久,发现没有岸!

近日,各大高校频频传来专业“下线”的消息。多所高校拟撤销地理、测绘等相关专业。对此很多网友破防了,表示:还没毕业,专业没了? 更有城乡规划的网友表示:自己已经成为怨种毕业生,游了很久&…

公司数字化转型的目的是什么?

不同行业公司,其数字化转型的目的也不一样。下面我列举几个行业,给大家讲讲其数字化转型的真正目的。 制造数字化转型 制造业来说,数字化转型的本质是通过新一代信息技术与制造技术的融合,实现以数据为核心的资源要素变革、以网络…

【8.28更新】Win10 22H2 正式版:19045.4842镜像下载!

今日系统之家小编给大家带来2024年最新的Windows10 22H2正式版系统,该版本系统基于微软官方Windows 10 22H2 19045.4842 64位 专业版进行离线制作与优化,系统安全无任何病毒残留,且兼容性出色,能完美兼容新老机型。安装后&#xf…

一大波华为“黑”正在赶来

文|琥珀食酒社 作者 | 积溪 不管你信不信 我都敢肯定的告诉你 又一波黑华为的浪潮 将在下周到来 因为下周二 也就是9月10号 华为将发布一款划时代的产品 华为MateXT非凡大师 三折叠屏手机 就我现在得到的情况 这款手机最大的特点 就是先进 余承东都说…

SRT协议分析以及收拉流测试

文章目录 介绍协议概述协议常用URL格式协议工作流程协议包格式数据包和控制包数据包控制包ACKNACK 开源协议栈libSRTFFmpegVLC Media PlayerSRT AllianceSRS 测试使用ffmpegsrs推流端接收端播放端srs配置 使用 libSRT发送端接收端 介绍 SRT(Secure Reliable Transpo…

力扣: 有效的字母异位词

文章目录 需求数组map结尾 需求 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 字母异位词 是通过重新排列不同单词或短语的字母而形成的单词或短语,通常只使用所有原始字母一次。 示例 1: 输入: s “anagram”, t “nagaram…

9、类和对象

9.1 封装 9.1.1 封装的例子 class Student { public:string name;int age; public:void setName(string name_) {name name_;} }; int main() {Student s1;s1.setName("zhangsan");return 0; }类中的行为都叫做成员,例如成员属性,成员变量&…

磁吸轨道灯的优缺点深度解析:为你的家居照明提供新选择

在现代家居装修中,照明设计已成为提升居住品质的重要一环。磁吸轨道灯作为一种新兴的照明解决方案,以其独特的灵活性和美观性逐渐受到市场的青睐。然而,任何产品都有其两面性,磁吸轨道灯也不例外。本文将深入探讨磁吸轨道灯的优缺…

产品起名|给你的产品插上会飞的翅膀

引言:在品牌的世界里,产品的名字不仅仅是一个标签,它是品牌个性、价值和承诺的直接体现。一个好的产品名能够快速传达产品特性,吸引消费者,并在市场中建立独特的品牌形象。 好产品从起名开始 品牌介绍:南京…

使用卫星仿真软件STK的一些应用和思考(星地链路、星间链路)

目录 任务描述利用STK建模星地协同系统3个GEO高轨卫星240/20/1 Walker-Star Constellation 低轨卫星星座地面站或者地面设备 链路建模与数据提取处理星地链路星间链路数据读取的几种方法最麻烦的方法使用Matlab与STK互联接口使用大规模使用Chain 总结 任务描述 在一个星地协同…

【小设计】基于宏实现的C++ 可复用setter 和getter设计

前言 最近在开发unity游戏的时候,面对庞大复杂的不同类之间进行数据交换和调用,我们必须做好类数据的信息管理,往往我希望暴露给其他类越少越好,这时候我就利用了C#的一个语言特性 public PlayerStateMachine stateMachine{get;…

创建锁对象/函数

描述:某些单据进行修改时,需要锁定数据 方法步骤: 1、se11:可copy创建新锁 EZSDDH 2、输入需要锁定的主表,锁参数会根据主键自动补填 3、激活后,会生成对应的锁函数 ENQUEUE_EZSDDH :锁定表 …

评论的组件封装

主评论的人在数组第一层级,回复的评论都在children里面 【{ name:"张三" idGenerator: 475403892531269 info_Conmment":"今天天气晴朗😀" children:[ { mainIdGenerator:475388950118469 name:"张三" name1&#x…

Java 入门指南:Java 并发编程 —— 并发容器 BlockingDeque、LinkedBlockingDeque

BlockingQueue BlockingQueue 是Java并发包(java.util.concurrent)中提供的一个阻塞队列接口,它继承自 Queue 接口。 BlockingQueue 中的元素采用 FIFO 的原则,支持多线程环境并发访问,提供了阻塞读取和写入的操作&a…

Jenkins构建CI/CD

CI/CD 软件开发的连续方法基于自动执行脚本,以最大限度地减少在开发应用程序时引入错误的可能性。从新代码的开发到部署,它们需要较少的人为干预甚至根本不需要干预。 它涉及在每次小迭代中不断构建,测试和部署代码更改,从而减少…

多线程 | synchronized的简单使用

synchronized 关键字是 Java 中解决并发问题的一种常用方法,也是最简单的一种方法,其作用有三个: (1)互斥性:确保线程互斥的访问同步代码 (2)可见性:保证共享变量的修改能够及时可见…