應用層協議——RADIUS

一、前言

RADIUS簡介

應用層協議Radius是Remote Authentication Dial In User Service的簡稱,即遠程認證撥號用戶服務。當用戶想要通過某個網絡(如電話網)與網絡接入服務器NAS(Network Access Server)(此NAS非彼NAS)建立連接從而獲得訪問其它網絡的權力時,NAS可以選擇在NAS上進行本地認證計費,或把用戶信息傳遞給Radius服務器,由Radius進行認證計費。Radius協議規定了NAS與Radius服務器之間如何傳遞用戶信息和記賬信息,Radius服務器負責接收用戶的連接請求,完成驗證,並把傳遞服務給用戶所需的配置信息返回給NAS。例如:用戶要求得到某些服務(如SLIP, PPP, telnet),必須通過NAS,由NAS依據某種順序與所連服務器通信從而進行驗證。用戶通過撥號進入NAS,然後NAS按配置好的驗證方式(如PPP PAP, CHAP等)要求輸入用戶名,密碼等信息,用戶按提示輸入。通過與NAS的連接,NAS得到這些信息。而後,NAS把這些信息傳遞給Radius服務器,並根據服務器的響應來決定用戶是否可以獲得他所要求的服務。

二、什麼是AAA協議

目前,電信運營商和服務提供商所採用的認證方式主要有本地認證、RADIUS認證和不認證;而計費策略更是豐富多彩,常見的有不計費(包月)、按時長計費、按流量計費、按端口計費等等。目前在所有這些認證計費方式中,以採用RADIUS Server進行集中認證計費應用的最爲普及和廣泛。

Radius是AAA協議的一個實現,那麼什麼是AAA協議?

AAA是鑑別,授權和記賬(Authentication, Authorization,Accounting)的簡稱,它是運行於NAS上的客戶端程序,提供了一個用來對鑑別,授權和記賬這三種安全功能進行配置的一致的框架。一個網絡允許外部用戶通過公用網對其進行訪問,從而用戶在地理上可以極爲分散。大量分散用戶通過Modem(調制解調器,貓)等設備從不同的地方可以對這個網絡進行隨機訪問。用戶可以把自己的信息傳遞給這個網絡,也可以從這個網絡得到自己想要的信息。由於存在內外的雙向數據流動,網絡安全就成爲很重要的問題了。大量的modem形成了Modem pools。對modem pool的管理就成爲網絡接入服務器或路由器的任務。管理的內容有:哪些用戶可以獲得訪問權,獲得訪問權的用戶可以允許使用哪些服務,如何對使用網絡資源的用戶進行記費。AAA很好地完成了這三項任務。AAA的配置實際上是對網絡安全的一種管理,這裏的網絡安全主要指訪問控制,包括哪些用戶可以訪問網絡服務器,具有訪問權的用戶可以得到哪些服務,如何對正在使用網絡資源的用戶進行記賬。下面簡單介紹一下鑑別,授權,記賬的作用。

  • 鑑別(Authentication):鑑別用戶是否可以獲得訪問權。

  • 授權(Authorization) :授權用戶可以使用哪些服務。

  • 記賬(Accounting) :記錄用戶使用網絡資源的情況。

AAA的各類功能

  • 認證功能,AAA支持以下認證方式:

    • 不認證:對用戶非常信任,不對其檢查,一般情況下不採用這種方式。

    • 本地認證:將用戶信息(包括本地用戶的用戶名、密碼和各種屬性)配置在接入服務器上。本地認證的優點是速度快,降低運營成本;但存儲信息量受設備硬件條件限制。

    • 遠端認證:支持通過RADIUS協議或HWTACACS協議進行遠端認證,由接入服務器作爲Client端,與RADIUS服務器或TACACS服務器通信。

  • 授權功能,AAA支持以下授權方式:

    • 直接授權:對用戶非常信任,直接授權通過。

    • 本地授權:根據寬帶接入服務器上爲本地用戶賬號配置的相關屬性進行授權。

    • HWTACACS授權:由TACACS服務器對用戶進行授權。

    • if-authenticated授權:如果用戶通過了認證,並且使用的認證方法不是none,則對用戶授權通過。

    • RADIUS認證成功後授權:RADIUS協議的認證和授權是綁定在一起的,不能單獨使用RADIUS進行授權。

  • 計費功能,AAA支持以下計費方式:

    • 不計費

    • 遠端計費:支持通過RADIUS服務器或TACACS服務器進行遠端計費。

