在中小型異構(gòu)網(wǎng)絡(luò)中,很多用戶選擇Linux作為網(wǎng)絡(luò)操作系統(tǒng),利用其簡單的配置和用戶熟悉的圖形界面提供Internet服務(wù),F(xiàn)TP便是其提供的服務(wù)之一。在眾多網(wǎng)絡(luò)應(yīng)用中,F(xiàn)TP(文件傳輸協(xié)議)有著非常重要的地位。互聯(lián)網(wǎng)一個十分重要的資源就是軟件資源,而各種各樣的軟件資源大多數(shù)都放在FTP服務(wù)器中。與大多數(shù)互聯(lián)網(wǎng)服務(wù)一樣,F(xiàn)TP也是一個客戶機(jī)/服務(wù)器系統(tǒng)。
FTP是傳統(tǒng)的網(wǎng)絡(luò)服務(wù)程序,在本質(zhì)上是不安全的,因為它們在網(wǎng)絡(luò)上用明文傳送口令和數(shù)據(jù),別有用心的人非常容易就可以截獲這些口令和數(shù)據(jù)。而且,這些服務(wù)程序的安全驗證方式也是有其弱點的,就是很容易受到“中間人”(man-in-the-middle)這種方式的攻擊。所謂“中間人”的攻擊方式,就是“中間人”冒充真正的服務(wù)器接收你傳給服務(wù)器的數(shù)據(jù),然后再冒充你把數(shù)據(jù)傳給真正的服務(wù)器。服務(wù)器和你之間的數(shù)據(jù)傳送被“中間人”轉(zhuǎn)手后做了手腳之后,就會出現(xiàn)很嚴(yán)重的問題。 截獲這些口令的方式主要為暴力破解。另外使用sniffer程序監(jiān)視網(wǎng)絡(luò)封包捕捉FTP開始的會話信息,便可順手截獲root密碼。
SSH(Secure Shell)是以遠(yuǎn)程聯(lián)機(jī)服務(wù)方式操作服務(wù)器時的較為安全的解決方案。它最初由芬蘭的一家公司開發(fā),但由于受版權(quán)和加密算法的限制,很多人轉(zhuǎn)而使用免費的替代軟件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ù)器??赡苁艿健爸虚g人”的攻擊。
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ù),而且阻止了“中間人”攻擊方式。OpenSSH目前存在兩個安全遺患:口令、密匙破解(利用字典文件去解密碼)和OpenSSH中可能被安放木馬。
一、SRP簡介
SRP全稱:Secure Remote Password(安全遠(yuǎn)程密碼),它是一個開放源代碼認(rèn)證協(xié)議。使用SRP的客戶機(jī)/服務(wù)器不會在網(wǎng)絡(luò)上以明文或加密的方式傳送密碼,這樣可以完全消除密碼欺騙行為。保證口令可以安全地在網(wǎng)絡(luò)上面?zhèn)魉?。基本的思想是,防止有被動或主動網(wǎng)絡(luò)入侵者使用字典攻擊。Standford大學(xué)計算機(jī)系開發(fā)了SRP軟件包,提供基于口令認(rèn)證和會話加密的安全機(jī)制,而不需要用戶或者是網(wǎng)管參與密鑰的管理或分發(fā)。SRP為每一個人提供透明的密碼安全,而沒有其他昂貴的起始開銷,比如阻止其他安全套件軟件的使用等。不像其他的安全軟件,SRP套件是一個完全的實現(xiàn)密碼認(rèn)證的軟件包,不是臨時的解決方案。和標(biāo)準(zhǔn)的/etc/shadow-style 安全比較,SRP在每一個方面都是比較好的。使用SRP對用戶和管理者都有以下的好處:
SRP抵制“password sniffing”(口令監(jiān)聽)攻擊。在一個使用SRP認(rèn)證的會話中,監(jiān)聽者不會監(jiān)視到任何在網(wǎng)絡(luò)中傳送的口令。在遠(yuǎn)程登陸軟件中,明文的密碼傳送是最大的安全漏洞。任何人可以用一個簡單的嗅探器(sniffer)工具得到你登陸到遠(yuǎn)程系統(tǒng)的密鑰。
SRP抵制字典攻擊。一個系統(tǒng)保護(hù)簡單的密碼監(jiān)聽是不夠的。如果攻擊者使用強(qiáng)力攻擊,例如字典攻擊等,他們不是簡單的直接監(jiān)聽密碼,而是跟蹤整個的會話過程,然后把整個的信息和字典中的普通密碼對照。甚至有的Kerberos系統(tǒng)對這樣的攻擊也是脆弱的。SRP在抵制字典攻擊的前,就進(jìn)行口令的安全處理了。使用的算法就是在攻擊者進(jìn)行強(qiáng)力攻擊前就要求攻擊者必須執(zhí)行一次不可能的的大的計算。SRP甚至保護(hù)針對口令的“active”攻擊。因此,即使入侵者有能力和網(wǎng)絡(luò)接觸,也不能攻破SRP。所以即使是用戶使用的是很脆弱的口令,也不會讓入侵者很容易地破解的。SRP對于終端用戶是完全透明的。因為沒有所謂的“密鑰鏈”(keyrings)以及“證書”(certificates),或者“票據(jù)”(ticket)。你的口令就是密鑰。SRP簡單地保護(hù)這個密鑰,但要比老的、弱的密鑰保護(hù)機(jī)制要好。SRP從管理者的角度來說也是容易實施的。沒有所謂的“密鑰服務(wù)器”、“證書認(rèn)證”,以及“認(rèn)證服務(wù)器”等這樣的概念。SRP口令文件在標(biāo)準(zhǔn)的Unix口令文件的旁邊,軟件本身協(xié)同這兩個系統(tǒng)口令和SRP口令文件的一致性,沒有多余的維護(hù)系統(tǒng)的機(jī)制。SRP在認(rèn)證一個用戶的時候交換一個加密的密鑰。這就意味著一個登陸會話是可以被加密,而抵制所謂的網(wǎng)絡(luò)監(jiān)聽和惡意地篡改。用戶在遠(yuǎn)程閱讀他們的信箋,是使用128-bit加密后的信息,這是當(dāng)用戶登陸后自動處理的,而用戶本身不必關(guān)心到底需要不需要加密。系統(tǒng)完成加密,然后送到用戶的這里。另外SRP不使用加密進(jìn)行認(rèn)證,這使得它比基于公用/私用密匙的認(rèn)證方式速度更快捷、安全。SRP缺省使用的128-bit的CAST加密算法。CAST-128在RFC2144(http://srp.stanford.edu/srp/rfc2144.txt)中有定義。標(biāo)準(zhǔn)的SRP也支持56-bit的DES以及48位的DES。高級的支持Triple-DES加密手段。本文將介紹如何建立基于SRP的Telnet服務(wù)器。操作環(huán)境Redhat Linux 9.0。
二、軟件下載和編譯
SRP軟件主頁是:http://srp.stanford.edu 最新版本2.1.1,安裝SRP前先要安裝OpenSSL。
#wget http://srp.stanford.edu/source/srp-2.1.1.tar.gz
#cp /usr/src/redhat/SOURCES
#./configure --with-openssl=/usr/src/redhat/SOURCES/openssl-0.9.6
--with-pam
#make;make install
三、建立指數(shù)密碼系統(tǒng)EPS
EPS全稱:Exponential Password System(指數(shù)密碼系統(tǒng)),SRP軟件包中已經(jīng)包括EPS源代碼。
1. 安裝PAM模塊
PAM簡介:
PAM全稱:Pluggable Authentication Module (嵌入式認(rèn)證模塊)。它最初有SUN公司開發(fā);很快被Linux社區(qū)的接受,并且開發(fā)了更多的模塊。其目標(biāo)是提供一套可用于驗證用戶身份的函數(shù)庫,從而將認(rèn)證從應(yīng)用程序開發(fā)中獨立出來。Linux-PAM處理四種獨立的(管理)工作。它們是: 認(rèn)證管理; 帳號管理; 會話期間管理;和密碼管理。
PAM工作方式:
(1) 調(diào)用某個應(yīng)用程序,以得到該程序的服務(wù)。
(2) PAM應(yīng)用程序調(diào)用后臺的PAM庫進(jìn)行認(rèn)證工作。
(3) PAM庫在/etc/pam.d/目錄中查找有關(guān)應(yīng)用程序細(xì)節(jié)的配置文件,該文件告訴PAM,本應(yīng)用程序使用何種認(rèn)證機(jī)制。
(4) PAM庫裝載所需的認(rèn)證模塊。
(5) 這些模塊可以讓PAM與應(yīng)用程序中的會話函數(shù)進(jìn)行通信。
(6) 會話函數(shù)向用戶要求有關(guān)信息。
(7) 用戶對這些要求做出回應(yīng),提供所需信息。
(8) PAM認(rèn)證模塊通過PAM庫將認(rèn)證信息提供給應(yīng)用程序。
(9) 認(rèn)證完成后,應(yīng)用程序做出兩種選擇:
將所需權(quán)限賦予用戶,并通知用戶。
認(rèn)證失敗,并通知用戶。