国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關注微信公眾號

使用SSH進行FTP轉發
2005-11-25   

有關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服務器建立控制連接,但是,如果使用主動模式建立數據傳輸連接,還是會出現問題。在主動模式下,客戶程序會忽略NAT網關,直接使用FTP協議的PORT命令告訴服務器與一個包含客戶主機私有地址的套接字建立連接,因此服務器無法向客戶主機發起連接。被動模式也可以很好地解決這個問題。
到此為止,我們羅列了三種需要使用FTP被動模式的情況:控制連接的轉發;客戶位于簡單包過濾防火墻之后;和客戶主機位于NAT之后。在這三種情況下,主動模式可能無法正常使用,因此我們建議盡量使用FTP被動模式。
4.2.服務器端網絡地址轉換問題
上面我們討論了客戶端NAT問題。如果FTP服務器位于NAT網關之后,并且你正在通過SSH轉發FTP控制連接會怎么樣呢?很顯然,這種情況下麻煩更大。
首先,假設在沒有SSH轉發的情況下,服務器位于NAT網關之后會出現什么問題。這與前面討論的情況正好相反,在主動模式下,如果客戶主機位于NAT網關之后,客戶程序會使用FTP的PORT命令告訴服務器自己的私有IP地址,造成服務器無法建立連接;而如果服務器位于NAT網關之后,它就會通過FTP命令PASV告訴客戶程序自己未經轉換的地址,使客戶程序無法建立連接。在這種情況下,我們會想到可以使用主動模式來解決。但是,這種解決方式實際上沒有多大幫助。在網絡上,客戶主機位于NAT網關之后是非常普遍的,絕大多數FTP客戶程序的默認數據傳輸方式都是被動模式的。這樣,會對客戶造成很多不便,對提高服務器的訪問量非常不利。
因此,需要有其它的方法解決這個問題。現在的一些FTP服務器可以人工設置PASV命令的地址。wu-ftp,/etc/ftpaccess文件中使用如下命令來設置PASV的地址(具體用法可以參考man ftpaccess):
passive address
例如:
passive address 10.0.0.32 10.0.0.0/8
passive address 192.168.1.6 0.0.0.0/0
除此之外,還可以使用智能化的NAT網關解決這個問題。網關需要能夠識別位于應用層的FTP協議,能夠自動修改FTP協議的FTP控制報文。但是,如果使用SSH轉發FTP控制連接,因為控制連接被嵌入到了SSH會話通道中,使網關不能自動修改PASV的地址。這種情況下,你需要使用第一種方法。
5.使用默認數據傳輸端口
在FTP協議中,除了被動模式和主動模式之外,還有另外一種數據傳輸模式。如果客戶程序既不向服務器發出PASV命令也不發送PORT命令,FTP服務器就會使用FTP協議的數據傳輸端口(20)和客戶端的控制連接源端口建立一個數據傳輸連接。這就需要客戶程序在這個端口上監聽。在客戶程序上使用sendport命令可以關閉FTP協議的PORT控制指令,然后需要使用passive命令關閉被動模式。整個過程如下:
客戶程序從本地端口N初始化一個FTP控制連接。
用戶使用sendport命令和passive命令(某些客戶程序在默認情況下,被動模式是打開的)關閉主動模式和被動模式,然后使用數據傳輸指令,例如:ls、get等。這樣客戶程序就會在本地端口N上監聽FTP服務緝發起的數據傳輸連接。
服務器通過TCP例程(例如:getpeername())確定客戶端的端口N。然后從FTP數據傳輸端口(20)發起一個連接。
不過,這種方式有一個最大的缺點就是無法在很短的時間之內連續輸入數據傳輸命令,用戶經常會遇到"bind:Address Already in use等錯誤。這是TCP協議造成的。因此,這種模式并不常用。但是,它對于解決使用SSH轉發FTP數據連接的問題卻很有幫助。
6.轉發數據連接
前面我們提到了很多使用SSH轉發FTP數據連接會遇到的一些困難。現在,我們將討論如何使用SSH轉發FTP數據連接,這里我們將使用上一節介紹的數據傳輸模式。。注意:下面的討論是針對OpenSSH的。具體實現步驟如下:
在客戶段啟動SSH命令轉發FTP控制連接。使FTP客戶程序和轉發的端口建立連接。這里需要關閉被動模式。
client$ssh -f -n -L2001:localhost:21 server sleep 10000&
client$ ftp localhost 2001
Connected to localhost
220 server FTP server ready.
Password:
230 User res logged in.
ftp> sendport
Use of PORT cmds off.
ftp> passive
Passive mode off.
下面,我們還需要確定FTP客戶的真正和代理數據端口。在客戶端,可以使用netstat命令:
client$netstat -t|grep 2001
tcp 0 0 client:2001 client:3310 ESTABLISHED
tcp 0 0 client:3310 client:2001 ESTABLISHED
可以看出FTP客戶程序是通過3310端口和SSH連接。
下面我們需要知道服務器端使用的端口,假設現在服務器只為你一個人服務,使用netstat,我們獲得以下輸出:
server$netstat|grep ftp
tcp 0 0 server:8250 server:ftp ESTABLISHED
tcp 0 0 server:ftp server:8250 ESTABLISHED
這樣,我們知道了3310端口被轉發到了服務器端的8250端口。因此,FTP服務器就會認為這是在這種模式下,客戶程序使用的數據傳輸端口(和控制連接共用)。下面,我們只要把這個端口轉發到客戶端就可以了。
在客戶端使用如下命令轉發遠程服務器的8250端口:
clent$ssh -f -n -R8250:localhost:3310 server sleep 10000&
接著,最好在服務器端使用如下命令:
server$ssh -f -n -L8250:localhost:3310 client sleep 10000&
最后,你可以使用FTP數據傳輸命令了。
7.結論
本文其實主要討論了使用SSH進行FTP轉發的一些困難,最后討論的轉發方法其實幾乎沒有多大實用價值:)。

