FTP,SFTP,FTPS总结

时间:2024.4.13

FTP,SFTP,FTPS总结

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

主动FTP

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

1.

2.

3.

4. 任何端口到FTP服务器的21端口 (客户端初始化的连接 S<-C) FTP服务器的21端口到大于1023的端口(服务器响应客户端的控制端口 S->C) FTP服务器的20端口到大于1023的端口(服务器端初始化数据连接到客户端的数据端口 S->C) 大于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 >; 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P >; 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。

FTPSFTPFTPS总结

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

1.

2.

3.

4. 从任何端口到服务器的21端口 (客户端初始化的连接 S<-C) 服务器的21端口到任何大于1023的端口 (服务器响应到客户端的控制端口的连接 S->C) 从任何端口到服务器的大于1023端口 (入;客户端初始化数据连接到服务器指定的任意端口 S<-C) 服务器的大于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优缺点的简要总结:

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

亦庄SRF网络设备配置示例

1. 标准端口:

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

FTPSFTPFTPS总结

命令:

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


第二篇:FTPS和SFTP


一、FTPS和SFTP

FTPS和SFTP都是为ftp连接加密,协议非常相似。

FTPS是借助ssl协议加密,ssl是为http/smtp等加密设计的;SFTP是借助ssh加密,ssh是为telnet/ftp等加密、建立传输通道而设计的。ssh建立传输通道就是为了加密和传输,而且这个通道是可以用来远程登录。创建加密通道对文件进行加密。

如果只说它们的功能,通俗的讲,ssl就像打包裹,ssh就像铺管子,铺管子和打包裹都会使数据安全,都是一个制作密钥的过程,而因为ssh是一个管子所以它很适合ftp的安全传输。

从原理上简单的讲:FTPS是ftp-over-ssl的意思,即ftp借助ssl协议加密传输,不但要用ftp服务器还要用ssl协议加密。sftp协议是ssh中的一条独立的协议,利用sftp服务器就可以传输数据。

由ssh封装的是sftp (应用层的加密)

SFTP验证:

1、只密码验证

2、只公钥验证

3、密码加公钥验证

用ssl的是ftps.(传输层的加密)

SSL验证:

1、只密码验证

2、SSL证书验证

-sftp

-ftp over SSH2

这两种协议是不同的。sftp是ssh内含的协议,只要sshd服务器启动了,它就可用,它本身不需要ftp服务器启动。ftp over SSH2则象一个二传手。

1、SFTP的工作模式:

图1显示了SFTP的工作模式,它是作为SSH2的一个子服务工作的。

FTPS和SFTP

图 1 SFTP工作模式

2、FTP over SSH2

此协议还是基于ftp协议的。在此协议中SSH2服务器起了一个桥梁作用,把数据在客户端和ftp之间转发。ftp协议本身包括两个通道,一个是控制通道,另一个是数据通道。

FTP over SSH2有两种情况,半安全连接(Less Secure Connection)和安全连接(Full Secure Connection)。在半安全连接时,ftp客户端先和SSH2服务器连接,在这个连接中无论控制通道和数据通道都是加密的。但是SSH2服务器和 ftp服务器之间就不是加密的了,如果ftp服务器运行在另外一台机器上,SSH2服务器和ftp直接就是明文传输。见图2。

图 2半安全连接

图3是安全连接模式的情形,SSH2服务器和FTP服务器在同一台服务器上。

图 3 安全连接

二、SSH和SFTP简介

传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这 些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。所谓 “中间人”的攻击方式,就是“中间人”冒充真正的服务器接收你的传给服务器的数据,

FTPS和SFTP

FTPS和SFTP

然后再冒充你把数据传给真正的

服务器。服务器和你之间的数据传送被“中 间人”一转手做了手脚之后,就会出现很严重的问题。

SSH的英文全称是SecureShell。通过使用SSH,你可以把所有传输的数据进行 加密,这样“中间人”这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的 速度。SSH有很多功能,它既可以代替telnet,又可以为ftp、pop、甚至ppp提供一个安全的“通道”。

最初SSH是由芬兰的一家公司开发的。但是因为受版权和加密算法的限制,现在很多人都转而使用OpenSSH。OpenSSH是SSH的替代软件,而且是免费的,可以预计将来会有越来越多的人使用它而不是SSH。

