無線局域網中RADIUS協議原理與實現
無線局域網的發展已經日漸成熟了,但是對于無線網絡技術中的RADIUS協議,我們很多人并不了解它的工作原理,這里就為我們介紹一下。
1 引言
遠程認證撥號用戶服務協議(Remote Authentication Dial In User Service, RADIUS)最初是由Livingston公司提出的一個為撥號用戶提供認證和計費的協議。后經多次改進,逐漸成為一項通用的網絡認證、計費協議,并定義于IETF提交的RFC2865和RFC2866文件中。RADIUS協議以Client/Server方式工作,客戶端為網絡接入服務器(NAS),它向RADIUS服務器提交認證、計費等信息,RADIUS服務器處理信息并將結果返回給 NAS。
RADIUS協議的應用范圍很廣,在移動、數據、智能網等業務的認證、計費系統中都有所應用。無線局域網的802.1X認證框架中,在認證端也建議使用RADIUS協議。
本文將論述RADIUS協議的原理,并探討它在WLAN中的應用及實現方案。
2 RADIUS協議
2.1 WLAN網絡模型
實際商用的無線局域網,可以用局域網交換機來實現802.1X認證協議中的端口控制功能。為保證網絡的安全性,在無線局域網的出口和認證端應加上防火墻。RADIUS服務器和數據庫還可以采取主、備結構,以保證網絡的健壯性。
網絡模型如下圖所示:
圖1 無線局域網網絡模型
無線局域網的認證端由RADIUS服務器、網絡接入服務器(NAS)和數據庫組成。其中:
NAS:作為RADIUS服務器的客戶端,向RADIUS服務器轉交用戶的認證信息。并在用戶通過認證之后,向RADIUS服務器發送計費信息。
RADIUS服務器:作為認證系統的中心服務器,它與NAS、數據庫相連,它接受來自NAS提交的信息,對數據庫進行相應的操作,并把處理結果返回給NAS。
數據庫:用于保存所有的用戶信息、計費信息和其他信息。用戶信息由網絡管理員添加至數據庫中;計費信息來自于RADIUS服務器;其他信息包括日志信息等。
2.2 RADIUS的數據包結構
RADIUS是應用層的協議,在傳輸層它的報文被封裝在UDP的報文中,進而封裝進IP包。 RADIUS認證使用1812端口,計費使用1813端口。
以太網上的RADIUS封裝后的包結構:
RADIUS數據包分為5個部分:
(1) Code:1個字節,用于區分RADIUS包的類型:常用類型有:
接入請求(Access-Request),Code=1;接入應答(Access-Accept),Code=2;接入拒絕(Access- Reject),Code=3;計費請求(Accounting-Request),Code=4等。
(2)Identifier:一個字節,用于請求和應答包的匹配。
(3)Length:兩個字節,表示RADIUS數據區(包括Code, Identifier, Length, Authenticator, Attributes)的長度,單位是字節,最小為20,***為4096。
(4)Authenticator:16個字節,用于驗證服務器端的應答,另外還用于用戶口令的加密。RADIUS服務器和NAS的共享密鑰(Shared Secret)與請求認證碼(Request Authenticator)和應答認證碼(Response Authenticator),共同支持發、收報文的完整性和認證。另外,用戶密碼不能在NAS和RADIUS 服務器之間用明文傳輸,而一般使用共享密鑰(Shared Secret)和認證碼(Authenticator)通過MD5加密算法進行加密隱藏。
(***ttributes:不定長度,最小可為0個字節,描述RADIUS協議的屬性,如用戶名、口令、IP地址等信息都是存放在本數據段。
2.3 RADIUS的認證、計費過程
如圖1網絡模型所示:
(1)申請者登錄網絡時,NAS會有一個客戶定義的Login提示符要求申請者輸入用戶信息(用戶名和口令),申請者輸入相關的認證信息后,等待認證結果。
(2)NAS在得到用戶信息后,將根據RADIUS的數據包格式,向RADIUS服務器發出“接入請求”(Access-Request)包。包中一般包括以下RADIUS屬性值:用戶名、用戶口令、訪問服務器的ID、訪問端口的ID。
(3)當RADIUS服務器收到“接入請求”包后,首先驗證NAS的共享密碼與RADIUS服務器中預先設定的是否一致,以確認是所屬的 RADIUS客戶端。在查驗了包的正確性之后,RADIUS服務器會依據包中的用戶名在用戶數據庫中查詢是否有此用戶記錄。如果用戶信息不符合,就向 NAS發出“接入拒絕”(Access-Reject)包。NAS在收到拒絕包后,會立即停止用戶連接端口的服務要求,用戶被強制退出。