在中小型異構(gòu)網(wǎng)絡(luò)中,很多用戶選擇Linux作為網(wǎng)絡(luò)操作系統(tǒng),利用其簡單的配置和用戶熟悉的圖形界面提供Internet服務(wù),Telnet便是其提供的服務(wù)之一。Telnet最基本應(yīng)用就是 用于Internet的遠(yuǎn)程登錄,共享遠(yuǎn)程系統(tǒng)中的資源。
它可以使用戶坐在已上網(wǎng)的電腦鍵盤前通過網(wǎng)絡(luò)進(jìn)入的另一臺(tái)已上網(wǎng)的電腦,并負(fù)責(zé)把用戶輸入的每個(gè) 字符傳遞給主機(jī),再將主機(jī)輸出的每個(gè)信息回顯在屏幕上。這種連通可以發(fā)生在同一房間里面的電腦或是在世界各范圍內(nèi)已上網(wǎng)的電腦。
Telnet服務(wù)與其他網(wǎng)絡(luò)應(yīng)用一樣屬于客戶機(jī)/服務(wù)器模型,一旦連通后,客戶機(jī)可以享有服務(wù)器所提供的一切服務(wù)。
但是傳統(tǒng)的網(wǎng)絡(luò)服務(wù)程序telnet在本質(zhì)上都是不安全的,因?yàn)樗诰W(wǎng)絡(luò)上用明文傳送口令和數(shù)據(jù),別有用心的人非常容易就可以截獲這些口令和數(shù)據(jù)。而且,這些服務(wù)程序的安全驗(yàn)證方式也是有其弱點(diǎn)的,就是很容易受到"中間人"(man-in-the-middle)這種方式的攻擊。
所謂"中間人"的攻擊方式,就是"中間人"冒充真正的服務(wù)器接收你傳給服務(wù)器的數(shù)據(jù),然后再冒充你把數(shù)據(jù)傳給真正的服務(wù)器。服務(wù)器和你之間的數(shù)據(jù)傳送被"中間人"轉(zhuǎn)手后做了手腳之后,就會(huì)出現(xiàn)很嚴(yán)重的問題。
SSH(Secure Shell)是以遠(yuǎn)程聯(lián)機(jī)服務(wù)方式操作服務(wù)器時(shí)的較為安全的解決方案。它最初由芬蘭的一家公司開發(fā),但由于受版權(quán)和加密算法的限制,很多人轉(zhuǎn)而使用免費(fèi)的替代軟件OpenSSH。Openssh是由OpenBSD Project開發(fā)和維護(hù)的、捆綁有SSH協(xié)議的軟件套件。
用戶通過OpenSSH可以把所有傳輸?shù)臄?shù)據(jù)進(jìn)行加密,使"中間人"的攻擊方式不可能實(shí)現(xiàn),但是OpenSSH目前存在兩個(gè)安全遺患:口令、密匙破解(利用字典文件去解密碼)和OpenSSH中可能被安放木馬.
一、SRP簡介
SRP全稱:Secure Remote Password(安全遠(yuǎn)程密碼),它是一個(gè)開放源代碼認(rèn)證協(xié)議。使用SRP的客戶機(jī)/服務(wù)器不會(huì)在網(wǎng)絡(luò)上以明文或加密的方式傳送密碼,這樣可以完全消除密碼欺騙行為。保證口令可以安全地在網(wǎng)絡(luò)上面?zhèn)魉汀;镜乃枷胧?,防止有被?dòng)或主動(dòng)網(wǎng)絡(luò)入侵者使用字典攻擊。
Standford大學(xué)計(jì)算機(jī)系開發(fā)了SRP軟件包,提供基于口令認(rèn)證和會(huì)話加密的安全機(jī)制,而不需要用戶或者是網(wǎng)管參與密鑰的管理或分發(fā)。SRP為每一個(gè)人提供透明的密碼安全,而沒有其他昂貴的起始開銷,比如阻止其他安全套件軟件的使用等。
不像其他的安全軟件,SRP套件是一個(gè)完全的實(shí)現(xiàn)密碼認(rèn)證的軟件包,不是臨時(shí)的解決方案。和標(biāo)準(zhǔn)的/etc/shadow-style 安全比較,SRP在每一個(gè)方面都是比較好的。使用SRP對用戶和管理者都有以下的好處:
SRP抵制"password sniffing"(口令監(jiān)聽)攻擊。在一個(gè)使用SRP認(rèn)證的會(huì)話中,監(jiān)聽者不會(huì)監(jiān)視到任何在網(wǎng)絡(luò)中傳送的口令。在遠(yuǎn)程登陸軟件中,明文的密碼傳送是最大的安全漏洞。任何人可以用一個(gè)簡單的嗅探器(sniffer)工具得到你登陸到遠(yuǎn)程系統(tǒng)的密鑰。
SRP抵制字典攻擊。一個(gè)系統(tǒng)保護(hù)簡單的密碼監(jiān)聽是不夠的。如果攻擊者使用強(qiáng)力攻擊,例如字典攻擊等,他們不是簡單的直接監(jiān)聽密碼,而是跟蹤整個(gè)的會(huì)話過程,然后把整個(gè)的信息和字典中的普通密碼對照。
甚至有的Kerberos系統(tǒng)對這樣的攻擊也是脆弱的。SRP在抵制字典攻擊的前,就進(jìn)行口令的安全處理了。使用的算法就是在攻擊者進(jìn)行強(qiáng)力攻擊前就要求攻擊者必須執(zhí)行一次不可能的的大的計(jì)算。SRP甚至保護(hù)針對口令的"active"攻擊。
因此,即使入侵者有能力和網(wǎng)絡(luò)接觸,也不能攻破SRP。所以即使是用戶使用的是很脆弱的口令,也不會(huì)讓入侵者很容易地破解的。SRP對于終端用戶是完全透明的。因?yàn)闆]有所謂的"密鑰鏈"(keyrings)以及"證書"(certificates),或者"票據(jù)"(ticket)。你的口令就是密鑰。SRP簡單地保護(hù)這個(gè)密鑰,但要比老的、弱的密鑰保護(hù)機(jī)制要好。
SRP從管理者的角度來說也是容易實(shí)施的。沒有所謂的"密鑰服務(wù)器"、"證書認(rèn)證",以及"認(rèn)證服務(wù)器"等這樣的概念。SRP口令文件在標(biāo)準(zhǔn)的Unix口令文件的旁邊,軟件本身協(xié)同這兩個(gè)系統(tǒng)口令和SRP口令文件的一致性,沒有多余的維護(hù)系統(tǒng)的機(jī)制。SRP在認(rèn)證一個(gè)用戶的時(shí)候交換一個(gè)加密的密鑰。這就意味著一個(gè)登陸會(huì)話是可以被加密,而抵制所謂的網(wǎng)絡(luò)監(jiān)聽和惡意地篡改。
用戶在遠(yuǎn)程閱讀他們的信箋,是使用128-bit加密后的信息,這是當(dāng)用戶登陸后自動(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)是提供一套可用于驗(yàn)證用戶身份的函數(shù)庫,從而將認(rèn)證從應(yīng)用程序開發(fā)中獨(dú)立出來。Linux-PAM處理四種獨(dú)立的(管理)工作。它們是: 認(rèn)證管理; 帳號管理; 會(huì)話期間管理;和密碼管理。
PAM工作方式:
(1)調(diào)用某個(gè)應(yīng)用程序,以得到該程序的服務(wù)。
(2)PAM應(yīng)用程序調(diào)用后臺(tái)的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)用程序中的會(huì)話函數(shù)進(jìn)行通信。
(6)會(huì)話函數(shù)向用戶要求有關(guān)信息。
(7)用戶對這些要求做出回應(yīng),提供所需信息。


