萬盛學電腦網

 萬盛學電腦網 >> 病毒防治 >> 用SRP建立安全的Linux Telnet服務器(一)

用SRP建立安全的Linux Telnet服務器(一)

在中小型異構網絡中,很多用戶選擇Linux作為網絡操作系統,利用其簡單的配置和用戶熟悉的圖形界面提供Internet服務,Telnet便是其提供的服務之一。Telnet最基本應用就是 用於Internet的遠程登錄,共享遠程系統中的資源。
它可以使用戶坐在已上網的電腦鍵盤前通過網絡進入的另一台已上網的電腦,並負責把用戶輸入的每個 字符傳遞給主機,再將主機輸出的每個信息回顯在屏幕上。這種連通可以發生在同一房間裡面的電腦或是在世界各范圍內已上網的電腦。
Telnet服務與其他網絡應用一樣屬於客戶機/服務器模型,一旦連通後,客戶機可以享有服務器所提供的一切服務。
但是傳統的網絡服務程序telnet在本質上都是不安全的,因為它在網絡上用明文傳送口令和數據,別有用心的人非常容易就可以截獲這些口令和數據。而且,這些服務程序的安全驗證方式也是有其弱點的,就是很容易受到"中間人"(man-in-the-middle)這種方式的攻擊。
所謂"中間人"的攻擊方式,就是"中間人"冒充真正的服務器接收你傳給服務器的數據,然後再冒充你把數據傳給真正的服務器。服務器和你之間的數據傳送被"中間人"轉手後做了手腳之後,就會出現很嚴重的問題。
SSH(Secure Shell)是以遠程聯機服務方式操作服務器時的較為安全的解決方案。它最初由芬蘭的一家公司開發,但由於受版權和加密算法的限制,很多人轉而使用免費的替代軟件OpenSSH。Openssh是由OpenBSD Project開發和維護的、捆綁有SSH協議的軟件套件。
用戶通過OpenSSH可以把所有傳輸的數據進行加密,使"中間人"的攻擊方式不可能實現,但是OpenSSH目前存在兩個安全遺患:口令、密匙破解(利用字典文件去解密碼)和OpenSSH中可能被安放木馬.
一、SRP簡介
SRP全稱:Secure Remote Password(安全遠程密碼),它是一個開放源代碼認證協議。使用SRP的客戶機/服務器不會在網絡上以明文或加密的方式傳送密碼,這樣可以完全消除密碼欺騙行為。保證口令可以安全地在網絡上面傳送。基本的思想是,防止有被動或主動網絡入侵者使用字典攻擊。
Standford大學計算機系開發了SRP軟件包,提供基於口令認證和會話加密的安全機制,而不需要用戶或者是網管參與密鑰的管理或分發。SRP為每一個人提供透明的密碼安全,而沒有其他昂貴的起始開銷,比如阻止其他安全套件軟件的使用等。
不像其他的安全軟件,SRP套件是一個完全的實現密碼認證的軟件包,不是臨時的解決方案。和標准的/etc/shadow-style 安全比較,SRP在每一個方面都是比較好的。使用SRP對用戶和管理者都有以下的好處:
SRP抵制"password sniffing"(口令監聽)攻擊。在一個使用SRP認證的會話中,監聽者不會監視到任何在網絡中傳送的口令。在遠程登陸軟件中,明文的密碼傳送是最大的安全漏洞。任何人可以用一個簡單的嗅探器(sniffer)工具得到你登陸到遠程系統的密鑰。
SRP抵制字典攻擊。一個系統保護簡單的密碼監聽是不夠的。如果攻擊者使用強力攻擊,例如字典攻擊等,他們不是簡單的直接監聽密碼,而是跟蹤整個的會話過程,然後把整個的信息和字典中的普通密碼對照。
甚至有的Kerberos系統對這樣的攻擊也是脆弱的。SRP在抵制字典攻擊的前,就進行口令的安全處理了。使用的算法就是在攻擊者進行強力攻擊前就要求攻擊者必須執行一次不可能的的大的計算。SRP甚至保護針對口令的"active"攻擊。
因此,即使入侵者有能力和網絡接觸,也不能攻破SRP。所以即使是用戶使用的是很脆弱的口令,也不會讓入侵者很容易地破解的。SRP對於終端用戶是完全透明的。因為沒有所謂的"密鑰鏈"(keyrings)以及"證書"(certificates),或者"票據"(ticket)。你的口令就是密鑰。SRP簡單地保護這個密鑰,但要比老的、弱的密鑰保護機制要好。
SRP從管理者的角度來說也是容易實施的。沒有所謂的"密鑰服務器"、"證書認證",以及"認證服務器"等這樣的概念。SRP口令文件在標准的Unix口令文件的旁邊,軟件本身協同這兩個系統口令和SRP口令文件的一致性,沒有多余的維護系統的機制。SRP在認證一個用戶的時候交換一個加密的密鑰。這就意味著一個登陸會話是可以被加密,而抵制所謂的網絡監聽和惡意地篡改。
用戶在遠程閱讀他們的信箋,是使用128-bit加密後的信息,這是當用戶登陸後自動處理的,而用戶本身不必關心到底需要不需要加密。系統完成加密,然後送到用戶的這裡。另外SRP不使用加密進行認證,這使得它比基於公用/私用密匙的認證方式速度更快捷、安全。
SRP缺省使用的128-bit的CAST加密算法。CAST-128在RFC2144(http://srp.stanford.edu/srp/rfc2144.txt)中有定義。標准的SRP也支持56-bit的DES以及48位的DES。高級的支持Triple-DES加密手段。本文將介紹如何建立基於SRP的Telnet服務器。操作環境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
三、建立指數密碼系統EPS
EPS全稱:Exponential Password System(指數密碼系統),SRP軟件包中已經包括EPS源代碼。
1.安裝PAM模塊
PAM簡介:
PAM全稱:Pluggable Authentication Module (嵌入式認證模塊)。它最初有SUN公司開發;很快被Linux社區的接受,並且開發了更多的模塊。其目標是提供一套可用於驗證用戶身份的函數庫,從而將認證從應用程序開發中獨立出來。Linux-PAM處理四種獨立的(管理)工作。它們是: 認證管理; 帳號管理; 會話期間管理;和密碼管理。
PAM工作方式:
(1)調用某個應用程序,以得到該程序的服務。
(2)PAM應用程序調用後台的PAM庫進行認證工作。
(3)PAM庫在/etc/pam.d/目錄中查找有關應用程序細節的配置文件,該文件告訴PAM,本應用程序使用何種認證機制。
(4)PAM庫裝載所需的認證模塊。
(5)這些模塊可以讓PAM與應用程序中的會話函數進行通信。
(6)會話函數向用戶要求有關信息。
(7)用戶對這些要求做出回應,提供所需信息。

copyright © 萬盛學電腦網 all rights reserved