SSH是由客户端和服务端的软件组成的,有两个不兼容的版本分别是:1.x和2.x。用SSH2.x的客户程序是不能连接到SSH1.x的服务程序上去的。OpenSSH2.x同时支持SSH1.x和2.x。

SSH的安全验证是如何工作的

从客户端来看,SSH提供两种级别的安全验证。

第一种级别(基于口令的安全验证)只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。

第二种级别(基于密匙的安全验证)需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器 上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在你在该服务器的家目录下寻找你的公用密匙,然后把它和你发送 过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后 就可以用你的私人密匙解密再把它发送给服务器。

用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。

第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程可能需要10秒。

(SSH:SecureShellProtocol)

安全外壳协议(SSH)是一种在不安全网络上提供安全远程登录及其它安全网络服务的 协议。SecureShell,又可记为SSH,最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH是一个好的应用程序,在正确使用 时,它可以弥补网络中的漏洞。除此以外,SSH之所以酷,还有以下原因:SSH客户端适用于多种平台。几乎所有的UNIX平台—包括HP-UX、 Linux、AIX、Solaris、DigitalUNIX、Irix、SCO,以及其他平台—都可以运行SSH。而且,已经有一些客户端(其中有些为 测试版)可以运行于UNIX操作平台以外,包括OS/2、VMS、BeOS、Java、Windows95/98和WindowsNT。这样,你就可以在 几乎所有的平台上运行SSH客户端程序了。对非商业用途它是免费的。许多SSH版本可以获得源代码,并且只要不用于商业目的,都可以免费得到。而 且,UNIX版本也提供了源代码,这就意味着任何人都可以对它进行修改。但是,如果你选择它用于商业目的,那么无论使用何种版本的SSH,你都得确认已经 注册并获得了相应权限。绝大多数SSH的客户端和守护进程都有一些注册限制。惟一的SSH通用公共注册 (GeneralPublicLicense,GPL)版本是lsh,它

目前还是测试版。通过Internet传送密码安全可靠。这是SSH被认可的优点 之一。如果你考察一下接入ISP(InternetServiceProvider,Internet服务供应商)或大学的方法,一般都是采用 Telnet或POP邮件客户进程。因此,每当要进入自己的账号时,你输入的密码将会以明码方式发送(即没有保护,直接可读),这就给攻击者一个盗用你账 号的机会—最终你将为他的行为负责。对应用的支持。由于SSH的源代码是公开的,所以在UNIX世界里它获得了广泛的认可。Linux,其源代码也是公开 的,大众可以免费获得,并同时获得了类似的认可。这就使得所有开发者(或任何人)都可以通过补丁程序或bug修补来提高其性能,甚至还可以增加功能。这也 第一部分获得并安装SSH意味着其性能可以不断得到提高而无须得到来自原始创作者的直接技术支持。SSH替代了不安全的远程应用程序。SSH是设计用来替 代伯克利版本的r命令集的;它同时继承了类似的语法。其结果是,使用者注意不到使用SSH和r命令集的区别。利用它,你还可以干一些很酷的事。通过使用 SSH,你在不安全的网络中发送信息时不必担心会被监听。你也可以使用POP通道和Telnet方式,通过SSH可以利用PPP通道创建一个虚拟个人网络 (VirtualPrivateNetwork,VPN)。SSH也支持一些其他的身份认证方法,如Kerberos和安全ID卡等。

但是因为受版权和加密算法的限制,现在很多人都转而使用OpenSSH。OpenSSH是SSH的替代软件,而且是免费的,可以预计将来会有越来越多的人使用它而不是SSH。

SSH是由客户端和服务端的软件组成的,有两个不兼容的版本分别是:1.x和2.x。用SSH2.x的客户程序是不能连接到SSH1.x的服务程序上去的。OpenSSH2.x同时支持SSH1.x和2.x。

SSH主要有三部分组成:

传输层协议[SSH-TRANS]提供了服务器认证,保密性及完整性。此外它有时还提供压缩功能。SSH-TRANS通常运行在TCP/IP连接上,也 可能用于其它可靠数据流上。SSH-TRANS提供了强力的加密技术、密码主机认证及完整性保护。该协议中的认证基于主机,并且该协议不执行用户认证。更 高层的用户认证协议可以设计为在此协议之上。

