开发进行时...

crazy coder

Avatar

RADIUS服務器原理及介紹

簡介

RADIUS: Remote Authentication Dial In User Service, 遠程用戶拔號認證系統由RFC2865, RFC2866定義,是目前應用最廣泛的AAA協議。

RADIUS是一種C/S結構的協議,它的客戶端最初就是NAS(Net Access Server)服務器,現在任何運行RADIUS客戶端軟件的計算機都可以成為RADIUS的客戶端。RADIUS協議認證機制靈活,可以采用PAP、CHAP或者Unix登錄認證等多種方式。RADIUS是一種可擴展的協議,它進行的全部工作都是基於Attribute-Length-Value的向量進行的。RADIUS也支持廠家專有屬性。

由於RADIUS協議簡單明確,可擴充,因此得到了廣泛應用,包括普通電話上網、ADSL上網、小區寬帶上網、IP電話、VPDN(Virtual Private Dialup Networks,基於撥號用戶的虛擬專用撥號網業務)、移動電話預付費等業務。IEEE提出了802.1x標準,這是一種基於端口的標準,用於對無線網絡的接入認證,在認證時也采用RADIUS協議。

基本工作原理

用戶接入NAS,NAS向RADIUS服務器使用Access-Require數據包提交用戶信息,包括用戶名、密碼等相關信息,其中用戶密碼是經過MD5加密的,雙方使用共享密鑰,這個密鑰不經過網絡傳播;RADIUS服務器對用戶名與密碼的合法性進行檢驗,必要時可以提出一個Challenge,要求進一步對用戶認證,也可以對NAS進行類似的認證;如果合法,給NAS返回Access-Accept數據包,允許用戶進行下一步工作,否則返回Access-Reject數據包,抱絕用戶訪問;如果允許訪問,NAS向RADIUS服務器提出計費請求Account-Require, RADIUS服務器響應Account-Accept, 對用戶的計費開始,同時用戶可以進行自己的相關操作。

RADIUS還支持代理和漫游功能。簡單地說,代理就是一台服務器,可以作為其他RADIUS服務器的代理,負責轉發RADIUS認證和計費數據包。所謂漫游功能,就是代理的一個具體實現,這樣可以讓用戶通過本來和其無關的RADIUS服務器進行認證,用戶到非歸屬運營商所在地也可以得到服務,也可以實現虛擬運營。

RADIUS服務器和NAS服務器通過UDP協議進行通信,RADIUS服務器的1812端口負責認證,1813端口負責計費工作。采用UDP的基本考慮是因為NAS和RADIUS服務器大多在同一個局域網中,使用UDP更加快捷方便。

RADIUS協議還規定了重傳機制。如果NAS向某個RADIUS服務器提交請求沒有收到返回信息,那麼可以要求備份RADIUS服務器重傳。由於有多個備份RADIUS服務器,因此NAS進行重傳的時候,可以采用輪詢的方法。如果備份RADIUS服務器的密鑰和以前的RADIUS服務器的密鑰不同,則需要重新進行認證。

協議結構

-------------------------------------------------
  1byte | 1byte | 2bytes
-------------------------------------------------
  Code | Identifier | Length
-------------------------------------------------
  Authenticator (16 bytes)
------------------------------------------------
  Attributes ...
-------------------------------------------------
Code - 信息類型如下所述:
1、請求訪問(Access-Request);
2、接收訪問(Access-Accept)
3、拒絕訪問(Access-Reject)
4、請費請求(Accounting-Request)
5、計費響應(Accounting-Response)
11、挑戰訪問(Access-Challenge)
12、服務器狀況(Status-Server - Experimental)
13、客戶機狀況(Status-Client - Experimental)
255、預留(Reserved)

Identifier - 匹配請求和響應的標識符。
Length - 信息大小,包括頭部
Authenticator - 該字段用來識別RADIUS服務器和隱藏口令算法中的答復。

基本消息交互流程

RADIUS服務器對用戶的認證過程通常需要利用NAS等設備的代理認證功能,RADIUS客戶端和RADIUS服務器之間通過共享密鑰認證相互的消息,用戶密碼采用密文方式在網絡上傳輸,增強了安全性。RADIUS協議合並了認證和授權過程,即響應報文中攜款帶了授權信息。
基本交互步驟如下:
(1)用戶輸入用戶名和口令;
(2)RADIUS客戶端根據獲取的用戶名和口令,向RADIUS服務器發送認證請求包(access-request).
(3)RADIUS服務器將該用戶信息與users數據庫信息進行對比分析,如果認證成功,則將用戶的權限信息以認證響應包(access-accept)發送給RADIUS客戶端,如果認證失敗,則返回access-reject響應包。
(4)RADIUS客戶端根據接收到的認證結果接入/拒絕用戶。如查可以接入用戶,則RADIUS客戶端向RADIUS服務器發送計費開始請求包(accounting-request),status-type取值為start;
(5)RADIUS服務器端返回計費開始響應包(accounting-response)
(6)RADIUS客戶端向RADIUS服務器發送計費停止請求包(accounting-request), status-type取值為stop;
(7)RADIUS服務器返回計費結束響應包(accounting-response)

评论已关闭