RADIUS

RADIUS

RADIUS:Remote Authentication Dial In User Service,遠程用戶撥號認證系統由RFC2865,RFC2866定義,是目前應用最廣泛的AAA協議。AAA是一種管理框架,因此,它可以用多種協議來實現。在實踐中,人們最常使用遠程訪問撥號用戶服務(Remote Authentication Dial In User Service,RADIUS)來實現AAA。RADIUS是一種C/S結構的協議,它的客戶端最初就是NAS(Net Access Server)伺服器,任何運行RADIUS客戶端軟體的計算機都可以成為RADIUS的客戶端。RADIUS協議認證機制靈活,可以採用PAP、CHAP或者Unix登錄認證等多種方式。RADIUS是一種可擴展的協議,它進行的全部工作都是基於Attribute-Length-Value的向量進行的。RADIUS也支持廠商擴充廠家專有屬性。

簡介


radius
radius
RADIUS是一種分佈的,客戶端/伺服器系統,實現安全網路,反對未經驗證的訪問。在cisco實施中,RADIUS客戶端運行在cisco路由器上上,發送認證請求到中心RADIUS伺服器,伺服器上包含了所有用戶認證和網路服務訪問的信息。

歷史


RADIUS協議最初是由Livingston公司提出的,原先的目的是為撥號用戶進行認證和計費。後來經過多次改進,形成了一項通用的認證計費協議。
創立於1966年的Merit Network, Inc.是密歇根大學的一家非營利公司,其業務是運行維護該校的網路互聯MichNet。1987年,Merit在美國NSF(國家科學基金會)的招標中勝出,贏得了NSFnet(即Internet前身)的運營合同。因為NSFnet是基於IP的網路,而MichNet卻基於專有網路協議,Merit面對著如何將MichNet的專有網路協議演變為IP協議,同時也要把MichNet上的大量撥號業務以及其相關專有協議移植到IP網路上來。
1991年,Merit決定招標撥號伺服器供應商,幾個月後,一家叫Livingston的公司提出了建議,冠名為RADIUS,並為此獲得了合同。
1992年秋天,IETF的NASREQ工作組成立,隨之提交了RADIUS作為草案。很快,RADIUS成為事實上的網路接入標準,幾乎所有的網路接入伺服器廠商均實現了該協議。
1997年,RADIUS RFC2058發表,隨後是RFC2138,最新的RADIUS RFC2865發表於2000年6月。

使用


+當多廠商訪問伺服器網路,都支持RADIUS。例如,幾個不同廠家的訪問伺服器只使用基於RADIUS的安全資料庫,在基於ip的網路有多個廠商的訪問伺服器,通過RADIUS伺服器來驗證撥號用戶,進而定製使用kerberos安全系統。
+當某應用程序支持RADIUS協議守護網路安全環境,就像在一個使用smart card門禁控制系統的那樣的訪問環境。某個案例中,RADIUS
被用在Enigma安全卡來驗證用戶和准予網路資源使用許可權。

已經使用


你可以添加具有RADIUS支持的cisco路由器到你的網路中,這個可以成為你想過渡到TACACS+伺服器的
第一步。
+當網路中一個用戶僅能訪問一種服務。使用RADIUS,你可以控制用戶訪問單個主機,進行單個服務,如telnet,或者單個協議,如ppp。例如當一個用戶登錄進來,RADIUS授權這個用戶只能以10.2.3.4這個地址運行ppp,而且還得和ACL相匹配。
+當網路需要資源記賬。你可以使用RADIUS記賬,獨立於RADIUS認證和授權,RADIUS記賬功能允許數據服務始與終,記錄會話之中所使用的標誌資源(如,時間,包,位元組,等等)。ISP可能使用免費版本的基於RADIUS訪問控制和記賬軟體來進行特定安全和金額統計。
+當網路希望支持預認證。在你的網路中使用RADIUS服務,你可以配置AAA預認證和設定預認證profiles。預認證服務的開啟提供更
好的管理埠來使用它們已經存在的RADIUS解決方案,更優化的管理使用、共享資源,進而提供不懂服務級別的協定。
RADIUS不適合以下網路安全情形:
~多協議訪問環境,Radius不支持以下協議:
*AppleTalk Remote Access (ARA)蘋果遠程訪問。
*NetBIOS Frame Control Protocol (NBFCP)網路基本輸出輸入系統偵控制協議。
*NetWare Asynchronous Services Interface (NASI)網件非同步服務介面。
*X.25 PAD connectionsX.25 PAD連接。
~路由器到路由器情形.Radius不提供雙向認證.Radius能使用在要認證從一個路由器到非cisco路由器,當這個非cisco路由器需要認證
的時候.
~網路使用各種各樣的服務的時候.Radius大體上約束一個用戶使用一個服務模型.
Radius操作:
當一個用戶試圖登錄並驗證到一個使用了Radius的訪問伺服器,發生了以下步驟:
1.這個用戶被允許輸入用戶名和密碼.
2.用戶名和加密的密碼被發送到網路中的Radius伺服器.
a.ACCEPT--該用戶通過了認證.
b.REJECT--該用戶沒有被認證,被允許重新輸入用戶名和密碼,或者訪問被拒絕了.
c.CHALLENGE--Radius伺服器發出挑戰。這個挑戰收集這個用戶附加信息.(CHALLENGE--Radius伺服器發出質疑。這個質疑收集這個用戶附加信息.)
d.CHANGE PASSWORD--這個請求時RADIUS伺服器發出的,告訴用戶換一個新的密碼.
ACCEPT或者REJECT回應包括了用來執行或者網路認證的附加數據,
你必須首先完成Radius認證才能使用Radius授權。帶有ACCEPT或者REJECT附加數據的包有以下組成:
+用戶能訪問的服務,包括telnet,rlogin,或者本地區域傳輸(lat)連接,以及ppp,SLIP,或者EXEC服務.
+連接參數,包括主機或者ip地址,訪問列表,和用戶超時.
配置舉例
aaa new-model //開啟aaa
radius-server host 123.45.1.2 //
指定Radius伺服器
radius-server key myRaDiUSpassWoRd //
定義訪問伺服器和Radius共享秘文
username root password ALongPassword //
用戶名,密碼.
aaa authentication ppp dialins group radius local //
定義了認證方式列表"dialins",這個東西指定了radius認證。然後,
(如果radius伺服器沒有響應),本地username將會被用來驗證ppp.
aaa authorization network default group radius local//
用徠來給Radius用戶綁定一個地址和其它網路參數
aaa accounting network default start-stop group radius//
用來跟蹤ppp用法.
aaa authentication login admins local//
給登錄認證定義了另一個方式列表,"admins",
aaa authorization exec default local
line 1 16
autoselect ppp
autoselect during-login
login authentication admins //
應用"admins"方式列表用來登錄認證.
modem ri-is-cd
interface group-async 1
encaps ppp
ppp authentication pap dialins //
應用"dialins"方式列表到指定的地方.

