动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Oracle教程 ]的信息

本月文章推荐
.ORACLE入门之OLTP和DSS不同数据库.
.关于触发器修改自身数据表实例.
.如何使用分析函数进行行列转换.
.TestKing Oracle 1Z0-033 Edt19.0.
.Oracle9i初始化参数中文说明(4).
.Oracle数据库常见问题诊断-SQL*N.
.Part I 企业入口网站与Oracle Po.
.在Oracle10gisqlplus下登录dba用.
.[Oracle 10g] 表空间更名.
.Oracle数据库技术(42).
.ORACLE在HP-UX下的系列问题处理(.
.Oracle 的 in 和 not in ――性能.
.几个删除重复记录的SQL语句.
.全面讲解归档可用的缓冲大小和数.
.Linux之菜鸟日记(二).
.用动态SQL方法4连接 Oracle 的实.
.PL/SQL DEVELOPER 基本用法详解.
.Red Hat Enterprise Linux AS 3上.
.大型数据库信息排错一法.
.关于数据文件头的检查点SCN.

SSH进阶(二):FTP转发

发表日期:2008-2-9 |



  简介
  1.FTP协议简介
  2.转发控制连接
  3.FTP、防火墙和被动模式
  4.FTP和网络地址转换(Network Address Translation)
  
  4.1.客户端网络地址转换问题
  4.2.服务器端网络地址转换问题
  
  5.使用默认数据传输端口
  6.转发数据连接
  7.结论
  
  简介
  
  有关SSH,一个经常被问起的问题是“我怎样才能使用端口转发加强FTP安全?”。很不幸,你得到的回答一般非常简短,让你仍然无所适从。在标准FTP协议中,所有的数据都是明文传输的,因此网络上可能存在的嗅探器是一个极大的威胁。使用嗅探器,攻击者很轻易获得你的帐户和密码。而在SSH的数据传输过程中,所有的数据以密文的形式传输的,所以SSH的端口转发功能能够很好地保护的帐户密码。
  
  本文具体地解释你能够使用SSH和FTP做什么,不能做什么,以及其原因。这里有FTP本身的复杂性造成的问题。除此之外,防火墙和网络地址转换(Network Address Translation)也给我们制造了不少困难。因为现在防火墙和网络地址转换(Network Address Translation)已经广泛存在了,因此我们将对这些情况进行具体的讨论。不过,由于网络环境千差万别,我们无法覆盖所有可能出现的问题,这就需要你自己举一反三了。
  
  1.FTP协议简介
  
  为了便于后面的讨论,我们首先简要地讨论一下FTP协议(假如对FTP协议已经有了比较深入的了解,你可以略过这一节)。大多数的TCP服务是使用单个的连接,一般是客户向服务器的一个周知端口发起连接,然后使用这个连接进行通讯。但是,FTP协议却有所不同,它使用双向的多个连接,而且使用的端口很难预计。一般,FTP连接包括:
  
  一个控制连接(control connection)
  
  这个连接用于传递客户端的命令和服务器端对命令的响应。它使用服务器的21端口,生存期是整个FTP会话时间。
  
  几个数据连接(data connection)
  
  这些连接用于传输文件和其它数据,例如:目录列表等。这种连接在需要数据传输时建立,而一旦数据传输完毕就关闭,每次使用的端口也不一定相同。而且,数据连接既可能是客户端发起的,也可能是服务器端发起的。
  
  下面,我们通过一个FTP客户程序看一下控制连接。这里,我们需要使用debug模式(ftp -d)才能显示客户发出的FTP协议命令。在客户程序的输出信息中,这些协议命令是以--->开头的,例如:
  
  ---> USER nixe0n
  
  在命令发出之后,服务器会发出响应,响应信息以数字开头,例如:
  
  530 Login incorrect.
  
  下面,我们和FTP服务器建立一个连接,使用用户名nixe0n登录,在会话过程中发出两次目录切换名,一次成功一次失败,其中黑体是我们的输入:
  
  ftp -d ftp.Linuxaid.com.cn
  Connected to ftp.linuxaid.com.cn.
  220 ftp.linuxaid.com.cn FTP server ready.
  Name (ftp.linuxaid.com.cn:nixe0n): nixe0n
  ---> USER nixe0n
  331 PassWord required for nixe0n.
  Password:
  ---> PASS XXXX
  230 User nixe0n logged in.
  ---> SYST
  215 UNIX Type: L8
  Remote system type is UNIX.
  Using binary mode to transfer files.
  ftp> cd one
  ---> CWD one
  250 CWD command sUCcessful.
  ftp> cd tmp
  ---> CWD tmp
  550 tmp: No such file or Directory.
  ftp> bye
  ---> QUIT
  221-You have transferred 0 bytes in 0 files.
  221-Total traffic for this session was 398 bytes in 0 transfers.
  221 Thank you for using the FTP service on ftp.linuxaid.com.cn.
  
  在FTP协议中,控制连接使用周知端口21,因此使用SSH的标准端口转发就可以这种连接进行很好的安全保护。
相反,数据传输连接的目的端口通常实现无法知道,因此处理这样的端口转发非常困难。FTP协议使用一个标准的端口21作为ftp-data端口,但是这个端口只用于连接的源地址是服务器端的情况,在这个端口上根本就没有监听进程。FTP的数据连接和控制连接的方向一般是相反的,也就是说,是服务器向客户端发起一个用于数据传输的连接。连接的端口是由服务器端和客户端协商确定的。FTP协议的这个特征对SSH转发以及防火墙和NAT的配置增加了很多困难。
  
  除此之外,还有另外一种FTP模式,叫做被动模式(passive mod)。在这种模式下,数据连接是由客户程序发起的,和刚才讨论过的模式(我们可以叫做主动模式)相反。是否采取被动模式取决于客户程序,在ftp命令行中使用passive命令就可以关闭/打开被动模式。
  
  在了解了使用SSH转发FTP连接的一些难点之后,我们将开始讨论如何解决这些问题。
  
  2.转发控制连接
  
  FTP的控制连接的一端是一个周知端口21,因此很轻易通过SSH实现端口的转发。通常,需要保护的FTP服务器上需要运行SSH服务,而且你需要在服务器上有一个合法帐户以便通过SSH访问FTP服务。
  
  假设你已经登录到一台主机名为client的客户主机,然后想通过安全的连接登录到FTP服务器ftp.linuxaid.com.cn。要转发FTP控制连接,首先要在client上运行一个SSH端口转发命令:
  
  [nixe0n@client nixe0n]ssh -L 2001:ftp.linuxaid.com.cn:21 ftp.linuxaid.com.cn
  nixe0n@ftp.linuxaid.com.cn's password:
  
  接着,就可以使用被转发的端口登录到ftp.linuxaid.com.cn:
  
  [nixe0n@clinet nixe0n]ftp localhost 2001
  Connected to localhost
  220 ftp.linuxaid.com.cn FTP server ready.
  Name:foo
  Password:
  230 User foo logged in.
  ftp>
  
  这里,我们需要注重两个非常重要的问题:
  
  在本地进行转发,可能出现一些错误。
  
  在确定转发的目标时,建议不要使用localhost作为目标,因为有时使用这种地址可能出现一些莫名其妙的问题。假如在你的主机(client)上,有其它的网络接口(例如:eth0),其地址为192.168.0.1,假如你想在本机上进行SSH进行FTP端口转发:
  
  [nixe0n@localhost nixe0n]$ssh -L 2001:localhost:21 localhost
  nixe0n@localhost's password:
  
  然后,使用ftp命令登录到FTP服务器就可能出现一些错误:
  
  [nixe0n@localhost nixe0n]ftp localhost 2001
  Connected to localhost
  220 localhost FTP server ready.
  Name[localhost:nixe0n]:nixe0n
  331 Password required for nixe0n
  Password:
  230 User nixe0n logged in
  ftp>ls
  200 PORT command successful.
  425 Can't build data connection:Cannot assign requested address.
  ftp>
  
  出现这个问题是因为FTP服务器会试图通过回环地址(lo:127.0.0.1)向client(eth0:192.168.0.1)发起连接造成的。本机的回环接口只能和本机的其它回环接口进行通讯,假如和其它的网络接口(例如:eth0)通讯,就会返回"address not available"的错误。
  
  客户程序需要使用被动模式,被动模式对于解决NAT/防火墙造成的一些问题很有帮助。Linux系统的ftp命令在默认情况下使用这种模式。
  
  3.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 command;假如客户程序支持被动模式,而服务器不支持,就会返回"PASV:command not understood",PASV是一个FTP协议命令,使服务器进入到被动模式。
  
  4.FTP和网络地址转换(Network Address Translation)
  
  除了简单包过滤防火墙之外,被动模式也可以解决使用网络地址转换(NAT)给FTP造成的一些问题。
在转发报文之前,进行网络地址转换的网关首先会改变报文的源地址和目的地址。网络地址转换能够提高网络的安全性,有助于解决IP地址资源不足问题。
  
  4.1.客户端网络地址转换问题
  
  假设你的FTP客户主机位于局域网内,通过一个网络地址转换(NAT)网关连入互联网。在这种情况下,客户程序可以毫无困难地和外部的FTP服务器建立控制连接,但是,假如
上一篇:xinetd使用指南 人气:538
下一篇:Linux CVS Server与jCVS Client进行分布式开发 人气:599
浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-12 team论坛 v2.0.4 bulid 080916 A
2008-10-12 Roclog v3.1.6
2008-10-12 SupeV v1.0.1 简体中文 GBK
2008-10-12 NetCMS v1.6.0.1010 正式版
2008-10-12 PHP考试系统PPFrame v1.2.7
2008-10-12 LPAS个人相册 v1.6.3
2008-10-12 快问仿百度知道系统 动态-静态-互
2008-10-12 方卡广告防点击系统 V1.0 GB2312
2008-10-12 泡菜内容管理系统[PCMS] v1.0 Bu
2008-10-11 联系人分组工具 v1.1 中文破解版
2008-10-11 FaceMelter变脸 v2.0 汉化破解版
2008-10-11 PathTracker道路跟踪仪 v1.2 破解
2008-10-11 Rooms手机聊天室 v0.6.7 破解版
2008-10-11 RemoteDesktop远程桌面 v1.0 破解
2008-10-11 ProRemote远程调音台 v1.0.1 破解
2008-10-11 PicShare照片共享 v1.0.0 破解版
2008-10-11 Photogene照片编辑器 v1.5 汉化破
2008-10-11 WriteRoom共享文档 v1.0 破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号