三、RADIUS爲何採用UDP,而不是TCP

在這裏插入圖片描述

RADIUS協議採用的是UDP協議,數據包可能會在網絡上丟失,如果客戶沒有收到響應,那麼可以重新發送該請求包。多次發送之後如果仍然收不到響應,RADIUS客戶可以向備用的RADIUS服務器發送請求包。
RADIUS是一種分佈式的、C/S架構的信息交互協議,能包含網絡不受未授權訪問的干擾,常應用在既要求較高安全性、又允許遠程用戶訪問的各種網絡環境中。

協議定義了基於UDP(User Datagram Protocol)的RADIUS報文格式及其傳輸機制,並規定UDP端口1812作爲認證端口、1813計費端口。

如果是思科設備:認證和授權端口爲UDP1645,計費端口1646。

RADIUS最初僅是針對撥號用戶的AAA協議,後來隨着用戶接入方式的多樣化發展,RADIUS也適應多種用戶接入方式,如以太網接入等。它通過認證授權來提供接入服務,通過計費來收集、記錄用戶對網絡資源的使用。

採用UDP的原因如下

  • NAS和RADIUS服務器大多在同一個局域網中,使用UDP更加快捷方便。

  • 簡化了服務端的實現。

  • NAS和RADIUS服務器之間傳遞的一般是幾十至上百個字節長度的數據,用戶要容忍幾秒到十幾秒的驗證等待時間。當處理大量用戶時服務器端採用多線程,UDP簡化了服務器端的實現過程。

  • TCP是必須成功建立連接後才能進行數據傳輸的,這種方式在有大量用戶使用的情況下實時性不好。

  • 當向主用服務器發送請求失敗後,還要必須向備用的服務器發送請求。於是RADIUS要有重傳機制和備用服務器機制,它所採用的定時機制,TCP不能很好的滿足。

  • RADIUS有自己的機制,來解決UDP丟包特點。

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

四、Radius的架構:

客戶端/服務器模式。

RADIUS客戶端

一般位於網絡接入服務器NAS(Network Access Server)上,可以遍佈整個網絡,負責傳輸用戶信息到指定的RADIUS服務器,然後根據從服務器返回的信息進行相應處理(如接受/拒絕用戶接入)。

設備作爲RADIUS協議的客戶端,實現以下功能:

  • 支持標準RADIUS協議及擴充屬性,包括RFC(Request For Comments)2865、RFC2866。
  • 支持華爲擴展的私有屬性。
  • 對RADIUS服務器狀態的主動探測功能。
  • 計費結束報文的本地緩存重傳功能。
  • RADIUS服務器的自動切換功能。

RADIUS服務器

一般運行在中心計算機或工作站上,維護相關的用戶認證和網絡服務訪問信息,負責接收用戶連接請求並認證用戶,然後給客戶端返回所有需要的信息(如接受/拒絕認證請求)。RADIUS服務器通常要維護三個數據庫。
在這裏插入圖片描述

  • Users:用於存儲用戶信息(如用戶名、口令以及使用的協議、IP地址等配置信息)。
  • Clients:用於存儲RADIUS客戶端的信息(如接入設備的共享密鑰、IP地址等)。
  • Dictionary:用於存儲RADIUS協議中的屬性和屬性值含義的信息。

五、Radius的主要特點

  • 客戶端/服務器模型

網絡訪問服務器(NAS)作爲RADIUS的客戶端運行。該客戶負責將用戶信息傳遞給指定RADIUS服務器,然後對返回的響應進行操作。RADIUS服務器負責接收用戶連接請求,認證用戶,然後返回所有客戶端交付所需的配置信息服務給用戶。

RADIUS服務器可以作爲其他RADIUS服務器的代理客戶端或其他種類的認證服務器。

  • 網絡安全

客戶端和RADIUS服務器之間的事務是通過使用共享密鑰進行身份驗證。另外,發送任何用戶密碼在客戶端和RADIUS服務器之間加密,消除有人窺探不安全網絡確定用戶密碼的可能性。

  • 靈活的認證機制

RADIUS服務器能支持多種認證用戶的方法。包括點對點的PAP認證(PPP PAP)、點對點的CHAP認證(PPP CHAP)、UNIX的登錄操作(UNIX login)、和其他認證機制。

  • 可擴展協議