消息交互


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)。

功能描述


組網應用
常見的AAA組網示意如圖1所示,其中RADIUS應用在AAA伺服器上對用戶進行認證、授權和計費服務。
圖1中NAS(網路接入伺服器)作為RADIUS客戶端,向遠程接入用戶提供接入及與RADIUS伺服器交互的服務。RADIUS伺服器上則存儲用戶的身份信息、授權信息以及訪問記錄,對用戶進行認證、授權和計費服務。
工作原理
用戶接入NAS,NAS使用Access-Require數據包向RADIUS伺服器提交用戶信息,包括用戶名、密碼等相關信息,其中用戶密碼是經過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更加快捷方便,而且UDP是無連接的,會減輕RADIUS的壓力,也更安全。
RADIUS協議還規定了重傳機制。如果NAS向某個RADIUS伺服器提交請求沒有收到返回信息,那麼可以要求備份RADIUS伺服器重傳。由於有多個備份RADIUS伺服器,因此NAS進行重傳的時候,可以採用輪詢的方法。如果備份RADIUS伺服器的密鑰和以前RADIUS伺服器的密鑰不同,則需要重新進行認證。
優勢特點
RADIUS協議承載於UDP之上,官方指定埠號為認證授權埠1812、計費埠1813。RADIUS協議簡單明確、擴展性好,因此得到了廣泛應用,具有以下特點:
● 採用通用的客戶端/伺服器結構組網
NAS作為RADIUS的客戶端負責將用戶信息傳遞給指定的RADIUS伺服器,然後處理RADIUS伺服器的返回結果。RADIUS伺服器負責接收用戶的連接請求,對用戶進行認證,給客戶端返回用戶配置信息。
● 採用共享密鑰保證網路傳輸安全性
客戶端與RADIUS伺服器之間的交互是通過共享密鑰來進行相互認證的,以減少在不安全的網路中用戶密碼被偵聽到的可能性。
● 具有良好的可擴展性
RADIUS是一種可擴展的協議,所有的交互報文由多個不同長度的ALV(Attribute-Length-Value)三元組組成,新增加屬性和屬性值不會破壞到協議的原有實現。因此RADIUS協議也支持設備廠商擴充廠家專有屬性。
● 協議認證機制靈活
RADIUS協議認證機制靈活,支持多種認證用戶的方式。如果用戶提供了用戶名和用戶密碼的明文,RADIUS協議能夠支持PAP、CHAP、UNIX login等多種認證方式。
RADIUS協議簡單明確、擴展性強,因此得到了廣泛應用。在普通電話撥號上網、ADSL撥號上網、社區寬頻上網、VPDN業務、行動電話預付費等業務中都能見到RADIUS的身影。

協議結構


Code域長度為1個位元組,用於標明RADIUS報文的類型,如果Code域中的內容是無效值,報文將被丟棄,有效值如下:
RADIUS協議結構
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域佔用16個位元組,用於Radius Client 和Server之間消息認證的有效性,和密碼隱藏演演算法。訪問請求Access-Request報文中的認證字的值是16位元組隨機數,認證字的值要不能被預測並且在一個共享密鑰的生命期內唯一。
1.訪問請求認證字
在Access-Request包中認證字的值是16位元組隨機數,認證字的值要不能被預測,並且在一個共享密鑰的生命期內唯一;
2.訪問回應認證字
Access-Accept Access-Reject 和Access-Challenge包中的認證字稱為訪問回應認證字,訪問回應認證字的值定義為MD5(Code+ID+Length+RequestAuth+Attributes+Secret);
3.計費請求認證字
在計費請求包中的認證字域稱為計費請求認證字,它是一個16位元組的MD5校驗和,計費請求認證字的值定義為MD5(Code + Identifier + Length + 16 zero octets + request attributes +shared secret);
4.計費回應認證字
在計費回應報文中的認證字域稱為計費回應認證字,它的值定義為MD5(Accounting-Response Code + Identifier + Length + the RequestAuthenticator field from the Accounting-Request packet being replied to +the response attributes + shared secret);