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