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