2007年9月6日 星期四

遠端連線的黑暗技(SSH Tunnel)

記得筆者在遠端登入的優缺點一文中,提過SSH的連線!其實它還有不為人知的應用

但這些應用不一定是正面的,我僅做些許介紹,以免造成許多管理者的困擾,在此要感謝一下,教我的老師CASPER,告訴我們這一招SSH Tunnel(可怕黑暗技


接著我們就來看看SSH Tunnel的威力吧!...

其實ssh在Linux或文字介面模式中,是遠端登入很常見的一種協議,如果你是這一類的愛好者,對這個名詞就一定不會陌生,它的好處就是傳送的資料都是經過加密處理,不是明碼傳送的喔!

它除了可以加密之外,事實上還有很多應用層面,今天我要提的就是比較不一樣的黑暗技(因為它可以用來突破網管的限制...= =+)

舉例來說,如果公司不讓你收外部的信件時,除了透過外部主機之外(WEB MAIL),也可以利用ssh tunnel來達成

筆者就先粗略的說明一下ssh tunnel的意義,其實它就很類似VPN的用途,就是先透過ssh的加密連線,登入了遠端的主機之後,就在這兩台電腦之間建立一個資料流通道

所以,在你透過ssh tunnel與遠端主機連線之後,就可以透過這個通道,把你本來要在本機端做的服務,轉嫁到遠端主機上來做(如此一來,網管就管不著了...),其實真的要管還是可以鎖住的,但是會衍生出更多問題

使用的方式如下:

硬體:兩台電腦主機(都能上網,這應該很簡單)
軟體:兩台都具備ssh功能(遠端需可接受ssh連線)
條件:ssh的port(22)能通、並具備相當的使用權

指令:A連線B的ssh tunnel:ssh -L port:B的IP:port B的IP
  (A-IP:192.168.1.99;B-IP:192.168.1.100)
      本端port        遠端主機IP
       ↓            ↓
 例:ssh -L 80:192.168.1.100:80 192.168.1.100
     ↑      ↑      
     參數  透過遠端主機的port

說明:建立一條從192.168.1.99到192.168.1.100的通道(本機端80 PORT與遠端主機 80 PORT透過此通道連結)

如果B主機是一台WEB SERVER(開啟80 PORT),在A電腦(192.168.1.99)的瀏覽器鍵入:http://127.0.0.1(127.0.0.1為本機端預設IP,但是A電腦並無WEB服務),這個http的request(要)會透過ssh的22 port連接到B電腦(192.168.1.100)的80 port

所以,你就會在A電腦上看見B電腦的WEB首頁(代表你建立的ssh tunnel已成功),這種ssh tunnel的方式除了WEB之外,VNC(5900~5906)或是MAIL(110-POP3、25-SMTP)都可以,除了FTP不行(因為FTP會使用20、21和隨機開啟的PORT)

不過一般WINDOWS並不具備ssh client,所以可以透過putty(中文化的pietty)、或是OpenSSH for Windows(Binary Installer Releases --> 下載setupssh381-20040709.zip使用,即可透過DOS COMMAND模式做ssh連線)

其它的應用就請大家自行鑽研囉!(黑暗技別亂用!很容易出事...)

那管理者要怎麼避免這一類的情事發生呢?把PORT封住就可以了嗎?!(除非你都不開port,不然...有的連80 port都能鑽)

但在多人多工的主機上,開ssh的port又是必要的便民措施(如果以Linux為作業主軸),當然可以透過過濾封包的方式找出這一類的資料流(該種軟體的價位一點都不便民呀!),這就是大開方便之門的風險!

補充:其實有人也透過類似的方法,突破封鎖,做其它的應用(online game或其它事...),所以我僅做基本介紹,不然我可能會被網路管理者拖去打(我是無辜的,是CASPER教我的,哈!拖老師下水)