知识大全 FTP转发

Posted

篇首语:不经过琢磨,宝石也不会发光。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 FTP转发相关的知识,希望对你有一定的参考价值。

SSH进阶(二):FTP转发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  简介    FTP协议简介    转发控制连接    FTP 防火墙和被动模式    FTP和网络地址转换(Neork Address Translation)      客户端网络地址转换问题    服务器端网络地址转换问题      使用默认数据传输端口    转发数据连接    结论     简介     有关SSH 一个经常被问起的问题是 我怎样才能使用端口转发加强FTP安全? 很不幸 你得到的回答一般非常简短 让你仍然无所适从 在标准FTP协议中 所有的数据都是明文传输的 因此网络上可能存在的嗅探器是一个极大的威胁 使用嗅探器 攻击者很容易获得你的帐户和密码 而在SSH的数据传输过程中 所有的数据以密文的形式传输的 所以SSH的端口转发功能能够很好地保护的帐户密码     本文详细地解释你能够使用SSH和FTP做什么 不能做什么 以及其原因 这里有FTP本身的复杂性造成的问题 除此之外 防火墙和网络地址转换(Neork Address Translation)也给我们制造了不少困难 因为现在防火墙和网络地址转换(Neork Address Translation)已经广泛存在了 因此我们将对这些情况进行详细的讨论 不过 由于网络环境千差万别 我们无法覆蓋所有可能出现的问题 这就需要你自己举一反三了      FTP协议简介     为了便于后面的讨论 我们首先简要地讨论一下FTP协议(如果对FTP协议已经有了比较深入的了解 你可以略过这一节) 大多数的TCP服务是使用单个的连接 一般是客户向服务器的一个周知端口发起连接 然后使用这个连接进行通讯 但是 FTP协议却有所不同 它使用双向的多个连接 而且使用的端口很难预计 一般 FTP连接包括     一个控制连接(control connection)     这个连接用于传递客户端的命令和服务器端对命令的响应 它使用服务器的 端口 生存期是整个FTP会话时间     几个数据连接(data connection)     这些连接用于传输文件和其它数据 例如 目录列表等 这种连接在需要数据传输时建立 而一旦数据传输完毕就关闭 每次使用的端口也不一定相同 而且 数据连接既可能是客户端发起的 也可能是服务器端发起的     下面 我们通过一个FTP客户程序看一下控制连接 这里 我们需要使用debug模式(ftp d)才能显示客户发出的FTP协议命令 在客户程序的输出信息中 这些协议命令是以 >开头的 例如      > USER nixe n     在命令发出之后 服务器会发出响应 响应信息以数字开头 例如      Login incorrect     下面 我们和FTP服务器建立一个连接 使用用户名nixe n登录 在会话过程中发出两次目录切换名 一次成功一次失败 其中黑体是我们的输入     ftp d   Connected to    FTP server ready   Name (:nixe n): nixe n    > USER nixe n    Password required for nixe n   Password:    > PASS XXXX    User nixe n logged in    > SYST    UNIX Type: L   Remote system type is UNIX   Using binary mode to transfer files   ftp> cd one    > CWD one    CWD mand successful   ftp> cd tmp    > CWD tmp    tmp: No such file or directory   ftp> bye    > QUIT    You have transferred bytes in files    Total traffic for this session was bytes in transfers    Thank you for using the FTP service on     在FTP协议中 控制连接使用周知端口 因此使用SSH的标准端口转发就可以这种连接进行很好的安全保护 相反 数据传输连接的目的端口通常实现无法知道 因此处理这样的端口转发非常困难 FTP协议使用一个标准的端口 作为ftp data端口 但是这个端口只用于连接的源地址是服务器端的情况 在这个端口上根本就没有监听进程 FTP的数据连接和控制连接的方向一般是相反的 也就是说 是服务器向客户端发起一个用于数据传输的连接 连接的端口是由服务器端和客户端协商确定的 FTP协议的这个特征对SSH转发以及防火墙和NAT的配置增加了很多困难     除此之外 还有另外一种FTP模式 叫做被动模式(passive mod) 在这种模式下 数据连接是由客户程序发起的 和刚才讨论过的模式(我们可以叫做主动模式)相反 是否采取被动模式取决于客户程序 在ftp命令行中使用passive命令就可以关闭/打开被动模式     在了解了使用SSH转发FTP连接的一些难点之后 我们将开始讨论如何解决这些问题      转发控制连接     FTP的控制连接的一端是一个周知端口 因此很容易通过SSH实现端口的转发 通常 需要保护的FTP服务器上需要运行SSH服务 而且你需要在服务器上有一个合法帐户以便通过SSH访问FTP服务     假设你已经登录到一台主机名为client的客户主机 然后想通过安全的连接登录到FTP服务器 要转发FTP控制连接 首先要在client上运行一个SSH端口转发命令     [nixe n@client nixe n]ssh L ::   nix cn s password:     接着 就可以使用被转发的端口登录到     [nixe n@clinet nixe n]ftp localhost   Connected to localhost    FTP server ready   Name:foo   Password:    User foo logged in   ftp>     这里 我们需要注意两个非常重要的问题     在本地进行转发 可能出现一些错误     在确定转发的目标时 建议不要使用localhost作为目标 因为有时使用这种地址可能出现一些莫名其妙的问题 假如在你的主机(client)上 有其它的网络接口(例如 eth ) 其地址为 如果你想在本机上进行SSH进行FTP端口转发     [nixe n@localhost nixe n]$ssh L :localhost: localhost   nixe n@localhost s password:     然后 使用ftp命令登录到FTP服务器就可能出现一些错误     [nixe n@localhost nixe n]ftp localhost   Connected to localhost    localhost FTP server ready   Name[localhost:nixe n]:nixe n    Password required for nixe n   Password:    User nixe n logged in   ftp>ls    PORT mand successful    Can t build data connection:Cannot assign requested address   ftp>     出现这个问题是因为FTP服务器会试图通过回环地址(lo: )向client(eth : )发起连接造成的 本机的回环接口只能和本机的其它回环接口进行通讯 如果和其它的网络接口(例如 eth )通讯 就会返回 address not available 的错误     客户程序需要使用被动模式 被动模式对于解决NAT/防火墙造成的一些问题很有帮助 Linux系统的ftp命令在默认情况下使用这种模式      FTP 防火墙和被动模式     前面我们讲过 FTP协议的数据传输存在两种模式 主动模式和被动模式 这两种模式发起连接的方向截然相反 主动模式是从服务器端向客户端发起 被动模式是客户端向服务器端发起连接 但是如果服务器和客户之间存在防火墙 主动模式经常会引起一些麻烦 设想 客户位于防火墙之后 防火墙允许所有内部向外部的连接通过 但是对于外部向内部发起的连接却存在很多限制 在这种情况下 客户可以正常地和服务器建立控制连接 而如果使用主动模式 ls put和get等数据传输命令就很难成功运行 因为防火墙会阻塞从服务器向客户发起的数据传输连接 简单包过滤防火墙把控制连接和数据传输连接完全分离开了 因此很难通过配置防火墙允许主动模式的FTP数据传输连接通过 如果防火墙允许ICMP或者TCP RST报文通过 客户程序就会马上返回connection refused错误信息 而如果防火墙只是做简单的丢弃处理 会造成客户程序挂起一段时间     被动模式一般可以解决此类问题 因为在被动模式下 连接是由客户端发起的饿 不过 这要看FTP服务器和客户程序是否支持被动模式 命令行FTP客户程序一般使用passive命令关/开被动模式 例如     ftp>passive   Passive mode off   ftp>passive   Passive mode on     如果客户程序不支持被动模式 它就会返回?Invaild mand 如果客户程序支持被动模式 而服务器不支持 就会返回 PASV:mand not understood PASV是一个FTP协议命令 使服务器进入到被动模式      FTP和网络地址转换(Neork Address Translation)     除了简单包过滤防火墙之外 被动模式也可以解决使用网络地址转换(NAT)给FTP造成的一些问题 在转发报文之前 进行网络地址转换的网关首先会改变报文的源地址和目的地址 网络地址转换能够提高网络的安全性 有助于解决IP地址资源不足问题      客户端网络地址转换问题     假设你的FTP客户主机位于局域网内 通过一个网络地址转换(NAT)网关连入互联网 在这种情况下 客户程序可以毫无困难地和外部的FTP服务器建立控制连接 但是 如果 cha138/Article/program/Oracle/201311/17826

