無線局域網(wǎng)中RADIUS協(xié)議的分析和設(shè)計
3 WLAN模型中RADIUS認(rèn)證系統(tǒng)的設(shè)計與實現(xiàn)
3.1 WLAN網(wǎng)絡(luò)模型的簡化
在實驗室的模擬環(huán)境下,由于網(wǎng)絡(luò)用戶少,可以采用中、小型的數(shù)據(jù)庫來存放所需信息,并可以將RADIUS服務(wù)器與數(shù)據(jù)庫在同一主機上實現(xiàn)。局域網(wǎng)交換機可以實現(xiàn)端口控制功能。網(wǎng)絡(luò)結(jié)構(gòu)可簡化如下:
圖2 實驗室環(huán)境下WLAN網(wǎng)絡(luò)模型
3.2 NAS設(shè)計
?。?)RADIUS客戶端處理程序:負(fù)責(zé)接收申請者的信息;向RADIUS服務(wù)器提交認(rèn)證、計費、管理等數(shù)據(jù)包;向申請者返回相應(yīng)結(jié)果。
(2)服務(wù)器管理程序:為了方便網(wǎng)絡(luò)管理員對RADIUS服務(wù)器和數(shù)據(jù)庫的管理,在NAS主機上,還可以運行服務(wù)器管理程序,管理程序的功能應(yīng)該包括有:管理員模塊(添加、刪除網(wǎng)絡(luò)管理員,設(shè)置管理員權(quán)限等);用戶信息模塊(實現(xiàn)用戶的查詢、添加、刪除等操作);計費信息模塊(查詢用戶的計費信息,創(chuàng)建、修改、刪除各種不同的計費方式,);日志信息模塊等。
?。?)用戶信息的提交:用戶需要向NAS提交用戶信息,有多種方法可以實現(xiàn),最簡單的方法是采用Web方式提交。在NAS上建立一個Web服務(wù)器,這樣,用戶可以直接使用瀏覽器來和NAS交互,Web服務(wù)器接受到用戶提交的信息后,把這些信息傳給RADIUS的客戶端處理程序。后者把這些信息封裝成RADIUS的接入請求(Access-Request)包格式,通過認(rèn)證端口(1812)向RADIUS服務(wù)器提出認(rèn)證請求。
?。?)計費信息的提交:認(rèn)證通過之后,NAS客戶端程序通過認(rèn)證端口(1812)向RADIUS服務(wù)器發(fā)送包含有用戶名、用戶IP、上網(wǎng)起始時間等信息的“計費請求開始”包(Accounting-Request Start),通知RADIUS服務(wù)器開始計費。RADIUS服務(wù)器在數(shù)據(jù)庫中紀(jì)錄下相應(yīng)項,并返回“計費響應(yīng)”包(Accounting-Response)。當(dāng)用戶下網(wǎng)時,NAS向RADIUS服務(wù)器發(fā)送包含有結(jié)束時間、數(shù)據(jù)流量等信息的“計費請求結(jié)束”包(Accounting-Request Stop)。后者返回“計費響應(yīng)”包(Accounting-Response)確認(rèn)。
(5)服務(wù)器管理程序的提交:也通過RADIUS客戶端處理程序來向RADIUS服務(wù)器提交??蛻舳颂幚沓绦?qū)⒐芾沓绦虻恼埱蟀b成標(biāo)準(zhǔn)的RADIUS包格式,并通過為服務(wù)器管理程序定義一個端口號提交給RADIUS服務(wù)器。
3.3 RADIUS服務(wù)器設(shè)計
RADIUS服務(wù)器處理來自NAS的各項數(shù)據(jù)和實現(xiàn)對數(shù)據(jù)庫的操作,并返回相應(yīng)的結(jié)果。RADIUS客戶端和服務(wù)器端的協(xié)議通信采用Socket編程來實現(xiàn)。
(1)對數(shù)據(jù)庫的操作:RADIUS服務(wù)器通過數(shù)據(jù)庫接口與數(shù)據(jù)庫建立起連接。在RADIUS服務(wù)器中用SQL語句實現(xiàn)所需的數(shù)據(jù)庫操作模塊(如:用戶、計費、管理員等信息的查詢、添加、修改等操作),當(dāng)RADIUS服務(wù)器需要對數(shù)據(jù)庫操作時,就調(diào)用相應(yīng)的模塊。
?。?)認(rèn)證包處理:通過*認(rèn)證端口(1812),來監(jiān)測NAS提交的認(rèn)證數(shù)據(jù)包,收到認(rèn)證包后,查詢數(shù)據(jù)庫驗證用戶,并把結(jié)果以RADIUS數(shù)據(jù)包格式從1812端口返回。對于多個用戶申請并發(fā)的情況,使用多線程方式處理。
(3)計費包的處理:當(dāng)用戶的認(rèn)證通過時,查詢該用戶計費信息。確定其計費類型、費率等。當(dāng)*到NAS在計費端口(1813)提交計費包后,就向數(shù)據(jù)庫中添加“計費請求開始”包中所提交的計費信息(包括用戶名、上網(wǎng)起始時間等)。在收到用戶下網(wǎng)的“計費請求結(jié)束”后,根據(jù)包中提交的用戶結(jié)束時間、數(shù)據(jù)流量等信息,計算用戶的上網(wǎng)時長和數(shù)據(jù)流量,并根據(jù)用戶計費類型來計算出用戶本次上網(wǎng)費用,記錄入數(shù)據(jù)庫。
?。?)服務(wù)器管理程序請求的處理:*管理程序請求的端口(自定義),收到后解包并執(zhí)行相應(yīng)的處理函數(shù)。
3.4 數(shù)據(jù)庫的設(shè)計
用于保存所有的用戶信息、計費信息等。數(shù)據(jù)庫中包含的表項至少應(yīng)包括以下幾類:
?。?) 用戶信息:包括用戶名、口令、認(rèn)證方式、訪問權(quán)限、付費方式等。
(2) 授權(quán)信息:服務(wù)器返回給用戶的授權(quán)等配置信息,如服務(wù)類型,會話時間等。
(3) 計費信息:存放與計費有關(guān)的各種統(tǒng)計信息。如:上網(wǎng)時間、計費費率、用戶
的歷次上網(wǎng)的數(shù)據(jù)流量和費用、用戶帳戶余額等。
?。?) 管理員信息:網(wǎng)絡(luò)管理員的ID號和口令、管理員的權(quán)限。
?。?) NAS信息:RADIUS服務(wù)器所屬的各NAS紀(jì)錄。包括各NAS的ID號、與
RADIUS服務(wù)器的共享密碼等。
?。?) 日志信息:保存用戶上網(wǎng)的歷史記錄、網(wǎng)絡(luò)管理員的登錄及操作紀(jì)錄。
3.5認(rèn)證端各部分的實現(xiàn):
操作系統(tǒng):RADIUS服務(wù)器和NAS均采用Linux(Red Hat 9.0,內(nèi)核Linux-2.4.20-8)作為操作系統(tǒng)。
(1) NAS:
用Apache和Tomcat構(gòu)建一個支持JSP的Web服務(wù)器,這樣申請者可以通過Web頁面來提交登錄信息。服務(wù)器管理程序主要是處理系統(tǒng)管理員的信息,用QT3.0完成用戶界面。RADIUS客戶端程序(C語言實現(xiàn))將用戶或系統(tǒng)管理員提交的消息封裝成RADIUS包,并通過相應(yīng)的端口轉(zhuǎn)發(fā)給RADIUS服務(wù)器。
(2) 數(shù)據(jù)庫:
采用MySQL數(shù)據(jù)庫來實現(xiàn),MySQL是一個多用戶、多線程SQL數(shù)據(jù)庫服務(wù)器。它由一個服務(wù)器守護程序mysqld和很多不同的客戶程序和庫組成。Red Hat 9.0中自帶有MySQL服務(wù),將服務(wù)啟動即可。我們可以將RADIUS服務(wù)器與SQL數(shù)據(jù)庫相連,建立用戶數(shù)據(jù)庫和計費數(shù)據(jù)庫,對用戶信息和計費信息進行有效的管理。
(3) RADIUS服務(wù)器 :
采用freeradius-0.9.0來搭建RADIUS服務(wù)器,實現(xiàn)RADIUS協(xié)議,并使用RADIUS服務(wù)器的EAP-Identity認(rèn)證方式(即:RADIUS服務(wù)器對申請者的用戶名和口令進行認(rèn)證)。另外,實現(xiàn)時,在freeradius的源碼中添加了數(shù)據(jù)庫處理模塊以及服務(wù)器管理程序處理模塊。
freeradius支持訪問SQL數(shù)據(jù)庫,首先需要建立RADIUS數(shù)據(jù)庫(以MySQL為例:mysql -uroot -prootpass radius db_mysql.sql),建立后的數(shù)據(jù)庫會包含如下一些表項:radcheck:用于指明用戶的認(rèn)證方式;radgroupcheck:將用戶分組進行管理,指明各組的屬性,如限定有些用戶組默認(rèn)的認(rèn)證結(jié)果就是Accept或Reject;radgroupreply:對各用戶組設(shè)定回應(yīng)的屬性;usergroup:指明用戶與組的關(guān)系;radacct:存放與計費有關(guān)的各種統(tǒng)計信息。我們還可以添加一些我們所需的其他表項。
4 結(jié)束語
RADIUS協(xié)議最初作為撥號網(wǎng)絡(luò)中協(xié)議,由于它易于管理、可擴展性好等特點,而逐漸被廣泛使用,成為多種網(wǎng)絡(luò)的認(rèn)證、授權(quán)和計費的協(xié)議。但RADIUS協(xié)議仍然存在諸如:基于Response Authenticatior對共享密鑰的攻擊、基于User-Password屬性對用戶密碼的攻擊等安全缺陷。這些都有待于作進一步的研究和完善。
評論