FTP,SFTP,FTPS总结

 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->Capp

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

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


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

 

被动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->Cspa

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环境下的实际应用受到严重的限制。

相关文章
相关标签/搜索