相关参考

知识大全 对JAVA的两个FTP包进行比较分析

对JAVA的两个FTP包进行比较分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ftp*; 

知识大全 Linux下架设FTP

Linux下架设FTP  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Linux下一般最常用的工

知识大全 FTP站点设置是什么东西,还有SEO怎么做

FTP站点设置是什么东西,还有SEO怎么做?FTP站点怎么设置?高分悬赏!  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我

知识大全 用Java实现FTP服务器解决方案

用Java实现FTP服务器解决方案  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  FTP命令  

知识大全 用自动ftp提高工作效率

  自动FTP的SHELL脚本结合数据库的系统管理它有很多用途可以提高你的工作效率    用途:把数据库的逻辑备份或者其它关键的文件传到另一个地区实现远端备份    (例如从北京机房的传到上海机房) 

知识大全 建立数据库认证的FTP

建立数据库认证的FTP  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  proftp+mysql认

知识大全 php curl模仿ftp文件上传代码

php教程curl模仿ftp<?if(isset($_post[submit])) if(!empty($_files[upload][name]))   

知识大全 使用Java实现FTP服务器

使用Java实现FTP服务器  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 获取ServerSocket信息的方法及FTP原理

Java网络编程从入门到精通(28):获取ServerSocket信息的方法及FTP原理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发

知识大全 如何限制某个用户只能FTP不能TELNET

如何限制某个用户只能FTP不能TELNET?  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  很简