萬盛學電腦網

 萬盛學電腦網 >> 病毒防治 >> 使用ssh進行安全的連接

使用ssh進行安全的連接

您肯定希望用 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 端口,這個方法在運行試驗和調優日志記錄或額外安全性方面很有用。
代理程序
這裡的上下文中的“代理程序”是一個小型“轉換程序”,它只是讓網絡流量通過。如果我在端口 22 上設置了 sshd 服務器,並且希望在端口 110 上設置另一台 sshd 服務器,那麼實現這個想法的一個方法是安裝網絡代理程序。這樣的代理程序在端口 110 上用作服務器,接收來自外界的流量。它通過在端口 22 上充當客戶機來處理這些分組。基本 sshd 服務器完成所有的實際工作;代理程序的作用只是從一個端口轉換到另一個端口(可能在另一台主機上)。
這篇特別的專欄文章的真正價值並不在於深奧的代碼,而只是在於傳達了一個清晰的概念,您應該以此為目標來啟用自己的遠程服務。我已經嘗試過許多方法。利用這些經驗,尤其要了解 不要做什麼,至少要了解在您首次設置服務器室時不要做什麼:禁止 Telnet,不要讓不用的服務一直開著,不用擔心 applet(尤其不要擔心 applet 簽名),以及如若感到不對勁就不要進行遠程登錄。
另一方面,一定要使用標准部件。我已經嘗試過許多聰明的想法,用於調整 ssh 協議或自己的防火牆,以阻止“黑帽”黑客(指專門利用網絡技巧入侵網絡進行破壞的人,譯者注)。與這些想法所提供的安全性方面的小小增強相比,它們的維護比較困難,因此有些得不償失。除非我編制一個明確的安全性項目的預算,並具有明確的長期目標,否則最好將時間花在使用 ssh 上,而不是花時間設法改進它。
采用以上步驟,您將擁有一個服務器室,它的安全性要比您只使用標准的 Linux 服務器安裝時要好得多。您還能夠從全球可以找到幾乎所有的同步連接上遠程管理它。對於您自己的安全性計劃,這是一個不錯的起點。
原文鏈接:http://www-128.ibm.com/developerworks/cn/linux/l-sc15/index.html

copyright © 萬盛學電腦網 all rights reserved