用户认证协议[SSH-USERAUTH]用于向服务器提供客户端用户鉴别功能。它运行在传输层 协议SSH-TRANS上面。当SSH-USERAUTH开始后,它从低层协议那里接收会话标识符(从第一次密钥交换中的交换哈希H)。会话标识符唯一标 识此会话并且适用于标记以证明私钥的所有权。SSH-USERAUTH也需要知道低层协议是否提供保密性保护。

连接协议[SSH-CONNECT]将多个加密隧道分成逻辑通道。它运行在用户认证协议上。它提供了交互式登录话路、远程命令执行、转发TCP/IP连接和转发X11连接。 一旦建立一个安全传输层连接,客户机就发送一个服务请求。当用户认证完成之后,会发送第二个服务请求。这样就允许新定义的协议可以与上述协议共存。连接 协议提供了用途广泛的各种通道,有标准的方法用于建立安全交互式会话外壳和转发(“隧道技术”)专有TCP/IP端口和X11连接。

通过使用 SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。使用SSH,还有一个额外的 好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、PoP、甚至为PPP提供一个 安全的"通道"。 SSH分为两部分:客户端部分和服务端部分。

服务端是一个守护进程(daemon),他在后台运行并响应来自客户端的连接请求。

服务端一般是sshd进程,提供了对远程连接的处理,一般包括公共密钥认证、密钥交换、对称密钥加密和非安全连接。

客户端包含ssh程序以及像scp(远程拷贝)、slogin(远程登陆)、sftp(安全文件传输)等其他的应用程序。

他们的工作机制大致是本地的客户端发送一个连接请求到远程的服务端,服务端检查申请的包和IP地址再发送密钥给SSH的客户端,本地再将密钥发回给服务端,自此连接建立。刚才所讲的只是SSH连接的大致过程,SSH1.x和SSH2.x在连接协议上还有着一些差异。

SSH被设计成为工作于自己的基础之上而不利用超级服务器(inetd),虽然可以通过inetd上的tcpd来运行SSH进程,但是这完全没有必要。 启动SSH服务器后,sshd运行起来并在默认的22端口进行监听(你可以用#ps-waux|grepsshd来查看sshd是否已经被正确的运行了) 如果不是通过inetd启动的SSH,那么SSH就将一直等待连接请求。当请求到来的时候SSH守护进程会产生一个子进程,该子进程进行这次的连接处理。

三、SSH1与SSH2的区别

SSH1又分为1.3和1.5两个版本。SSH1采用DES、3DES、Blowfish和RC4等对称加密算法保护数据安全传输,而对称加密算 法的密钥是通过非对称加密算法(RSA)来完成交换的。SSH1使用循环冗余校验码(CRC)来保证数据的完整性,但是后来发现这种方法有缺陷。

SSH2避免了RSA的专利问题,并修补了CRC的缺陷。SSH2用数字签名算法(DSA)和Diffie-Hellman(DH)算法代替 RSA来完成对称密钥的交换,用消息证实代码(HMAC)来代替CRC。同时SSH2增加了AES和Twofish等对称加密算法。

四、SSH1缺陷

与SSH有关的最具破坏性的安全漏洞之一是在SSH1 CRC-32软件里负责侦测"补偿攻击"手段的代码里存在一个缺陷。该代码是几年前增加的,目的是解决SSH1协议中与加密相关的一个严重的弱点。正像校 正安全性问题的许多其他补丁一样,该补丁在攻击检测代码中引入了一个新的漏洞,导致在使用了该补丁的SSH服务器和客户端执行可以任意的代码。在检测过程 使用了一个散列表,是根据接收的数据包大小动态分配的。问题起因于检测代码中一个变量的不正确的声明。因而,攻击者可以制作大的SSH数据包(长 度>216),使得缺陷代码用参数0调用xmalloc(),并返回一个指向程序地址空间的指针。如果攻击者能够向程序(SSH服务器或客户端)地 址空间的任意内存位置进行写入操作,那么就可以在被攻击的系统上执行任意代码。

该缺陷不仅影响SSH服务器,也影响SSH客户端。所有支持协议1(1.5)(其中使用了CRC校验进行攻击检测)的SSH都是易受攻击的

结论

使用SFTP的密钥验证安全性最高。测试使用第三方API

A、 jsch-0.1.44.jar jzlib-1.0.7.jar

B、 jftp.jar

备注

Channel channel = sshSession.openChannel("sftp"); 选项:

1、session

2、shell设置安全交互Shell会话

3、exec

4、x11 X11连接

5、auth-agent@openssh.com

6、direct-tcpip传输任意的TCP/IP端口

7、forwarded-tcpip传输任意的TCP/IP端口

8、sftp

9、subsystem

更多相关推荐:
ps结课心得

ps结课心得ps结课心得一PS结课心得第一次接触ps时觉得很神秘我无法忘记第一次完成作品时内心的欣喜之情霎那间产生了兴趣随着接触的深入发现ps功能的强大每节课跟着老师做案例设计都是一步步的实践原来ps并不难需要...

photoshop基础结课论文

Photoshop基础作业ps的主要功能简述专业金融0902姓名宋宇航学号310910080221位号25短短一学期的photoshop基础公选课就要结束了从自己眼中的神笔马良到老师一层一层的揭开它神秘的面纱自...

ps教学工作总结

12级商务3班《图形图像处理》项目教学工作总结一学期很快就要过去,回顾本学期的教学工作,感到很辛苦,同时也感到很欣慰。因为我的学生在结束本学期课程后,基本都达到了教学大纲的要求,部分优秀的学生甚至能开始独立完成…

PS课程总结)

