無(wú)線(xiàn)局域網(wǎng)中RADIUS協(xié)議的分析和設計
1 引言
本文引用地址:http://dyxdggzs.com/article/155603.htm遠程認證撥號用戶(hù)服務(wù)協(xié)議(Remote Authentication Dial In User Service, RADIUS)最初是由Livingston公司提出的一個(gè)為撥號用戶(hù)提供認證和計費的協(xié)議。后經(jīng)多次改進(jìn),逐漸成為一項通用的網(wǎng)絡(luò )認證、計費協(xié)議,并定義于IETF提交的RFC2865和RFC2866文件中。RADIUS協(xié)議以Client/Server方式工作,客戶(hù)端為網(wǎng)絡(luò )接入服務(wù)器(NAS),它向RADIUS服務(wù)器提交認證、計費等信息,RADIUS服務(wù)器處理信息并將結果返回給NAS。
RADIUS協(xié)議的應用范圍很廣,在移動(dòng)、數據、智能網(wǎng)等業(yè)務(wù)的認證、計費系統中都有所應用。無(wú)線(xiàn)局域網(wǎng)的802.1X認證框架中,在認證端也建議使用RADIUS協(xié)議。
本文將論述RADIUS協(xié)議的原理,并探討它在WLAN中的應用及實(shí)現方案。
2 RADIUS協(xié)議
2.1 WLAN網(wǎng)絡(luò )模型
實(shí)際商用的無(wú)線(xiàn)局域網(wǎng),可以用局域網(wǎng)交換機來(lái)實(shí)現802.1X認證協(xié)議中的端口控制功能。為保證網(wǎng)絡(luò )的安全性,在無(wú)線(xiàn)局域網(wǎng)的出口和認證端應加上防火墻。RADIUS服務(wù)器和數據庫還可以采取主、備結構,以保證網(wǎng)絡(luò )的健壯性。
網(wǎng)絡(luò )模型如下圖所示:
圖1 無(wú)線(xiàn)局域網(wǎng)網(wǎng)絡(luò )模型
無(wú)線(xiàn)局域網(wǎng)的認證端由RADIUS服務(wù)器、網(wǎng)絡(luò )接入服務(wù)器(NAS)和數據庫組成。其中:
NAS:作為RADIUS服務(wù)器的客戶(hù)端,向RADIUS服務(wù)器轉交用戶(hù)的認證信息。并在用戶(hù)通過(guò)認證之后,向RADIUS服務(wù)器發(fā)送計費信息。
RADIUS服務(wù)器:作為認證系統的中心服務(wù)器,它與NAS、數據庫相連,它接受來(lái)自NAS提交的信息,對數據庫進(jìn)行相應的操作,并把處理結果返回給NAS。
數據庫:用于保存所有的用戶(hù)信息、計費信息和其他信息。用戶(hù)信息由網(wǎng)絡(luò )管理員添加至數據庫中;計費信息來(lái)自于RADIUS服務(wù)器;其他信息包括日志信息等。
2.2 RADIUS的數據包結構
RADIUS是應用層的協(xié)議,在傳輸層它的報文被封裝在UDP的報文中,進(jìn)而封裝進(jìn)IP包。RADIUS認證使用1812端口,計費使用1813端口。
以太網(wǎng)上的RADIUS封裝后的包結構:
RADIUS數據包分為5個(gè)部分:
?。?) Code:1個(gè)字節,用于區分RADIUS包的類(lèi)型:常用類(lèi)型有:
接入請求(Access-Request),Code=1;接入應答(Access-Accept),Code=2;接入拒絕(Access-Reject),Code=3;計費請求(Accounting-Request),Code=4等。
?。?)Identifier:一個(gè)字節,用于請求和應答包的匹配。
?。?)Length:兩個(gè)字節,表示RADIUS數據區(包括Code, Identifier, Length, Authenticator, Attributes)的長(cháng)度,單位是字節,最小為20,最大為4096。
?。?)Authenticator:16個(gè)字節,用于驗證服務(wù)器端的應答,另外還用于用戶(hù)口令的加密。RADIUS服務(wù)器和NAS的共享密鑰(Shared Secret)與請求認證碼(Request Authenticator)和應答認證碼(Response Authenticator),共同支持發(fā)、收報文的完整性和認證。另外,用戶(hù)密碼不能在NAS和RADIUS 服務(wù)器之間用明文傳輸,而一般使用共享密鑰(Shared Secret)和認證碼(Authenticator)通過(guò)MD5加密算法進(jìn)行加密隱藏。
?。?)Attributes:不定長(cháng)度,最小可為0個(gè)字節,描述RADIUS協(xié)議的屬性,如用戶(hù)名、口令、IP地址等信息都是存放在本數據段。
2.3 RADIUS的認證、計費過(guò)程
如圖1網(wǎng)絡(luò )模型所示:
?。?)申請者登錄網(wǎng)絡(luò )時(shí),NAS會(huì )有一個(gè)客戶(hù)定義的Login提示符要求申請者輸入用戶(hù)信息(用戶(hù)名和口令),申請者輸入相關(guān)的認證信息后,等待認證結果。
?。?)NAS在得到用戶(hù)信息后,將根據RADIUS的數據包格式,向RADIUS服務(wù)器發(fā)出“接入請求”(Access-Request)包。包中一般包括以下RADIUS屬性值:用戶(hù)名、用戶(hù)口令、訪(fǎng)問(wèn)服務(wù)器的ID、訪(fǎng)問(wèn)端口的ID。
?。?)當RADIUS服務(wù)器收到“接入請求”包后,首先驗證NAS的共享密碼與RADIUS服務(wù)器中預先設定的是否一致,以確認是所屬的RADIUS客戶(hù)端。在查驗了包的正確性之后,RADIUS服務(wù)器會(huì )依據包中的用戶(hù)名在用戶(hù)數據庫中查詢(xún)是否有此用戶(hù)記錄。如果用戶(hù)信息不符合,就向NAS發(fā)出“接入拒絕”(Access-Reject)包。NAS在收到拒絕包后,會(huì )立即停止用戶(hù)連接端口的服務(wù)要求,用戶(hù)被強制退出。
?。?)如果用戶(hù)信息全部符合,服務(wù)器向NAS發(fā)出“接入質(zhì)詢(xún)”包(Access-Challenge),對用戶(hù)的登錄請求作進(jìn)一步的驗證。其中包括:用戶(hù)口令、用戶(hù)登錄訪(fǎng)問(wèn)服務(wù)器的IP、用戶(hù)登錄的物理端口號等。NAS收到“接入質(zhì)詢(xún)”包后,將消息顯示給用戶(hù),要求用戶(hù)進(jìn)一步確認登錄請求。用戶(hù)再次確認后,RADIUS服務(wù)器將比較兩次的請求信息,決定如何響應用戶(hù)(發(fā)送Access-Accept、Access-Reject或再一次的Access-Challenge)。
?。?)當所有的驗證條件和握手會(huì )話(huà)均通過(guò)后,RADIUS服務(wù)器會(huì )將數據庫中的用戶(hù)配置信息放在“接入接受”(Access-Accept)包中返回給NAS,后者會(huì )根據包中的配置信息限定用戶(hù)的具體網(wǎng)絡(luò )訪(fǎng)問(wèn)能力。包括服務(wù)類(lèi)型:SLIP、PPP、Login User、Rlogin、Framed、Callback等等。還包括與服務(wù)類(lèi)型相關(guān)的配置信息:IP地址、時(shí)間限制等等。
?。?)在所有的驗證、授權完成后,局域網(wǎng)交換機的控制端口被打開(kāi)。用戶(hù)可以通過(guò)交換機進(jìn)入網(wǎng)絡(luò )。同時(shí),NAS向RADIUS服務(wù)器發(fā)送 “計費請求開(kāi)始”包(Accounting-Request Start),通知RADIUS服務(wù)器開(kāi)始計費。當用戶(hù)下網(wǎng)時(shí),NAS向RADIUS服務(wù)器發(fā)送“計費請求結束”包(Accounting-Request Stop),RADIUS服務(wù)器根據計費包的信息計算用戶(hù)使用網(wǎng)絡(luò )的費用。
評論