您肯定希望用 ssh 從遠(yuǎn)程站點(diǎn)使用您的服務(wù)器,但是要讓這個(gè)過(guò)程進(jìn)展順利還得用到一些技巧。MindTerm、socat 還有 VNC,哦,天哪!雖然能夠遠(yuǎn)程工作一直都是系統(tǒng)程序員和管理員最喜歡的 Linux 優(yōu)點(diǎn)之一,但設(shè)置遠(yuǎn)程訪(fǎng)問(wèn)卻不是一件簡(jiǎn)單的事情。
選擇合適的遠(yuǎn)程服務(wù)
每個(gè)月, 服務(wù)器診所都要描述如何最大程度地使用服務(wù)器室中的硬件。本專(zhuān)欄經(jīng)常涉及使用 Linux 的方法,這些方法并不象理所應(yīng)當(dāng)?shù)哪菢颖娝苤簩?Linux 用于 Fortran 程序、將 Linux 用于專(zhuān)為舊操作系統(tǒng)設(shè)計(jì)的應(yīng)用程序等等。
緊接著的第二個(gè)話(huà)題便是本篇專(zhuān)欄文章的主題:安全性。
您的服務(wù)器在物理上應(yīng)當(dāng)是被隔離的,應(yīng)當(dāng)禁用所有不必要的聯(lián)網(wǎng)訪(fǎng)問(wèn),并且只能通過(guò) ssh 或更好的方式訪(fǎng)問(wèn)服務(wù)器。特別值得一提的是,盡可能少使用實(shí)時(shí)的 telnet 、 ftp 、 rlogin 和 rsh 以及相關(guān)服務(wù);它們實(shí)在是太危險(xiǎn)了。
假設(shè)您已經(jīng)做了所有這些事。現(xiàn)在您出門(mén)在外 - 可能在演示產(chǎn)品,或者在與新客戶(hù)協(xié)商討論需求,或者在結(jié)束一個(gè)會(huì)議(這已歸入您的培訓(xùn)預(yù)算之中)。您需要調(diào)出公司中的某些材料。那么該怎么辦呢?
首先,您當(dāng)然應(yīng)該嘗試一番。程序員和管理員本可以在正常的上班時(shí)間里在自己比較安靜的工作場(chǎng)所工作,但是他們卻喜歡強(qiáng)迫自己突擊完成這些工作,這可是出了名的。您可別讓自己成為這種行為的犧牲品!確信您進(jìn)行的連接具有合法的業(yè)務(wù)目的,并非違規(guī)行為。
但是,如果您過(guò)去有這些組織問(wèn)題,那么連接問(wèn)題的答案便是“使用 ssh”。即使您原則上更依賴(lài)于虛擬專(zhuān)用網(wǎng)(VPN)而非 ssh,我還是認(rèn)為出現(xiàn)緊急情況時(shí),如若不能使用常規(guī)方法,那么設(shè)置 ssh 訪(fǎng)問(wèn)會(huì)比較謹(jǐn)慎些。VPN 仍然有些難以處理,并且需要依靠特別的硬件配置。如果您是通過(guò)客戶(hù)機(jī)的網(wǎng)絡(luò)(多半是使用普通桌面機(jī)器)“呼叫主機(jī)”的,則您可以進(jìn)行的選擇是極其有限的。
ssh 滿(mǎn)足需要
好消息是 ssh 在這些限制的夾縫之中通常還能滿(mǎn)足需要。即使您外出辦事,但在公共接入點(diǎn)(比如“網(wǎng)吧”),您還是可能有足夠的資源使 ssh 工作。
您或許不能依賴(lài)于自己的設(shè)備。說(shuō)得嚴(yán)重些,帶著任何比手持設(shè)備大的設(shè)備到處走,是另一個(gè)安全性風(fēng)險(xiǎn);更糟的是,許多地方不準(zhǔn)插入外來(lái)的硬件。您通常必須使用提供給您的硬件。
但是下載 puTTY、ssh 或 MindTerm 客戶(hù)機(jī)一般都很快。而且我也喜歡那樣做。任何具有足夠的網(wǎng)絡(luò)棧、可以連接到您的服務(wù)器室的主機(jī),都可能有準(zhǔn)許進(jìn)行下載的 Web 瀏覽器。使用已經(jīng)安裝好的客戶(hù)機(jī)要小心;對(duì)于某些人而言,將客戶(hù)機(jī)替換成經(jīng)過(guò)修改的、能捕獲擊鍵信息(或更糟的情況)的客戶(hù)機(jī)實(shí)在是太容易了。
另一種方式是構(gòu)造嵌入了 MindTerm 客戶(hù)機(jī)作為 applet 的 Web 頁(yè)面,這表面上看起來(lái)挺吸引人的。而我的經(jīng)驗(yàn)告訴自己這種方法沒(méi)什么用處。大多數(shù)地方都禁用 Java、或提供只具有舊的 Java 運(yùn)行時(shí)引擎(JRE)的瀏覽器,或者采用別的方式來(lái)降低 applet 的便利性。如果我要使用 MindTerm,則只想下載和安裝該客戶(hù)機(jī)以及兼容的 JRE。對(duì)于構(gòu)造針對(duì)最終用戶(hù)的應(yīng)用程序,applet 通常是一種好技術(shù)。applet 還適合進(jìn)行只讀配置。但是,我發(fā)現(xiàn)這種用法非常少。因此,為使自己的工作具有效率,不值得花時(shí)間去解決 applet 環(huán)境中可能存在的難題。我一直覺(jué)得,找到一個(gè)兆字節(jié)的空閑大容量存儲(chǔ)器并在上面安裝 ssh 客戶(hù)機(jī)會(huì)更加方便。
您坐下一會(huì)后就應(yīng)當(dāng)安裝新的 ssh 客戶(hù)機(jī)并啟動(dòng)它。但是,這可能還不夠。某些地方防火墻關(guān)閉了大多數(shù)端口,或者至少關(guān)閉了包括 ssh 的標(biāo)準(zhǔn)端口 22 在內(nèi)的許多端口。
這里有另一種準(zhǔn)備提供幫助的方法。在我的至少一臺(tái)主機(jī)上,我希望讓 sshd(ssh 守護(hù)程序)在通常被指派給常見(jiàn)因特網(wǎng)服務(wù)(比如 ftp、http、smtp 或 pop3)的端口上運(yùn)行。即使是最嚴(yán)密的防火墻也要打開(kāi)端口 21、8080、25 和 110 中的一個(gè)。將您的一臺(tái)機(jī)器設(shè)置為“捕獲”這樣的通信,您就可以使它穿過(guò)大多數(shù)的防火墻。
這聽(tīng)起來(lái)是否象是“非法闖入者”在說(shuō)話(huà)呀?我 不贊成濫用網(wǎng)絡(luò)。經(jīng)常有其它公司的雇員 邀請(qǐng)我使用他們的網(wǎng)絡(luò),雖然他們也知道,用敏感的方式(比如臨時(shí)打開(kāi)端口 22)更改他們的防火墻就公司制度而言是不可行的。我逐漸接受了這種認(rèn)識(shí):準(zhǔn)備采用“旁門(mén)左道”也是當(dāng)前專(zhuān)業(yè)實(shí)踐的一部分,但我需要確保自己只以一種負(fù)責(zé)任的方式完成這個(gè)工作。
當(dāng)然,隨著 ssh 通道的打開(kāi),我就擁有像坐在服務(wù)器室中控制臺(tái)前的幾乎所有功能。如果需要有圖形顯示,我可以通過(guò)通道使用 X 或 VNC,也可以從命令行訪(fǎng)問(wèn)其它所有常見(jiàn)活動(dòng)。
這樣就啟動(dòng)了我的工作會(huì)話(huà),然后:我下載引用 ssh 客戶(hù)機(jī),快速安裝并啟動(dòng)它們,然后用 SSL 保護(hù)的密碼往回驗(yàn)證我留在服務(wù)器室中運(yùn)行的某個(gè) sshd。
請(qǐng)注意,我仍然容易受到篡改過(guò)的主機(jī)的攻擊。一個(gè)經(jīng)過(guò)充分修改的桌面機(jī)器或一個(gè)警惕的“窺視狂”可以在擊鍵信息到達(dá) SSL 庫(kù)之前將其記入日志。 這種情況的解決方案就是使用一次性密碼(OTP)系統(tǒng)。到目前為止,在我看來(lái) OTP 帶來(lái)的麻煩多于安全性。OTP 給您自己帶來(lái)的代價(jià)和收益肯定至少會(huì)略微有所不同。無(wú)論如何,回到日常的工作場(chǎng)所可能是更新密碼的好時(shí)機(jī)。
使用標(biāo)準(zhǔn)部件
我希望 服務(wù)器診所每個(gè)月都顯示工作代碼。在本文中,很難添加任何代碼。我推薦的配置很簡(jiǎn)單,在標(biāo)準(zhǔn)的參考資料中都作了充分的記錄。例如,要在第二個(gè)端口上添加 ssh 服務(wù),只要將如下行:
Port 8080 |
代理程序
這里的上下文中的“代理程序”是一個(gè)小型“轉(zhuǎn)換程序”,它只是讓網(wǎng)絡(luò)流量通過(guò)。如果我在端口 22 上設(shè)置了 sshd 服務(wù)器,并且希望在端口 110 上設(shè)置另一臺(tái) sshd 服務(wù)器,那么實(shí)現(xiàn)這個(gè)想法的一個(gè)方法是安裝網(wǎng)絡(luò)代理程序。這樣的代理程序在端口 110 上用作服務(wù)器,接收來(lái)自外界的流量。它通過(guò)在端口 22 上充當(dāng)客戶(hù)機(jī)來(lái)處理這些分組?;?sshd 服務(wù)器完成所有的實(shí)際工作;代理程序的作用只是從一個(gè)端口轉(zhuǎn)換到另一個(gè)端口(可能在另一臺(tái)主機(jī)上)。
這篇特別的專(zhuān)欄文章的真正價(jià)值并不在于深?yuàn)W的代碼,而只是在于傳達(dá)了一個(gè)清晰的概念,您應(yīng)該以此為目標(biāo)來(lái)啟用自己的遠(yuǎn)程服務(wù)。我已經(jīng)嘗試過(guò)許多方法。利用這些經(jīng)驗(yàn),尤其要了解 不要做什么,至少要了解在您首次設(shè)置服務(wù)器室時(shí)不要做什么:禁止 Telnet,不要讓不用的服務(wù)一直開(kāi)著,不用擔(dān)心 applet(尤其不要擔(dān)心 applet 簽名),以及如若感到不對(duì)勁就不要進(jìn)行遠(yuǎn)程登錄。
另一方面,一定要使用標(biāo)準(zhǔn)部件。我已經(jīng)嘗試過(guò)許多聰明的想法,用于調(diào)整 ssh 協(xié)議或自己的防火墻,以阻止“黑帽”黑客(指專(zhuān)門(mén)利用網(wǎng)絡(luò)技巧入侵網(wǎng)絡(luò)進(jìn)行破壞的人,譯者注)。與這些想法所提供的安全性方面的小小增強(qiáng)相比,它們的維護(hù)比較困難,因此有些得不償失。除非我編制一個(gè)明確的安全性項(xiàng)目的預(yù)算,并具有明確的長(zhǎng)期目標(biāo),否則最好將時(shí)間花在使用 ssh 上,而不是花時(shí)間設(shè)法改進(jìn)它。
采用以上步驟,您將擁有一個(gè)服務(wù)器室,它的安全性要比您只使用標(biāo)準(zhǔn)的 Linux 服務(wù)器安裝時(shí)要好得多。您還能夠從全球可以找到幾乎所有的同步連接上遠(yuǎn)程管理它。對(duì)于您自己的安全性計(jì)劃,這是一個(gè)不錯(cuò)的起點(diǎn)。
原文鏈接:http://www-128.ibm.com/developerworks/cn/linux/l-sc15/index.html