1. 程式人生 > >AAA及Radius

AAA及Radius

拒絕 定義 繼續 基本配置 特定 option 器) play 過程

一、AAA(Authentication、Authorization、Accounting) 驗證、授權和記費
驗證 Authentication :驗證用戶身份
授權 Authorization :授權用戶可以使用哪些服務
記費 Accounting :記錄用戶使用網絡資源的情況,對用戶進行計費
實現AAA功能可以在本地進行,也可以由AAA服務器在遠程進行。

計費功能由於占用系統資源大通常都使用AAA服務器實現。對於用戶數量大的情況,驗證和授權也應該使用AAA服務器。
AAA服務器與網絡設備的通信有標準的協議,目前比較流行的是RADIUS協議。

二、提供AAA支持的服務
PPP: PPP的PAP、CHAP驗證的用戶。
EXEC: 指通過telnet登陸到路由器,以及通過各種方式(如console口,aux口等)進入到路由器進行配置的操作。
FTP: 通過ftp登陸到路由器的用戶。

三、驗證與授權
1、驗證
用戶名、口令驗證: 包括PPP的PAP驗證、PPP的CHAP驗證、EXEC用戶驗證、FTP用戶驗證。
撥號的PPP用戶可以進行主叫號碼驗證。

2、授權
服務型授權: 對一個用戶授權提供的服務。可以是PPP、EXEC、FTP中的一種或幾種。
回呼號碼: 對PPP回呼用戶可以設定回呼號碼。
隧道屬性: 配置L2TP的隧道屬性。

驗證、授權可以在本地進行,也可以在RADISU服務器進行。但對一個用戶的驗證和授權使用相同的方法,即或者驗證、授權均在本地進行,或者均使用RADIUS服務器。

四、計費及AAA使用特別提醒
+記錄用戶使用資源情況
+只能使用AAA服務器進行計費
+對於進行了驗證的用戶缺省都要進行計費
+如果不希望計費一定要配置如下命令:
aaa accounting-scheme optional

首次使用AAA,經常發生配置了用戶而驗證不通過的情況。這實際上是由於沒有學會靈活使用aaa accounting-scheme optional的原因。其實這種情況不是驗證不通過,而是計費失敗,切斷了用戶。
因為開始使用的時候啟用AAA,這時缺省使用本地驗證。而本地驗證也是需要計費的,由於沒有配置RADIUS服務器,造成計費失敗,而因為沒有配置aaa accounting-scheme optional,在計費失敗時的處理就是斷開用戶,因此用戶不能成功上網。
aaa accounting-scheme optional的作用是在計費失敗時允許用戶繼續使用網絡。因此在只驗證不計費的情況下,一定要註意配置aaa accounting-scheme optional命令。

五、AAA基本配置命令
aaa-enable: 啟用AAA。
aaa accounting-scheme optional: 計費處理選項。
aaa authentication-scheme login { default | methods-list } { method1 [ method2 ... ] }
aaa authentication-scheme ppp { default | methods-list } { method1 } [ method2 ... ]
配置login的驗證方法表和ppp的驗證方法表,方法表的名字可以是default也可以自己取。缺省方法表的缺省方法為本地驗證。驗證方法有三種:radius、local、none。配置多種方法時,前面的方法失敗則使用後面的方法,這裏說的失敗不是驗證失敗,而是驗證不能成功進行,比如與RADIUS服務器通信失敗,因此只有RADIUS方法才可能有失敗的情況。所以只有5種有意義的方法組合:
後面的方法有5種有效組合: radius、local、none、radius local、radius none。
方法表的概念:
login只能配置一個方法表,配置了方法表即自動應用到所有需要AAA的FTP用戶、EXEC用戶。
PPP可以配置多個方法表,特定的接口使用哪個方法表還需要將這個方法表應用到接口上。即在接口上配置ppp authentication-mode { chap | pap } [ callin ] [ scheme { default | name-list } ],缺省使用default方法表。

六、本地用戶數據庫
技術分享圖片
使用本地驗證、授權需要在路由器上維護用戶數據庫。由於路由器上資源有限,此數據庫不宜過大。最多只支持配置50個用戶。大量用戶應該使用RADIUS服務器。