熱詞搜索:

上一篇:以 Openssh 取代 Telnet 的連線方式
下一篇:SSH 實戰

分享到: 收藏
国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区
午夜视频一区二区三区| 国产亚洲精品资源在线26u| 久久九九久久九九| 视频一区二区不卡| 3d成人h动漫网站入口| 性久久久久久久| 欧美精品自拍偷拍| 奇米一区二区三区av| 91麻豆精品国产自产在线| 亚洲电影一区二区三区| 91九色最新地址| 亚洲国产精品久久不卡毛片| 欧美性受xxxx黑人xyx| 亚洲午夜av在线| 日韩欧美一二三四区| 精品亚洲欧美一区| 日本一区二区免费在线| 欧美成人r级一区二区三区| 日日摸夜夜添夜夜添精品视频| 7777精品伊人久久久大香线蕉完整版| 日韩高清不卡一区| 精品少妇一区二区三区日产乱码| 国产精品系列在线观看| 亚洲美女屁股眼交3| 欧美日韩夫妻久久| 久久成人18免费观看| 亚洲欧洲av一区二区三区久久| 欧美日韩亚洲国产综合| 久久激情五月婷婷| 亚洲视频你懂的| 日韩午夜三级在线| 97精品国产露脸对白| 日本网站在线观看一区二区三区| 国产午夜精品理论片a级大结局 | 欧美激情一区二区三区在线| 欧美吻胸吃奶大尺度电影| 国产麻豆午夜三级精品| 亚洲自拍另类综合| 国产精品免费久久久久| 欧美一区二区三区色| 不卡高清视频专区| 男人的j进女人的j一区| 亚洲精品videosex极品| 久久免费视频一区| 欧美精品色综合| 91激情在线视频| www.成人在线| 一本久久a久久免费精品不卡| 91视频一区二区| 国产精品中文字幕日韩精品| 91在线视频观看| 国产一区二区免费在线| 亚洲国产成人av| 综合色天天鬼久久鬼色| 日韩一区二区三| 91免费视频网| 韩国av一区二区三区四区| 亚洲电影一区二区三区| 中文字幕一区二区三| 26uuu亚洲综合色| 国产亚洲精品中文字幕| 中文字幕制服丝袜一区二区三区| 欧美精品一区二区久久婷婷| 久久久精品国产99久久精品芒果 | 日韩精品一级二级 | 麻豆成人免费电影| 国产成人精品免费网站| 亚洲一区免费观看| 久久蜜桃av一区精品变态类天堂| 欧美精品一区视频| 日韩欧美一级片| 精品福利在线导航| 亚洲女同女同女同女同女同69| 亚洲免费观看高清完整版在线观看| 日韩中文字幕av电影| 亚洲国产欧美日韩另类综合| 国产欧美日韩综合| 亚洲欧美aⅴ...| 亚洲风情在线资源站| 爽好久久久欧美精品| 婷婷国产v国产偷v亚洲高清| 美国一区二区三区在线播放| 久久精品国产99久久6| 欧美亚洲一区三区| 色综合色综合色综合色综合色综合| 99精品视频在线观看| 欧美少妇性性性| 精品成人在线观看| 中文字幕永久在线不卡| 视频在线观看国产精品| 精品一区二区三区影院在线午夜 | 国产精品久久久久一区二区三区共| 国产精品久久久久久久久免费相片 | 欧美一三区三区四区免费在线看 | 悠悠色在线精品| 亚洲成人av福利| 国产成人aaa| 欧美三级在线看| 26uuu精品一区二区三区四区在线| 国产欧美视频一区二区三区| 亚洲一区视频在线| 国产酒店精品激情| 欧美日韩精品二区第二页| 久久久久久久久久看片| kk眼镜猥琐国模调教系列一区二区| 色噜噜狠狠成人网p站| 欧美xxxx在线观看| 亚洲一区二区av电影| 成人免费视频一区| 欧美日韩国产a| 日韩一级欧美一级| 依依成人精品视频| 成人av网站大全| 精品国产凹凸成av人导航| 亚洲国产wwwccc36天堂| 9久草视频在线视频精品| 日韩欧美123| 久久国产尿小便嘘嘘尿| 欧美日韩另类一区| 亚洲国产精品久久久男人的天堂| 91在线码无精品| 国产精品久久久久久久久久久免费看| 日韩av中文字幕一区二区三区| 99久久婷婷国产综合精品电影 | 日韩精品久久理论片| 欧美日韩在线播放一区| 亚洲影院理伦片| 欧美视频在线不卡| 亚洲成人7777| 日韩一区二区免费高清| 精品在线观看视频| 久久久夜色精品亚洲| 国产成人精品www牛牛影视| 日韩在线观看一区二区| 欧美色综合影院| 日韩中文字幕不卡| 精品国产青草久久久久福利| 国产在线国偷精品产拍免费yy| 欧美日韩一区二区三区免费看| 亚洲欧美色图小说| 欧美美女直播网站| 麻豆精品视频在线| 国产欧美综合在线| 91视频观看视频| 五月激情丁香一区二区三区| 在线成人小视频| 久久精品久久精品| 成人欧美一区二区三区| 欧美性猛交xxxxxxxx| 日本va欧美va精品发布| 26uuu国产一区二区三区| 成人短视频下载| 日韩激情视频网站| 国产欧美一区二区精品忘忧草| 在线亚洲免费视频| 国模冰冰炮一区二区| 一区二区三区91| 欧美日韩一级片网站| 日韩vs国产vs欧美| 亚洲欧美日韩人成在线播放| 日韩一区二区三区观看| 大尺度一区二区| 日韩二区三区四区| 中文字幕一区二区三区视频| 日韩一区二区在线免费观看| 成人理论电影网| 色成年激情久久综合| 国产精品1024久久| 免费看欧美美女黄的网站| 亚洲色图另类专区| 国产欧美精品一区二区三区四区| 欧美精品自拍偷拍| 欧美在线高清视频| 粉嫩欧美一区二区三区高清影视| 日本欧美在线观看| 亚洲福利一二三区| 一区二区三区四区在线播放| 中文字幕在线观看一区二区| 欧美一区二区三区小说| 欧美日韩在线播放| 日本精品一区二区三区四区的功能| 国产成人av网站| 国产精品资源在线看| 激情小说欧美图片| 久草在线在线精品观看| 免费成人av资源网| 三级不卡在线观看| 蜜桃一区二区三区在线观看| 青娱乐精品视频| 久久国内精品视频| 免费观看在线色综合| 九九**精品视频免费播放| 亚洲色图欧美在线| 这里是久久伊人| 欧美放荡的少妇| 夜夜嗨av一区二区三区| 日韩欧美美女一区二区三区| 国产成人综合自拍| 六月丁香婷婷久久| av成人免费在线|