Photoshop图像处理课程总结20xx年又上了以前曾多次上过的PS课程,经过长时间的教学,我总结了几个经验与其他老师共享:1.上好第一节课,调动和激发学生学习热情和积极性。我认为上好Photoshop第一课…

Photoshop课程学习小结

塔里木大学公共选修课Photoshop图形图像处理技术明月制作设计说明书学生姓名学号5011210130所属学院信息工程学院专业计算机科学与技术班级计算机141指导教师明月制作步骤1新建一个文件参数如下2选择工...

Photoshop教学总结

Photoshop教学总结四川省叙永县职业高级中学校马小荣作为平面设计领域的龙头软件Photoshop已经越来越普及了很多职业院校都开设了这门课程我们学校最后这两届电脑班也开设了平面设计及动画等相关专业的课程正...

ps课程实践总结

实习类型实习单位实习起止时间指导教师所在院(系)专业班级学生姓名学号一、实习的基本概况(一)理论指导Photoshop主要处理以像素所构成的数字图像。使用其众多的编修与绘图工具,可以更有效的进行图片编辑工作。1…

ps中实用快捷键的总结

ps实用快捷键1调整字体大小按住ctrlshift将鼠标放在字体大小TT框里单击鼠标左键出现向左向右的小箭头移动鼠标字体将以10个单位递增减选中字体大小中的数字使其在可更改状态按或方向键可以以1个单位调整字体大...

ps 结课考试试题

XXXXXXXX学校平面设计班级姓名分数一填空题每空1分共30分1在设计领域图像可以分为和两大类2Photoshop中图象最基本的组成是默认颜色模式是历史记录调板默认的记录步骤是3渐变分别是4图层的3大基本特性...

武大选修课总结

武大选修课总结很好过的选修课通识人文科学领域文学原理1学分文学院中国教育名著导读1教育科学学院后现代主义文化思潮1哲学学院跨学科领域建筑美学2学分城市设计学院大学生心理健康1和2第二临床学院水质与社会发展1动力...

《Photoshop》课程考核总结(20xx0108)

Photoshop课程考核总结一考核的具体方式与方法本课程的考核方式为设计课程总学时为36学时其中理论0学时实践36学时考核对象为20xx级人文地理与城乡规划专业学分为2学分考核内容为一平时及出席考核10评价标...

Ps学习总结B篇(一寸照的制作以及色彩知识)

一一寸照片制作先建立国际标准纸张A4文档把照片拖入视图中对齐参考线拉水平和竖直两条参考线给人物照片添加图层样式描边位置内部颜色白色按住Alt键拖动人物照片即可实现复制一变二二变四一横排排满8张选中图层右击合并图...

ps结课总结(22篇)