七、調試和監控信息
+顯示在線用戶
display aaa user
+原語調試信息,觀察AAA請求與結果
debugging radius primitive
+事件調試信息,觀察AAA過程
debugging radius event

原語為各服務(PPP、EXEC、FTP)與AAA功能的接口,常見原語有7種。
請求原語三種:
join(pap):用戶名、口令驗證請求。
join(chap):PPP的CHAP驗證請求。
leave:用戶下網請求。
返回結果的原語三種:
accept:驗證通過。
reject:驗證不通過,拒絕用戶。
bye:用戶下網的確認。
另外還有一種:
cut:在計費失敗時,如果沒有配置 aaa accounting-scheme optional 則要求相應服務切斷用戶。
用事件調試信息可以簡單觀察AAA過程。由於事件調試信息很短,在用戶驗證活動量大時可以只打開事件調試信息,這樣不會由於調試信息過多而無法觀察。

RADIUS

一、
+RADIUS(Remote Authentication Dial-in User Service)是當前流行的安全服務器協議
+實現AAA(Authorization、Authentication、Accounting)

RADIUS采用客戶機/服務器(Client/Server)結構。驗證、授權時客戶端的任務是將用戶(User)的信息發送到指定的服務器,然後根據服務器的不同響應進行處理。RADIUS服務器的任務是接收客戶端發來的用戶連接請求,驗證用戶,並返回客戶端提供服務所需要的配置信息。RADIUS服務器的數據庫中集中存放了相關的安全信息,避免安全信息淩亂散布帶來的不安全性,同時更可靠且易於管理。實現計費時,客戶端將用戶的上網時長、進出字節數、進出包數等原始數據送到RADIUS服務器上,以供RADIUS服務器計費時使用。
在路由器上運行RADIUS客戶端程序。

二、RADIUS實現AAA的流程
技術分享圖片
首先由各種服務(PPP、EXEC、FTP)得到用戶信息,然後將這些信息交給RADIUS服務器進行驗證。如果通過驗證,RADIUS服務器將驗證信息連同RADIUS用戶數據庫中包含的用戶授權信息一起送給路由器。路由器根據這些信息向用戶提供相應服務。
通過驗證的同時,通知RADIUS服務器會話開始。 於會話終止時再次通知RADIUS服務器。 這樣由RADIUS服務器保存的記帳記錄可以用於計費。

三、RADIUS結構及基本原理
RADIUS協議采用客戶機/服務器(Client/Server)結構,路由器作為客戶端與RADIUS服務器通信。
UDP(User Datagram Protocol)即用戶數據報協議,它是一種面向無連接的協議,傳輸層不保證報文的可靠性和順序性,這樣報文可能丟失或者是亂序。RADIUS協議使用了兩個UDP端口分別用於驗證(以及驗證通過後對用戶的授權)和計費。在RADIUS的協議文本RFC 2138和RFC 2139中,使用1812號端口作為驗證端口,1813號端口為計費端口。也可以使用其他端口。
RADIUS協議采用了“請求/響應”的操作模式,請求由客戶端發起,當RADIUS服務器收到一個合法的請求後就要給予響應。由於UDP報文可能會丟失,網絡也可能臨時出現故障,因此路由器提供重傳機制,當在一定時間內沒有收到RADIUS服務器的響應時,會重傳剛才的請求。如果多次重傳後仍然收不到響應,那麽路由器會向備用的RADIUS服務器發送請求。
作為安全協議,RADIUS自身的安全性也有一定考慮。 客戶端與服務器端有共享密鑰。通訊時使用MD5算法通過共享密鑰對包進行數字簽名,驗證簽名的正確性可以防止網絡上的其他主機冒充路由器或者RADIUS服務器。用戶口令也需要進行加密後再在網上傳送,使口令不會泄漏。
每個RADIUS包有0到多個屬性,用戶的各種信息均寫在屬性中,一些屬性協議還規定了各屬性值的含義。性能的擴展只需要增加包中所帶的屬性即可。使用中還可以定義私有的屬性類型和屬性值。這需要修改RADIUS服務器的屬性字典。

