安全和穩(wěn)定是Linux操作系統(tǒng)的兩大特點。由于Linux采取了許多安全技術措施,包括讀/寫權限控制、帶保護的子系統(tǒng)、審計跟蹤、核心授權等,為網(wǎng)絡多用戶環(huán)境中的用戶提供了必要的安全保障,因此越來越多的用戶開始學習和使用Linux。但是Linux的安全要建立在有效的防范基礎上,如果是一個不加任何防范和限制的Linux系統(tǒng),同樣也有較多漏洞。以傳統(tǒng)的網(wǎng)絡服務程序為例,F(xiàn)TP、R Shell和Telnet等服務在本質上都存在不安全因素,因為它們在網(wǎng)絡上用“明文”傳送口令和數(shù)據(jù),使別有用心的人很容易截獲這些口令和數(shù)據(jù)。同時這些服務程序的安全驗證方式也有弱點,很容易受到“中間人”(man-in-the-middle)的攻擊。所謂“中間人”的攻擊方式,即“中間人”冒充真正的服務器接收用戶傳給服務器的數(shù)據(jù),然后再冒充該用戶把數(shù)據(jù)傳給真正的服務器。服務器和用戶之間的數(shù)據(jù)傳送被“中間人”做了手腳之后,會出現(xiàn)很嚴重的問題。所以,盡可能地使用安全的工具來管理系統(tǒng)顯得愈發(fā)重要。 傳統(tǒng)遠程管理工具的特點 遠程登錄的作用就是讓用戶以模擬終端的方式,登錄到Internet的某臺主機上。一旦連接成功,這些個人計算機就像遠程計算機的一個終端,可以像使用終端計算機一樣輸入命令,并運行遠程計算機中的程序。 在企業(yè)通常的使用環(huán)境中,服務器放在ISP托管中心或其服務器機房內,只有少數(shù)人才能進入并接觸到主機。因此管理員通常會在服務器上開啟Telnet服務守護進程,以便能夠隨時觀察服務器上的變化,并登錄到服務器上進行維護;如果管理員需要在服務器調試程序,還會開啟FTP服務進程,從本地機上傳程序到服務器進行調試(如圖1所示)。可見這種終端的服務對網(wǎng)絡管理員來說非常重要。
圖1 管理員利用終端服務對ISP進行操控 一般在遠程管理中經(jīng)常使用遠程管理Telnet的工具有CRT、NetTerm、ShellNet,以及Rlogin、Rcp、Rexec、Rsh(所有以“R”開頭的服務都建立在不與外界進行任何聯(lián)系的基礎上。出于安全方面的考慮,必須禁止這些進程的啟動)。這些工具的優(yōu)點是使用方便、配置簡單;缺點是不夠安全。以Telnet為例,因為其以“明碼”傳輸,所以不能稱為一個很好的聯(lián)機方式。什么是“明碼”?簡單地說,使用Telnet時,系統(tǒng)會出現(xiàn)一個主機界面,如果沒有設置系統(tǒng)的issue.net文件為空,系統(tǒng)默認出現(xiàn)的界面就會泄露一些對用戶不利的信息給別人,如圖2所示。
圖2 Telnet登錄主機界面 用戶需要輸入賬號與密碼,當主機接受資料后才能進行確認。此時,用戶資料就會經(jīng)過Telnet協(xié)議傳輸?shù)街鳈C上。如果有人正在某個router節(jié)點監(jiān)聽封包,就可以輕而易舉地截獲資料封包,并可以通過解讀竊取賬號和密碼。建議非必要時不要激活Telnet;如果一定要激活,必須確定限制的聯(lián)機范圍,并使用iptables設定聯(lián)機的限制區(qū)域。此外,還要隨時注意登錄檔案里關于登錄的事項,不要讓root用戶以Telnet方式登入Linux主機。 SSH及OpenSSH簡介 SSH(Secure Shell)是以遠程聯(lián)機服務方式操作服務器時的較為安全的解決方案。它最初由芬蘭的一家公司開發(fā),但由于受版權和加密算法的限制,很多人轉而使用免費的替代軟件OpenSSH。 用戶通過SSH可以把所有傳輸?shù)臄?shù)據(jù)進行加密,使“中間人”的攻擊方式不可能實現(xiàn),而且也能夠防止DNS和IP欺騙。它還有一個額外的好處是傳輸?shù)臄?shù)據(jù)是經(jīng)過壓縮的,可以加快傳輸?shù)乃俣取SH作用廣泛,既可以代替Telnet,又可以為FTP、POP,甚至為PPP提供一個安全的“通道”。SSH協(xié)議在預設的狀態(tài)中,提供兩個服務器功能:一個是類似Telnet的遠程聯(lián)機使用Shell服務器,即俗稱SSH功能;另一個是類似FTP服務的SFTP-Server功能,可提供更安全的FTP服務。 SSH的安全驗證如何工作呢?主要依靠聯(lián)機加密技術。從客戶端來看,有以下兩種安全驗證級別: 1.基于口令的安全驗證(ssh1) 只要知道自己的賬號和口令,就可以登錄到遠程主機。所有傳輸?shù)臄?shù)據(jù)都將被加密,但是不能保證正在連接的服務器就是想要連接的服務器??赡苁艿?#8220;中間人”的攻擊。 2.基于密匙的安全驗證(ssh2) 需要依靠密匙,即用戶必須為自己創(chuàng)建一對密匙,并把公用密匙放在需要訪問的服務器上。如果要連接到SSH服務器上,客戶端軟件就會向服務器發(fā)出請求,請求用密匙進行安全驗證。服務器收到請求之后,先在該服務器的home目錄下尋找公用密匙,然后把它和發(fā)送過來的公用密匙進行比較。如果兩個密匙一致,服務器就用公用密匙加密“質詢”(challenge),并把它發(fā)送給客戶端軟件??蛻舳塑浖盏?#8220;質詢”后,就可以用私人密匙解密再把它發(fā)送給服務器。使用這種方式,用戶必須知道自己密匙的口令。與第一種級別相比,這種級別不需要在網(wǎng)絡上傳送口令,不僅加密所有傳送的數(shù)據(jù),而且阻止了“中間人”攻擊方式。整個登錄的過程一般需要10秒。 OpenSSH的安裝和啟動 OpenSSH的安裝非常簡便,操作如下。 1.下載軟件包。到http://www.openssh.com下載最新軟件包OpenSSH 3.6.1(最好下載源程序軟件包后自行編譯)。本文以openssh-3.5p1.tar.gz為例進行介紹,安裝環(huán)境為Red Hat 7.1/kernel 2.4.8/gcc-2.96-98。 2. 解壓及安裝,代碼如下:
重啟計算機以后,用下列命令進行測試:
因為是第一次登錄主機,OpenSSH將顯示不能識別該主機。鍵入“yes”,把主機的“識別標記”加到“~/.ssh/know_hosts”文件中。第二次訪問這臺主機的時候就不會再顯示這條提示信息。然后,OpenSSH提示輸入遠程主機上的賬號及口令。輸入完后就建立了SSH連接,可以像使用Telnet一樣使用OpenSSH。 配置基于密鑰認證的OpenSSH 缺省情況下,SSH將默認使用口令驗證方式。不需要對系統(tǒng)進行任何配置就可以使用賬號和口令登錄到遠程主機。下面介紹如何配置并使用基于密匙認證的OpenSSH(假設用戶名為geminis,主機IP為192.168.0.1)。 首先創(chuàng)建一對密匙(包括公匙和密匙,并且用公匙加密的數(shù)據(jù)只能用密匙解密),把公匙放到需要遠程服務器上。當?shù)卿涍h程服務器時,客戶端軟件會向服務器發(fā)出請求,請求用密匙進行認證,代碼如下:
如果創(chuàng)建成功,系統(tǒng)將返回以下信息:
接下來,把id_dsa.pub發(fā)布到服務器上。通過FTP將公匙文件“/home/admin/.ssh/id_dsa.pub”,復制到遠程服務器的“/home/admin/.ssh”目錄。如果.ssh目錄不存在,可以用mkdir命令先建立。然后,將“id_dsa.pub”重命名為“authorized_keys2”,代碼如下:
注意,如果authorized_keys2文件的權限不正確,會導致SSH連接失敗。 服務器收到請求之后,在該服務器的宿主目錄下尋找公匙,然后檢查該公匙是否合法。如果合法就用公匙加密一隨機數(shù)(即所謂的challenge)并發(fā)送給客戶端軟件??蛻舳塑浖盏胶缶陀盟匠捉饷茉侔阉l(fā)送給服務器。因為用公匙加密的數(shù)據(jù)只能用密匙解密,服務器經(jīng)過比較就可以知道該客戶連接的合法性。連接代碼如下:
系統(tǒng)返回以下信息:
OpenSSH客戶端使用方法 1. Windows平臺 客戶端通常使用Windows平臺,操作較為直觀。下面對幾種客戶端工具進行介紹。 ◆ PuTTY 在客戶端使用SSH較好的工具是PuTTY,這是一個開源軟件。用戶可以根據(jù)自己的配置情況對該軟件進行修改,如圖3所示。
圖3 PuTTY配置界面 如果是第一次使用該軟件,系統(tǒng)會提示下載有關主機的“識別標記”,選擇“yes”,下次登錄就不會出現(xiàn)提示框。 ◆ Filezilla Filezilla是客戶端使用SFTP的一款不錯的開源軟件,對中文支持很好,配置界面如圖4所示。
圖4 Filezilla配置界面 2. Linux終端 在Linux終端下使用SSH,優(yōu)點是操作更方便,無須其它軟件;缺點是不太直觀。使用方法及命令介紹如下: ◆ SSH的使用
◆ SFTP的使用
SFTP相關命令的使用方法如表1所示。 3.進階提高要點 配置SSH客戶端文件“/etc/ssh/ssh_config”,如圖5所示。
圖5 配置“/etc/ssh/ssh_config”文件 表1 SFTP相關命令的使用方法
選項設置說明如表2所示。 表2 SSH配置選項說明
配置SSH服務器端文件“/etc/ssh/sshd_config”,取消口令驗證。把“PasswordAuthentication Yes”改為“no”,可以禁止使用第一種口令驗證。 配置“/etc/ssh/sshd_config”文件,編輯“sshd_config”文件,加入或改變下面的參數(shù):
|