知识大全 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包进行比较分析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ftp*;
Linux下架设FTP 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Linux下一般最常用的工
FTP站点设置是什么东西,还有SEO怎么做?FTP站点怎么设置?高分悬赏! 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我
用Java实现FTP服务器解决方案 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! FTP命令
自动FTP的SHELL脚本结合数据库的系统管理它有很多用途可以提高你的工作效率 用途:把数据库的逻辑备份或者其它关键的文件传到另一个地区实现远端备份 (例如从北京机房的传到上海机房)
建立数据库认证的FTP 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! proftp+mysql认
php教程curl模仿ftp<?if(isset($_post[submit])) if(!empty($_files[upload][name]))  
使用Java实现FTP服务器 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 获取ServerSocket信息的方法及FTP原理
Java网络编程从入门到精通(28):获取ServerSocket信息的方法及FTP原理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发
如何限制某个用户只能FTP不能TELNET? 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 很简