您肯定希望用 ssh 從遠程站點使用您的服務器,但是要讓這個過程進展順利還得用到一些技巧。MindTerm、socat 還有 VNC,哦,天哪!雖然能夠遠程工作一直都是系統程序員和管理員最喜歡的 Linux 優點之一,但設置遠程訪問卻不是一件簡單的事情。
選擇合適的遠程服務
每個月, 服務器診所都要描述如何最大程度地使用服務器室中的硬件。本專欄經常涉及使用 Linux 的方法,這些方法並不象理所應當的那樣眾所周知:將 Linux 用於 Fortran 程序、將 Linux 用於專為舊操作系統設計的應用程序等等。
緊接著的第二個話題便是本篇專欄文章的主題:安全性。
您的服務器在物理上應當是被隔離的,應當禁用所有不必要的聯網訪問,並且只能通過 ssh 或更好的方式訪問服務器。特別值得一提的是,盡可能少使用實時的 telnet 、 ftp 、 rlogin 和 rsh 以及相關服務;它們實在是太危險了。
假設您已經做了所有這些事。現在您出門在外 - 可能在演示產品,或者在與新客戶協商討論需求,或者在結束一個會議(這已歸入您的培訓預算之中)。您需要調出公司中的某些材料。那麼該怎麼辦呢?
首先,您當然應該嘗試一番。程序員和管理員本可以在正常的上班時間裡在自己比較安靜的工作場所工作,但是他們卻喜歡強迫自己突擊完成這些工作,這可是出了名的。您可別讓自己成為這種行為的犧牲品!確信您進行的連接具有合法的業務目的,並非違規行為。
但是,如果您過去有這些組織問題,那麼連接問題的答案便是“使用 ssh”。即使您原則上更依賴於虛擬專用網(VPN)而非 ssh,我還是認為出現緊急情況時,如若不能使用常規方法,那麼設置 ssh 訪問會比較謹慎些。VPN 仍然有些難以處理,並且需要依靠特別的硬件配置。如果您是通過客戶機的網絡(多半是使用普通桌面機器)“呼叫主機”的,則您可以進行的選擇是極其有限的。
ssh 滿足需要
好消息是 ssh 在這些限制的夾縫之中通常還能滿足需要。即使您外出辦事,但在公共接入點(比如“網吧”),您還是可能有足夠的資源使 ssh 工作。
您或許不能依賴於自己的設備。說得嚴重些,帶著任何比手持設備大的設備到處走,是另一個安全性風險;更糟的是,許多地方不准插入外來的硬件。您通常必須使用提供給您的硬件。
但是下載 puTTY、ssh 或 MindTerm 客戶機一般都很快。而且我也喜歡那樣做。任何具有足夠的網絡棧、可以連接到您的服務器室的主機,都可能有准許進行下載的 Web 浏覽器。使用已經安裝好的客戶機要小心;對於某些人而言,將客戶機替換成經過修改的、能捕獲擊鍵信息(或更糟的情況)的客戶機實在是太容易了。
另一種方式是構造嵌入了 MindTerm 客戶機作為 applet 的 Web 頁面,這表面上看起來挺吸引人的。而我的經驗告訴自己這種方法沒什麼用處。大多數地方都禁用 Java、或提供只具有舊的 Java 運行時引擎(JRE)的浏覽器,或者采用別的方式來降低 applet 的便利性。如果我要使用 MindTerm,則只想下載和安裝該客戶機以及兼容的 JRE。對於構造針對最終用戶的應用程序,applet 通常是一種好技術。applet 還適合進行只讀配置。但是,我發現這種用法非常少。因此,為使自己的工作具有效率,不值得花時間去解決 applet 環境中可能存在的難題。我一直覺得,找到一個兆字節的空閒大容量存儲器並在上面安裝 ssh 客戶機會更加方便。
您坐下一會後就應當安裝新的 ssh 客戶機並啟動它。但是,這可能還不夠。某些地方防火牆關閉了大多數端口,或者至少關閉了包括 ssh 的標准端口 22 在內的許多端口。
這裡有另一種准備提供幫助的方法。在我的至少一台主機上,我希望讓 sshd(ssh 守護程序)在通常被指派給常見因特網服務(比如 ftp、http、smtp 或 pop3)的端口上運行。即使是最嚴密的防火牆也要打開端口 21、8080、25 和 110 中的一個。將您的一台機器設置為“捕獲”這樣的通信,您就可以使它穿過大多數的防火牆。
這聽起來是否象是“非法闖入者”在說話呀?我 不贊成濫用網絡。經常有其它公司的雇員 邀請我使用他們的網絡,雖然他們也知道,用敏感的方式(比如臨時打開端口 22)更改他們的防火牆就公司制度而言是不可行的。我逐漸接受了這種認識:准備采用“旁門左道”也是當前專業實踐的一部分,但我需要確保自己只以一種負責任的方式完成這個工作。
當然,隨著 ssh 通道的打開,我就擁有像坐在服務器室中控制台前的幾乎所有功能。如果需要有圖形顯示,我可以通過通道使用 X 或 VNC,也可以從命令行訪問其它所有常見活動。
這樣就啟動了我的工作會話,然後:我下載引用 ssh 客戶機,快速安裝並啟動它們,然後用 SSL 保護的密碼往回驗證我留在服務器室中運行的某個 sshd。
請注意,我仍然容易受到篡改過的主機的攻擊。一個經過充分修改的桌面機器或一個警惕的“窺視狂”可以在擊鍵信息到達 SSL 庫之前將其記入日志。 這種情況的解決方案就是使用一次性密碼(OTP)系統。到目前為止,在我看來 OTP 帶來的麻煩多於安全性。OTP 給您自己帶來的代價和收益肯定至少會略微有所不同。無論如何,回到日常的工作場所可能是更新密碼的好時機。
使用標准部件
我希望 服務器診所每個月都顯示工作代碼。在本文中,很難添加任何代碼。我推薦的配置很簡單,在標准的參考資料中都作了充分的記錄。例如,要在第二個端口上添加 ssh 服務,只要將如下行:
Port 8080添加到現有的 /etc/ssh/sshd_config,然後重新啟動 sshd。另一個方法是使用“網絡代理程序”或“端口轉發器”(比如 netcat 或 socat),將它指回本地主機(localhost)的標准 ssh 端口,這個方法在運行試驗和調優日志記錄或額外安全性方面很有用。