所有交易均由可變長度Attribute長度值3元組。可以添加新屬性值從而影響協議的現有實現。

六、RADIUS報文

RADIUS報文格式

基於UDP報文傳輸消息
在這裏插入圖片描述
各字段的解釋如下:

  • Code:長度爲1個字節,用來說明RADIUS報文的類型。
Code值 報文類型
1 Access-Request
2 Access-Accept
3 Access-Reject
4 Accounting-Request
5 Accounting-Response
11 Access-Challenge
255 Reserved(保留,在生成一個新的數據包時使用)
  • Identifier:長度爲1個字節(0~255),用來匹配請求報文和響應報文,以及檢測在一段時間內重發的請求報文(防止重放攻擊)。客戶端發送請求報文後,服務器返回的響應報文中的Identifier值應與請求報文中的Identifier值相同
  • Length:長度爲2個字節,用來指定RADIUS報文的長度。表示RADIUS數據區(包括Code, Identifier, Length, Authenticator, Attributes)的長度,單位是字節,最小爲20,最大爲4096。超過Length取值的字節將作爲填充字符而忽略。如果接收到的報文的實際長度小於Length的取值,則該報文會被丟棄。
  • Authenticator:長度爲16個字節,用來驗證RADIUS服務器的響應報文,同時還用於用戶密碼的加密。
  • Attribute:不定長度,爲報文的內容主體,用來攜帶專門的認證、授權和計費信息,提供請求和響應報文的配置細節。Attribute可以包括多個屬性,每一個屬性都採用(Type、Length、Value)三元組的結構來表示(具體屬性值代表的含義不做過多闡述)。

RADISU報文類型:

目前RADIUS定義了十六種報文類型。

RADIUS認證報文
  • Access-Request:認證請求報文,是RADIUS報文交互過程中的第一個報文,用來攜帶用戶的認證信息(例如:用戶名、密碼等)。認證請求報文由RADIUS客戶端發送給RADIUS服務器,RADIUS服務器根據該報文中攜帶的用戶信息判斷是否允許接入

  • Access-Accept:認證接受報文,是服務器對客戶端發送的Access-Request報文的接受響應報文。如果Access-Request報文中的所有屬性都可以接受(即認證通過),則發送該類型報文。客戶端收到此報文後,認證用戶才能認證通過並被賦予相應的權限。

  • Access-Reject:認證拒絕報文,是服務器對客戶端的Access-Request報文的拒絕響應報文。如果Access-Request報文中的任何一個屬性不可接受(即認證失敗),則RADIUS服務器返回Access-Reject報文,用戶認證失敗。

RADIUS計費報文
  • Accounting-Request(Start):計費開始請求報文。如果客戶端使用RADIUS模式進行計費,客戶端會在用戶開始訪問網絡資源時,向服務器發送計費開始請求報文。

  • Accounting-Response(Start):計費開始響應報文。服務器接收併成功記錄計費開始請求報文後,需要回應一個計費開始響應報文。

  • Accounting-Request(Interim-update):實時計費請求報文。爲避免計費服務器無法收到計費停止請求報文而繼續對該用戶計費,可以在客戶端上配置實時計費功能。客戶端定時向服務器發送實時計費報文,減少計費誤差。

  • Accounting-Response(Interim-update):實時計費響應報文。服務器接收併成功記錄實時計費請求報文後,需要回應一個實時計費響應報文。

  • Accounting-Request(Stop):計費結束請求報文。當用戶斷開連接時(連接也可以由接入服務器斷開),客戶端向服務器發送計費結束請求報文,其中包括用戶上網所使用的網絡資源的統計信息(上網時長、進/出的字節數等),請求服務器停止計費。

  • Accounting-Response(Stop):計費結束響應報文。服務器接收計費停止請求報文後,需要回應一個計費停止響應報文。

RADIUS授權報文

CoA:(Change of Authorization)是指用戶認證成功後,管理員可以通過RADIUS協議來修改在線用戶的權限。