四、RADIUS驗證與授權
+驗證、授權過程如下:
路由器將得到的用戶信息打包向RADIUS服務器發送
RADIUS服務器對用戶進行驗證:
合法用戶--返回訪問接受包(用戶授權信息)
非法用戶--返回範文拒絕包
路由器接收服務器的響應包:
訪問接受包--允許上網,使用其授權信息對用戶進行處理
訪問拒絕包--拒絕用戶上網請求

1、首先發送驗證請求包。在用戶名、口令驗證時驗證請求包包含用戶名和加密後的口令;CHAP驗證中包含用戶名,CHAP驗證過程中的各項(Challenge、CHAP Identifier、Response);主叫號碼驗證還需要有主叫號碼。
2、RADIUS服務器收到驗證請求包後,首先檢查包的合法性,然後根據包中用戶信息驗證用戶是否合法。如果用戶非法,則向路由器發送訪問拒絕包;如果用戶合法,那麽RADIUS服務器會將用戶的授權信息(如用戶類型、回呼號碼等等)打包發送到路由器,該包稱為訪問接受包。
3、路由器收到訪問接受/拒絕包時,首先要判斷包中的簽名是否正確,如果不正確將認為收到了一個非法的包。如果簽名正確,且收到的是訪問接受包那麽路由器會判斷授權服務類型是否與此用戶相符,如果不符則拒絕該用戶的上網請求,如果符合則接受用戶的上網請求,並使用其他用戶授權信息對用戶進行處理(如回呼、L2TP隧道屬性的設置)。 如果簽名正確且收到的是訪問拒絕包,則拒絕該用戶的上網請求。

五、RADIUS計費
技術分享圖片
路由器負責收集可能同用戶上網費用有關的信息,並將這些信息發送到RADIUS服務器。RADIUS服務器通常是網上的一臺工作站,使用這些信息進行計費。
每次計費交互過程包括路由器發到RADIUS服務器的計費請求包,和RADIUS服務器返回的應答包。對於需要計費的用戶,在一個會話過程中至少需要兩次這樣的交互過程,分別在驗證通過後和用戶下網時。如果配置了實時計費,還會每隔一段時間進行一次實時計費。
計費信息包括會話時間、輸入輸出包數、輸入輸出字節數。
當得不到正確計費應答包時認為計費失敗。此時如果配置了aaa accounting-scheme optional命令則繼續允許用戶訪問網絡,否則將切斷用戶。

六、RADIUS用戶管理
+RADIUS協議為標準協議,遵循RADIUS協議的所有服務器可以互通
+用戶管理放置在RADIUS服務器端進行,有相應的管理軟件
+用戶可以靈活選用RUDIUS服務器及用戶管理軟件

RADIUS協議只規定了RADIUS服務器同RADIUS客戶端(路由器)的信息交互的格式。由於RADIUS協議是標準的,所以路由器能與不同的RADIUS服務器互通。而在RADIUS服務器上,使用者可以任意根據自己的需要對得到的信息進行處理,滿足不同的需求。

七、RADIUS基本配置
+配置RADIUS服務器
radius server { hostname | ip-address } [authentication-port port-number ] [accouting-port port-number ] 配置服務器地址和端口號,最多可以配置3個RADIUS服務器。
radius shared-key string 配置共享密鑰。
+配置重傳參數
radius retry times 配置最大重傳次數,如果達到這個次數仍然未得到應答包則認為此RADIUS服務器已不可用。
radius timer response-timeout seconds 配置重傳時間間隔,單位為秒。
+配置實時計費
radius timer realtime-accounting minutes 配置實時計費時間間隔,單位為分鐘。此時間不宜過短,否則會大量占用系統資源。

八、RADIUS包調試信息
+配置RADIUS服務器密鑰、重傳次數、超時定時器
redius shared-key this-is-my-secret
redius retry 2
radius timer response-timerout 5
+將缺省方發表應用到封裝了PPP的接口
ppp authentication-mode pap scheme default

AAA及Radius