Part 1 - 原理介紹
1.1 什么是AAA
AAA是Authentication(驗證)、Authorization(授權(quán))和Accounting(審計)的簡稱。
AAA是一種提供驗證、授權(quán)和審計的安全技術(shù)。該技術(shù)可以用于驗證用戶是否合法,授權(quán)用戶可以訪問哪些服務(wù),并記錄用戶使用網(wǎng)絡(luò)資源的情況。
例如,企業(yè)總部需要對服務(wù)器的資源訪問進行控制,只有通過驗證的用戶才能訪問特定的資源,并對用戶使用資源的情況進行記錄。在這種場景下,可以按照如圖1-1所示的方案進行AAA部署。NAS為網(wǎng)絡(luò)接入服務(wù)器,也稱為AAA的客戶端,負責(zé)集中收集和管理用戶的訪問請求。AAA服務(wù)器可以一臺專屬的硬件設(shè)備,也可以是以軟件的形式安裝在服務(wù)器操作系統(tǒng)上(本文將使用思科的ACS軟件來實現(xiàn)AAA服務(wù)器),用戶的驗證、授權(quán)和審計服務(wù)均由AAA服務(wù)器來完成。
【圖1-1】
1.2 AAA的工作流程
如圖1-1所示,當(dāng)分支站點的用戶需要訪問總部的服務(wù)器資源時,NAS設(shè)備會對用戶的訪問進行控制,用戶向NAS設(shè)備提交賬戶信息(用戶名和密碼)后,NAS設(shè)備會將用戶信息發(fā)送給AAA服務(wù)器,由AAA服務(wù)器進行賬戶信息的驗證,并對用戶進行授權(quán)。如果用戶驗證通過,則分支站點的用戶可以訪問到特性的服務(wù)器資源(可以訪問哪些服務(wù)器,由授權(quán)來決定),同時AAA服務(wù)器也會對用戶的訪問行為進行審計。
1.3 什么是RADIUS
RADIUS(Remote Authentication Dial-In User Service,遠程認證撥號用戶服務(wù))由IETF定義的一種公有協(xié)議,是AAA客戶端和AAA服務(wù)器之間通訊的一種協(xié)議。除了RADIUS協(xié)議外,不同的網(wǎng)絡(luò)設(shè)備廠商也提出了各自的私有協(xié)議,例如,思科公司提出的TACACS+協(xié)議,華為提出的HWTACACS,也可以使用在AAA客戶端和AAA服務(wù)器之間。(本文將使用RADIUS協(xié)議作為AAA的通訊協(xié)議)
- RADIUS 服務(wù)包括三個組成部分:
- 協(xié)議:RADIUS的幀格式和消息傳輸機制在RFC 2865、RFC 2866中進行了定義,并定義了UDP端口1812作為認證端口,UDP端口1813作為計費端口。
- 服務(wù)器:RADIUS服務(wù)器,也就是AAA服務(wù)器,包含了相關(guān)的用戶認證和網(wǎng)絡(luò)服務(wù)訪問信息。
- 客戶端:網(wǎng)絡(luò)接入服務(wù)器,可以由網(wǎng)絡(luò)設(shè)備,例如,路由器、交換機等,也可以由專屬設(shè)備來充當(dāng),對用戶的訪問進行控制;
- RADIUS服務(wù)器通常要維護三個數(shù)據(jù)庫,如下圖所示:
- USERS數(shù)據(jù)庫:用于存儲用戶信息(如用戶名、口令以及使用的協(xié)議、IP 地址等配置);
- CLIENTS數(shù)據(jù)庫:用于存儲RADIUS客戶端(注:是AAA客戶端,不是個人用戶)的信息,例如,如共享密鑰;
- DICTIONARY數(shù)據(jù)庫:存儲的信息用于解釋RADIUS協(xié)議中的屬性和屬性值的含義;
- RADIUS的基本消息交互流程:
【圖1-2】
- 用戶輸入用戶名和密碼;
- RADIUS客戶端根據(jù)收到的用戶名和密碼,向RADIUS服務(wù)器發(fā)送認證請求包(Access-Request);
- RADIUS服務(wù)器將該用戶信息與USERS數(shù)據(jù)庫中的信息進行對比分析,如果認證功,則將用戶的權(quán)限信息以認證響應(yīng)包(Access-Accept)發(fā)送給 RADIUS客戶端;如果認證失敗,則返回Access-Reject響應(yīng)包;
- RADIUS客戶端根據(jù)接收到的認證結(jié)果對用戶進行接入或者 拒絕,如果可以接入用戶,則RADIUS客戶端向RADIUS服務(wù)器發(fā)送計費開始請求包(Accounting-Request ),Status-Type取值為start ;
- RADIUS服務(wù)器返回計費開始響應(yīng)包(Accounting-Response );
- 用戶開始訪問資源;
- RADIUS客戶端向RADIUS服務(wù)器發(fā)送計費停止請求包(Accounting-Request ),Status-Type取值為stop ;
- RADIUS服務(wù)器返回計費結(jié)束響應(yīng)包(Accounting-Response );
- 用戶訪問資源結(jié)束。RADIUS協(xié)議采用UDP報文來承載數(shù)據(jù),通過定時器管理機制、重傳機制、備用服務(wù)器機制,確保RADIUS 服務(wù)器和客戶端之間交互消息正確收發(fā)。
Part 2 - 實驗配置
2.1 實驗拓撲
【圖2-1】
2.2 實驗需求
- IP的地址,如圖2-1所示;
- PC機使用Telnet對路由器進行遠程登入;
- NAS對登入行為進行驗證,驗證方式采用AAA,并使用RADIUS作為AAA協(xié)議;
2.3 實驗設(shè)備
- 華為AR2220路由器,通過eNSP模擬;
- PC機,使用物理主機;
- 思科ACS 5.8(ACS的安裝本文不涉及,如果不清楚的小伙伴可以留言回復(fù))
2.3 實驗配置步驟
Step 1 - 基礎(chǔ)IP配置(略)
Step 2 - 配置AAA服務(wù)器
- 通過Web頁面登入AAA服務(wù)器(思科ACS服務(wù)器)
- 在AAA服務(wù)器上添加AAA的客戶端
在右部導(dǎo)航欄,Network Device Groups --> Network Devices and AAA Clients
在頁面的左下角點擊Create
配置AAA客戶端
- Name:客戶端的名字,可以隨便填寫;
- IP:客戶端的IP地址,保證IP可達;
- AAA協(xié)議選擇,本文選擇RADIUS,并保證密鑰和客戶端上的密鑰一致
配置完成后,點擊提交(submit)
- 在ACS上創(chuàng)建用戶賬戶
Step 3 - 配置AAA客戶端
- 創(chuàng)建AAA服務(wù)器的模板,
[Huawei]radius-server template Helperaddress
[Huawei-radius-Helperaddress]radius-server authentication 192.168.193.201 1812
[Huawei-radius-Helperaddress]radius-server shared-key helperaddress
[Huawei-radius-Helperaddress]undo radius-server user-name domain-included
- 配置AAA協(xié)議使用RADIUS,并在AAA配置模式下調(diào)用上一步創(chuàng)建的模板
[Huawei]aaa
[Huawei-aaa-authen-Helperaddress]authentication-mode radius
[Huawei-aaa]authentication-scheme Helperaddress
- 配置AAA域
華為的設(shè)備是基于域來對用戶進行管理,每個域都可以配置不同的認證、授權(quán)和授權(quán)的模板。每個用戶都屬于某一個域。用戶屬于哪個域是由用戶名中的域名分隔符@后的字符串決定。例如,如果用戶名是user@huawei,則用戶屬于huawei域。如果用戶名后不帶有@,則用戶屬于系統(tǒng)缺省域default。
ARG3系列路由設(shè)備支持兩種缺省域:
- default域為普通用戶的缺省域。
- default_admin域為管理用戶的缺省域。
用戶可以修改但不能刪除這兩個缺省域。默認情況下,設(shè)備最多支持32個域,包括兩個缺省域。
進入default-admin域綁定認證模板和radius-server模板(這個default-admin域是專門用來管理用的,所以telnet,ssh等登陸設(shè)備時必須使用這個默認的域,自己定義的不行)
[Huawei]aaa
[Huawei-aaa]domain default_admin
[Huawei-aaa-domain-default_admin]authentication-scheme Helperaddress
[Huawei-aaa-domain-default_admin]radius-server Helperaddress
- 進入VTY配置模式,將VTY驗證方式配置成AAA
[Huawei]user-interface vty 0 4
[Huawei-ui-vty0-4]authentication-mode aaa
Step 4 - 在PC機上進行測試