DM:(Disconnect Message)是指用戶離線報文,即由RADIUS服務器端主動發起的強迫用戶下線的報文。

  • CoA-Request:動態授權請求報文。當管理員需要更改某個在線用戶的權限時(例如,管理員不希望用戶訪問某個網站),可以通過服務器發送一個動態授權請求報文給客戶端,使客戶端修改在線用戶的權限。

  • CoA-ACK:動態授權請求接受報文。如果客戶端成功更改了用戶的權限,則客戶端迴應動態授權請求接受報文給服務器。

  • CoA-NAK:動態授權請求拒絕報文。如果客戶端未成功更改用戶的權限,則客戶端迴應動態授權請求拒絕報文給服務器。

  • DM-Request:用戶離線請求報文。當管理員需要讓某個在線的用戶下線時,可以通過服務器發送一個用戶離線請求報文給客戶端,使客戶端終結用戶的連接。

  • DM-ACK:用戶離線請求接受報文。如果客戶端已經切斷了用戶的連接,則客戶端迴應用戶離線請求接受報文給服務器。

  • DM-NAK:用戶離線請求拒絕報文。如果客戶端無法切斷用戶的連接,則客戶端迴應用戶離線請求拒絕報文給服務器。

七、RADIUS工作過程

在這裏插入圖片描述

  1. 用戶撥入

  2. 所撥入的設備(比如NAS)將撥入用戶的用戶的信息(比如用戶名、口令、所佔用的端口等等)打包向RADIUS服務器發送。如果Radius服務器發送Access-Challenge要求二次驗證,則Radius客戶端將再次收集用戶信息通過Access-Request發送。

  3. 如果該用戶是一個合法的用戶,那麼Radius告訴NAS該用戶可以上網,同時傳回該用戶的配置參數;否則,Radius反饋NAS該用戶非法的信息。

  4. 如果該用戶合法,NAS就根據從RADIUS服務器傳回的配置參數配置用戶。如果用戶非法,NAS反饋給用戶出錯信息並斷開該用戶連接。

  5. 如果用戶可以訪問網絡,RADIUS客戶要向RADIUS服務器發送一個記費請求包表明對該用戶已經開始計費。

  6. RADIUS服務器收到併成功記錄該請求包後要給予響應。

  7. 當用戶斷開連接時(連接也可以由接入服務器斷開)。

  8. RADIUS客戶向RADIUS服務器發送一個計費停止請求包,其中包含用戶上網所使用網絡資源的統計信息(上網時長、進/出的字節/包數等)。

  9. RADIUS服務器收到併成功記錄該請求包後要給予響應。

八、RADIUS代理

對RADIUS代理服務器來說,一個RADIUS服務器在收到一個來自RADIUS客戶端(例如NAS服務器)的認證請求(或者計費請求)後,向一個遠程的RADIUS服務器提交該請求,收到來自遠程服務器的回覆後,將這個回覆傳輸給客戶,這個回覆可能帶有反映本地管理策略的變化。使用RADIUS代理服務器通常是爲了漫遊。漫遊功能使兩個或更多的管理實體允許每一個用戶爲某項服務而撥入到任一個實體網絡中。

一個RADIUS服務器可以同時作爲轉送服務器和遠程服務器運行。在某些域中作爲一個轉發服務器,在其他域中作爲一個遠程服務器。一個轉發服務器可以作爲任何數量遠程服務器的轉發者。一個遠程服務器可以有任意數量的轉發服務器向它轉發,也能向任意數量域提供認證。一個轉發服務器可以向另一個轉發服務器轉發,從而生成一個代理鏈,應當注意避免循環引用。

下面的過程解釋了一個代理服務器在一個NAS服務器、轉發服務器和遠程服務器之間的通信。

  1. NAS向一個轉發服務器發出接入請求。
  2. 轉發服務器把這個請求轉發給一個遠程服務器。
  3. 遠程服務器給轉發服務器送回接入允許、接入拒絕或接入盤問。此時,服務器送回的是接入允許。
  4. 轉發服務器將接入允許傳輸給NAS。

轉發服務器必須把已經存在於數據包中的任何代理狀態屬性當作不可見的數據。它的操作禁止依靠被前面服務器添加到代理狀態屬性中的內容。

如果收到來自客戶端的請求中有任何代理狀態屬性,在給客戶端的回覆中,轉發服務器必須在給客戶端的回覆中包括這些代理狀態屬性。當轉發服務器轉發這個請求時,它可以把代理狀態屬性包含在其中,也可以在已轉發的請求中忽略代理狀態屬性。如果轉發服務器在轉發的接入請求中忽略了代理狀態屬性,它必須在響應返回給用戶之前把這些代理狀態屬性添加到該響應中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章