文档章节

FTP,SFTP,FTPS总结

沉默的子明
 沉默的子明
发布于 2016/08/01 14:40
字数 2711
阅读 341
收藏 0

 FTP应用分FTPSFTPFTPS,其中最常见的是FTP,也是下面将重点讨论的情形;SFTPSecure File Transfer Protocol,是SSH协议一个子协议,不区分控制和数据端口;FTPS“FTP-over-SSL” 是在安全套接层使用标准的FTP协议和指令的一种增强型协议(类似https),也没有控制和数据端口的区分;所以SFTPFTPS完全不同于普通的FTP应用(控制和数据用不同的连接),可以SFTPFTPS的访问需求等同于普通的TCP应用处理。

 

主动FTP

    主动方式的FTP是这样的:客户端从一个任意的非特权端口NN>;1024)连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端口N+1,并发送FTP命令“port N+1”FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。
针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP

1.       任何端口到FTP服务器的21端口 (客户端初始化的连接 S<-C

2.       FTP服务器的21端口到大于1023的端口(服务器响应客户端的控制端口 S->C

3.       FTP服务器的20端口到大于1023的端口(服务器端初始化数据连接到客户端的数据端口 S->C

4.       大于1023端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口 S<-C

连接过程大概是下图的样子(没有严格按TCP三次握手画):


    在第1步中,客户端的命令端口与FTP服务器的命令端口建立连接,并发送命令“PORT 1027”。然后在第2步中,FTP服务器给客户端的命令端口返回一个"ACK"。在第3步中,FTP服务器发起一个从它自己的数据端口(20)到客户端先前指定的数据端口(1027)的连接,最后客户端在第4步中给服务器端返回一个"ACK"
主动方式FTP的主要问题实际上在于客户端。FTP的客户端并没有实际建立一个到服务器数据端口的连接,它只是简单的告诉服务器自己监听的端口号,服务器再回来连接客户端这个指定的端口。对于客户端的防火墙来说,这是从外部系统建立到内部客户端的连接,这是通常会被阻塞的。

 

被动FTP

    为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。
在被动方式FTP中,命令连接和数据连接都由客户端,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。当开启一个FTP连接时,客户端打开两个任意的非特权本地端口(N >; 1024N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P >; 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。

对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:

1.       从任何端口到服务器的21端口 (客户端初始化的连接 S<-C

2.       服务器的21端口到任何大于1023的端口 (服务器响应到客户端的控制端口的连接 S->C

3.       从任何端口到服务器的大于1023端口 (入;客户端初始化数据连接到服务器指定的任意端口 S<-C

4.       服务器的大于1023端口到远程的大于1023的端口(出;服务器发送ACK响应和数据到客户端的数据端口 S->C

被动方式的FTP连接过程大概是下图的样子:


    在第1步中,客户端的命令端口与服务器的命令端口建立连接,并发送命令“PASV”。然后在第2步中,服务器返回命令"PORT 2024",告诉客户端(服务器)用哪个端口侦听数据连接。在第3步中,客户端初始化一个从自己的数据端口到服务器端指定的数据端口的数据连接。最后服务器在第4 步中给客户端的数据端口返回一个"ACK"响应。

    被动方式的FTP解决了客户端的许多问题,但同时给服务器端带来了更多的问题。最大的问题是需要允许从任意远程终端到服务器高位端口的连接。第二个问题是客户端有的支持被动模式,有的不支持被动模式,必须考虑如何能支持这些客户端,以及为他们提供解决办法。例如,Solaris提供的FTP命令行工具就不支持被动模式,需要第三方的FTP客户端,比如ncftp总结

下面的图表会帮助管理员们记住每种FTP方式是怎样工作的,在建立数据传输通道时,服务器主动即主动ftp,客户端连接服务器(服务器被动)即被动ftp

主动FTP
   命令连接:客户端 >1023端口 -> 服务器 21端口
   数据连接:客户端 >1023端口 <- 服务器 20端口

被动FTP
   命令连接:客户端 >1023端口 -> 服务器 21端口
   数据连接:客户端 >1023端口 -> 服务器 >1023端口

下面是主动与被动FTP优缺点的简要总结:

主动FTPFTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTPFTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。

 

亦庄SRF网络设备配置示例

1.       标准端口:

FWSM启用inspect FTP检测(全局下):

命令:

class-map inspection_default

 match default-inspection-traffic

!

!

policy-map global_policy

 class inspection_default

  inspect ftp

!

service-policy global_policy global

JUNIPER启用基于策略的ALG FTP检测(全局下缺省启用):

命令:set alg ftp enable

2.       非标准端口:

FWSM,全局下,启用自定义端口的inspect FTP检测:

命令:

class-map FTP-1359

 match port tcp eq 1359

!

!

policy-map global_policy

 class FTP-1359

  inspect ftp

!

!

service-policy global_policy global

JUNIPER,启用基于策略的ALG FTP检测

命令:set policy id xxx application "FTP"

 

引入风险

需要严格区分控制端口和数据端口(FWSM全局下区分,Juniper可以做基于策略的区分),因为inspectalg检测需要使用cpu,控制端口对应的数据量比较小,所以对cpu的消耗可以忽略,若打开数据通道上的inspectalg功能,大量的数据包检测将消耗较多的cpu资源,易造成CPU突发,这点需要特别注意,需要项目组,需求分析组对FTP等类似端口做严格审核。

 

  sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。

SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。

 

启动ssh服务、sftp服务

执行命令 /etc/init.d/sshd start 注意这里需要在绝对路径下执行sshd start。

 

三. FTPS  (FTP over SSL)

      SSL/TLS协议在传输层(TCP/IP)之上、但是在应用层之下工作的。因此,它可以很容易在诸如HTTP,Telnet,POP3,IMAP4,SMTP和FTP等应用层协议上实现。SSL安全扩展至少有两种不同的初始化方法:显式安全和隐式安全。

       显示安全:为了建立SSL连接,显式安全要求FTP客户端在和FTP服务器建立连接后发送一个特定的命令给FTP服务器。客户端使用服务器的缺省端口。
       隐式安全: 当FTP客户端连接到FTP服务器时,隐式安全将会自动和SSL连接一起开始运行。在隐式安全中服务器定义了一个特定的端口(TCP端口990)让客户端来和其建立安全连接。        
wKiom1L-zQqDuQNkAAFTl55vS_U843.jpg

当 通过SSL/TLS来使用FTP时(缩写为FTPS),FTP客户端和FTP服务器之间的控制连接就被加密了,因此除了它们之外谁也不能读懂它们之间的控 制连接的信息。正式因为这样,NAT/PAT设备和防火墙再也不能监控数据连接,并且从中得到有用的信息,从而再有针对性地做一些事情了(做些什么事 呢?),所以FTPS协议在防火墙和NAT环境下的实际应用受到严重的限制。

 

本文转载自:http://www.doc88.com/p-475334161886.html

共有 人打赏支持
沉默的子明
粉丝 4
博文 36
码字总数 1245
作品 0
南京
私信 提问
FTP over SSL (ftps) - Explicit SSL vs. Implicit SS

SFTP (SSH File Transfer Protocol) is not the same as FTPS (FTP-SSL). SFTP is intimately related to SSH, and has no relation, except in purpose and name, with FTP. Contrast with ......

cyper
2014/03/05
0
0
免费FTP解决方案之FileZilla

概观 FileZilla的客户端不仅支持FTP,还FTP通过TLS(FTPS)和SFTP。它是根据GNU通用公共许可证条款免费分发的开源软件。 我们还提供FileZilla Pro,为WebDAV,Amazon S3,Dropbox,Microsoft...

吴伟祥
2018/08/30
0
0
轻量级 FTP 客户端 —— BareFTP

bareFTP 是一个 Linux 下支持FTP、FTP over SSL/TLS (FTPS) 以及 SFTP 的文件传输客户端软件。 Ubuntu 下的安装方法:

红薯
2011/02/02
689
0
字符界面下的下载工具 - curl

curl是一款著名的字符界面下的下载工具,支持HTTP、HTTPS、FTP、FTPS、DICT、TELNET、LDAP、FILE,和GOPHER。此外还具有cookies支持、断点续传、FTP上传、密码支持、SSL支持和代理支持等特性。...

匿名
2008/09/18
0
4
Android的FTP工具--AndFTP

AndFTP 是 Android 手机上的支持 FTP, SFTP, SCP, FTPS 的客户端软件,可管理多个 FTP 服务器,自带文件浏览器和FTP文件浏览器,提供下载和上传的功能,可对文件进行重命名、删除、复制以及权...

匿名
2011/05/06
20.4K
0

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 升级中的一些常见问题

升级的时候遇到了问题了吗? 如果你想尝试重新进行升级的话,你需要首先重新恢复老的备份。不要尝试再次对 Confluence 进行升级或者在升级失败后重新启动老的 Confluence。 在升级过程中的一...

honeymoose
50分钟前
2
0
C++随笔(四)Nuget打包

首先把自己编译好的包全部准备到一个文件夹 像这样 接下来新建一个文本文档,后缀名叫.nuspec 填写内容 <?xml version="1.0"?><package xmlns="http://schemas.microsoft.com/packaging/201......

Pulsar-V
今天
2
0
再谈使用开源软件搭建数据分析平台

三年前,我写了这篇博客使用开源软件快速搭建数据分析平台, 当时收到了许多的反馈,有50个点赞和300+的收藏。到现在我还能收到一些关于dataplay2的问题。在过去的三年,开源社区和新技术的发...

naughty
今天
3
0
Python3的日期和时间

python 中处理日期时间数据通常使用datetime和time库 因为这两个库中的一些功能有些重复,所以,首先我们来比较一下这两个库的区别,这可以帮助我们在适当的情况下时候合适的库。 在Python文...

编程老陆
今天
2
0
分布式面试整理

并发和并行 并行是两个任务同时进行,而并发呢,则是一会做一个任务一会又切换做另一个任务。 临界区 临界区用来表示一种公共资源或者说是共享数据,可以被多个线程使用,但是每一次,只能有...

群星纪元
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部