在中小型異構(gòu)網(wǎng)絡(luò)中,很多用戶選擇linux作為網(wǎng)絡(luò)操作系統(tǒng),利用其簡(jiǎn)單的配置和用戶熟悉的圖形界面提供Internet服務(wù),F(xiàn)TP便是其提供的服務(wù)之一。在眾多網(wǎng)絡(luò)應(yīng)用中,F(xiàn)TP(文件傳輸協(xié)議)有著非常重要的地位。互聯(lián)網(wǎng)一個(gè)十分重要的資源就是軟件資源,而各種各樣的軟件資源大多數(shù)都放在FTP服務(wù)器中。與大多數(shù)互聯(lián)網(wǎng)服務(wù)一樣,F(xiàn)TP也是一個(gè)客戶機(jī)/服務(wù)器系統(tǒng)。
FTP是傳統(tǒng)的網(wǎng)絡(luò)服務(wù)程序,在本質(zhì)上是不安全的,因?yàn)樗鼈冊(cè)诰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)重的問題。 截獲這些口令的方式主要為暴力破解。另外使用sniffer程序監(jiān)視網(wǎng)絡(luò)封包捕捉FTP開始的會(huì)話信息,便可順手截獲root密碼。
SSH(Secure Shell)是以遠(yuǎn)程聯(lián)機(jī)服務(wù)方式操作服務(wù)器時(shí)的較為安全的解決方案。它最初由芬蘭的一家公司開發(fā),但由于受版權(quán)和加密算法的限制,很多人轉(zhuǎn)而使用免費(fèi)的替代軟件OpenSSH。SSH(Secure Shell)是以遠(yuǎn)程聯(lián)機(jī)服務(wù)方式操作服務(wù)器時(shí)的較為安全的解決方案。它最初由芬蘭的一家公司開發(fā),但由于受版權(quán)和加密算法的限制,很多人轉(zhuǎn)而使用免費(fèi)的替代軟件OpenSSH。 用戶通過(guò)SSH可以把所有傳輸?shù)臄?shù)據(jù)進(jìn)行加密,使“中間人”的攻擊方式不可能實(shí)現(xiàn),而且也能夠防止DNS和ip欺騙。它還有一個(gè)額外的好處是傳輸?shù)臄?shù)據(jù)是經(jīng)過(guò)壓縮的,可以加快傳輸?shù)乃俣取SH作用廣泛,既可以代替Telnet,又可以為FTP、POP,甚至為PPP提供一個(gè)安全的“通道”。SSH協(xié)議在預(yù)設(shè)的狀態(tài)中,提供兩個(gè)服務(wù)器功能:一個(gè)是類似Telnet的遠(yuǎn)程聯(lián)機(jī)使用Shell服務(wù)器,即俗稱SSH功能;另一個(gè)是類似FTP服務(wù)的SFTP-Server功能,可提供更安全的FTP服務(wù)。
SSH的安全驗(yàn)證如何工作呢?主要依靠聯(lián)機(jī)加密技術(shù)。從客戶端來(lái)看,有以下兩種安全驗(yàn)證級(jí)別:
1.基于口令的安全驗(yàn)證(ssh1) 只要知道自己的賬號(hào)和口令,就可以登錄到遠(yuǎn)程主機(jī)。所有傳輸?shù)臄?shù)據(jù)都將被加密,但是不能保證正在連接的服務(wù)器就是想要連接的服務(wù)器。可能受到“中間人”的攻擊。
2.基于密匙的安全驗(yàn)證(ssh2) 需要依靠密匙,即用戶必須為自己創(chuàng)建一對(duì)密匙,并把公用密匙放在需要訪問的服務(wù)器上。如果要連接到SSH服務(wù)器上,客戶端軟件就會(huì)向服務(wù)器發(fā)出請(qǐng)求,請(qǐng)求用密匙進(jìn)行安全驗(yàn)證。服務(wù)器收到請(qǐng)求之后,先在該服務(wù)器的home目錄下尋找公用密匙,然后把它和發(fā)送過(guò)來(lái)的公用密匙進(jìn)行比較。如果兩個(gè)密匙一致,服務(wù)器就用公用密匙加密“質(zhì)詢”(challenge),并把它發(fā)送給客戶端軟件。客戶端軟件收到“質(zhì)詢”后,就可以用私人密匙解密再把它發(fā)送給服務(wù)器。使用這種方式,用戶必須知道自己密匙的口令。與第一種級(jí)別相比,這種級(jí)別不需要在網(wǎng)絡(luò)上傳送口令,不僅加密所有傳送的數(shù)據(jù),而且阻止了“中間人”攻擊方式。OpenSSH目前存在兩個(gè)安全遺患:口令、密匙破解(利用字典文件去解密碼)和OpenSSH中可能被安放木馬。
一、SRP簡(jiǎn)介
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對(duì)用戶和管理者都有以下的好處:
SRP抵制“password sniffing”(口令監(jiān)聽)攻擊。在一個(gè)使用SRP認(rèn)證的會(huì)話中,監(jiān)聽者不會(huì)監(jiān)視到任何在網(wǎng)絡(luò)中傳送的口令。在遠(yuǎn)程登陸軟件中,明文的密碼傳送是最大的安全漏洞。任何人可以用一個(gè)簡(jiǎn)單的嗅探器(sniffer)工具得到你登陸到遠(yuǎn)程系統(tǒng)的密鑰。
SRP抵制字典攻擊。一個(gè)系統(tǒng)保護(hù)簡(jiǎn)單的密碼監(jiān)聽是不夠的。如果攻擊者使用強(qiáng)力攻擊,例如字典攻擊等,他們不是簡(jiǎn)單的直接監(jiān)聽密碼,而是跟蹤整個(gè)的會(huì)話過(guò)程,然后把整個(gè)的信息和字典中的普通密碼對(duì)照。甚至有的Kerberos系統(tǒng)對(duì)這樣的攻擊也是脆弱的。SRP在抵制字典攻擊的前,就進(jìn)行口令的安全處理了。使用的算法就是在攻擊者進(jìn)行強(qiáng)力攻擊前就要求攻擊者必須執(zhí)行一次不可能的的大的計(jì)算。SRP甚至保護(hù)針對(duì)口令的“active”攻擊。因此,即使入侵者有能力和網(wǎng)絡(luò)接觸,也不能攻破SRP。所以即使是用戶使用的是很脆弱的口令,也不會(huì)讓入侵者很容易地破解的。SRP對(duì)于終端用戶是完全透明的。因?yàn)闆]有所謂的“密鑰鏈”(keyrings)以及“證書”(certificates),或者“票據(jù)”(ticket)。你的口令就是密鑰。SRP簡(jiǎn)單地保護(hù)這個(gè)密鑰,但要比老的、弱的密鑰保護(hù)機(jī)制要好。SRP從管理者的角度來(lái)說(shuō)也是容易實(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。高級(jí)的支持Triple-DES加密手段。本文將介紹如何建立基于SRP的Telnet服務(wù)器。操作環(huán)境Redhat Linux 9.0。
二、軟件下載和編譯
SRP軟件主頁(yè)是: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簡(jiǎn)介:
PAM全稱:Pluggable Authentication Module (嵌入式認(rèn)證模塊)。它最初有SUN公司開發(fā);很快被Linux社區(qū)的接受,并且開發(fā)了更多的模塊。其目標(biāo)是提供一套可用于驗(yàn)證用戶身份的函數(shù)庫(kù),從而將認(rèn)證從應(yīng)用程序開發(fā)中獨(dú)立出來(lái)。Linux-PAM處理四種獨(dú)立的(管理)工作。它們是: 認(rèn)證管理; 帳號(hào)管理; 會(huì)話期間管理;和密碼管理。
PAM工作方式:
(1) 調(diào)用某個(gè)應(yīng)用程序,以得到該程序的服務(wù)。
(2) PAM應(yīng)用程序調(diào)用后臺(tái)的PAM庫(kù)進(jìn)行認(rèn)證工作。
(3) PAM庫(kù)在/etc/pam.d/目錄中查找有關(guān)應(yīng)用程序細(xì)節(jié)的配置文件,該文件告訴PAM,本應(yīng)用程序使用何種認(rèn)證機(jī)制。
(4) PAM庫(kù)裝載所需的認(rèn)證模塊。
(5) 這些模塊可以讓PAM與應(yīng)用程序中的會(huì)話函數(shù)進(jìn)行通信。
(6) 會(huì)話函數(shù)向用戶要求有關(guān)信息。
(7) 用戶對(duì)這些要求做出回應(yīng),提供所需信息。
(8) PAM認(rèn)證模塊通過(guò)PAM庫(kù)將認(rèn)證信息提供給應(yīng)用程序。
(9) 認(rèn)證完成后,應(yīng)用程序做出兩種選擇:
將所需權(quán)限賦予用戶,并通知用戶。
認(rèn)證失敗,并通知用戶。
PAM工作流程見圖1。
圖1 PAM工作流程
PAM具體使用方法:
#cd /usr/src/redhat/SOURCES/srp-2.1.1/base/pam_eps.
#install -m 644 pam_eps_auth.so pam_eps_passwd.so /lib/security
上面命令會(huì)在/lib/security 目錄下安裝PAM模塊。然后使用命令:“/usr/local/bin/tconf”創(chuàng)建/etc/tpasswd 和 /etc/tpasswd.conf文件。
2. 使用EPS PAM模塊進(jìn)行密碼驗(yàn)證
(1) 首先備份 /etc/pam.d/system-auth文件
(2) 修改 /etc/pam.d/system-auth文件如下形式:
auth required /lib/security/pam_unix.so likeauth nullok md5 shadow
auth sufficient /lib/security/pam_eps_auth.so
auth required /lib/security/pam_deny.so
account sufficient /lib/security/pam_unix.so
account required /lib/security/pam_deny.so
password required /lib/security/pam_cracklib.so retry=3
password required /lib/security/pam_eps_passwd.so
password sufficient /lib/security/pam_unix.so nullok use_authtok md5 shadow
password required /lib/security/pam_deny.so
session required /lib/security/pam_limits.so
session required /lib/security/pam_unix.so
注意上面第一行黑體字表示PAM的eps_auth模塊可以滿足認(rèn)證需求。第二行黑體字表示PAM 的pam_eps_passwd.so 模塊用來(lái)進(jìn)行密碼管理。
(3) 將標(biāo)準(zhǔn)密碼轉(zhuǎn)換為EPS格式
(4) /etc/pam.d/system-auth 配置文件的模塊pam_eps_passwd.so 將EPS版本的密碼驗(yàn)證字符串寫入/etc/tpasswd 文件中。 修改 /etc/pam.dpasswd文件如下形式:
auth required /lib/security/pam_stack.so service=system-auth
account required /lib/security/pam_stack.so service=system-auth
password required /lib/security/pam_stack.so service=system-auth
四、啟動(dòng)SRP版本下的FTP服務(wù)器
(1)進(jìn)入SRP源代碼FTP子目錄,分別建立FTP服務(wù)器文件和FTP客戶端文件:
#cd /usr/src/redhat/SOURCES/srp-2.2.1/ftp
#make;make install
(2)建立超級(jí)訪問程序/etc/xinetd.d/srp-ftpd 內(nèi)容如下:
service ftp
{
socket_type = stream
wait = no
user = root
server = /usr/local/sbin/ftpd
log_on_success += DURATION USERID
log_on_failure += USERID
nice = 10
disable = no
}
(3)使用命令從新啟動(dòng)xinetd
#killall -USR1 xinetd
(4)建立/etc/pam.d/telnet 文件,內(nèi)容如下:
#%PAM-1.0
auth required /lib/security/pam_listfile.so item=user /
sense=deny file=/etc/ftpusers onerr=succeed
auth required /lib/security/pam_stack.so service=srp-ftp
auth required /lib/security/pam_shells.so
account required /lib/security/pam_stack.so service=srp-ftp
session required /lib/security/pam_stack.so service=srp-ftp
到此為止現(xiàn)在就建立了一個(gè)使用SRP服務(wù)的FTP服務(wù)器。首先在本地進(jìn)行試驗(yàn)。下面是一個(gè)典型會(huì)話:
$$ /usr/local/bin/ftp localhost
Connected to localhost.intevo.com.
220 k2.intevo.com FTP server (SRPftp 1.3) ready.
SRP accepted as authentication type.
Name (localhost:kabir): cao
SRP Password: xxxxxxxx
SRP authentication succeeded.
Using cipher CAST5_CBC and hash function SHA.
200 PRotection level set to Private.
232 user kabir authorized by SRP.
230 User kabir logged in.
Remote system type is UNIX.
Using binary mode to transfer file
如果希望在其他Linux計(jì)算機(jī)使用FTP登錄到SRP服務(wù)器,需要安裝SRP服務(wù)支持和SRP客戶機(jī)軟件。方法是和在SRP服務(wù)器端相同的。
使用SRP的FTP服務(wù)中非常好下面的密碼公式:
NONE (1)
BLOWFISH_ECB (2)
BLOWFISH_CBC (3)
BLOWFISH_CFB64 (4)
BLOWFISH_OFB64 (5)
CAST5_ECB (6)
CAST5_CBC (7)
CAST5_CFB64 (8)
CAST5_OFB64 (9)
DES_ECB (10)
DES_CBC (11)
DES_CFB64 (12)
DES_OFB64 (13)
DES3_ECB (14)
DES3_CBC (15)
DES3_CFB64 (16)
DES3_OFB64 (17)
SRP也支持MD5和SHA哈希函數(shù)。缺省情況下SRP使用CAST5_CBC 密碼和SHA 函數(shù)。要使用其它格式的密碼。可以使用-c或-h(huán)選項(xiàng)。
#/usr/local/bin/ftp -c blowfish_cfb64 “ip地址”
上面的命令使用BLOWFISH_CFB64 密碼而不是缺省的CAST5_CBC。
#/usr/local/bin/ftp –h md5 “ip地址”
上面的命令使用MD5函數(shù)而不是缺省的SHA函數(shù)。
五、在非Linux平臺(tái)上使用SRP客戶機(jī)
SRP同樣支持其他流行的操作系統(tǒng)(Unix、BSD、Winodws、MacOS)。Kermit 95是一個(gè)工作在Windows 9x, ME, NT, and 2000, XP和 OS/2操作系統(tǒng)下的SRP客戶機(jī)。詳細(xì)情況前查看相關(guān)網(wǎng)址:http://www.columbia.edu/kermit/k95.html 。
總結(jié):詳細(xì)的SRP工作原理可以在SRP的有關(guān)站點(diǎn)發(fā)現(xiàn)。地址是http://srp.stanford.edu/srp,在這里你可以得到有關(guān)協(xié)議的在線說(shuō)明http://srp.standford.edu/srp/design.html或者是一個(gè)出版的關(guān)于SRP的技術(shù)白皮書http://srp.standford.edu/srp/ftp。 以上提供了相對(duì)OPENSSH更加安全快捷的FTP登錄遠(yuǎn)程Linux服務(wù)器的方法,基于SRP服務(wù) FTP應(yīng)用與其他網(wǎng)絡(luò)應(yīng)用一樣屬于客戶機(jī)/服務(wù)器模型,一旦連通后,客戶機(jī)可以享有服務(wù)器所提供的一切服務(wù)。
新聞熱點(diǎn)
疑難解答
圖片精選