信息安全基礎知識筆記07 AAA認證
當前網絡環境中,網絡安全的威脅更多的來源於應用層,這也使得企業對於網絡訪問控制提出更高的要求。如何精確的識別出用戶,保證用戶的合法應用正常進行,阻斷用戶有安全隱患的應用等問題,已成為現階段企業對網絡安全關注的焦點。但IP不等於用戶、端口不等於應用,傳統防火牆基於IP/端口的五元組訪問控制策略已不能有效的應對現階段網絡環境的巨大變化。
本筆記主要介紹AAA認證(認證、授權、計費),RADIUS協議概述和應用場景,HWTACACS協議概述和應用場景,LDAP基本概念和認證流程。
AAA基本概念
① Authentication認證
當用戶希望訪問Internet資源。首先使用Authentication認證技術,用戶輸入用戶名密碼。
② Authorization 授權
當通過認證后,通過Authorization 授權,授權不同用戶訪問的資源,可以訪問百度,或者Google。
③ Accounting 計費
在客戶訪問期間,通過Accounting 計費,記錄所做的操作和時長。
(1)Authentication認證
認證是指通過一定的手段,完成對用戶身份的確認。
I、你所知道的信息
II、你所擁有的東西
III、獨一無二的身體特征
認證的方式包括:
我知道:用戶所知道的信息(如:密碼、個人識別號(PIN)等)
我擁有:用戶所擁有的信息(如:令牌卡、智能卡或銀行卡)
我具有:用戶所具有的生物特征(如:指紋、聲音、視網膜、DNA)
(2)Authorization 授權
授權用戶可以使用哪些業務,可以使用那些命令。
I、用戶能訪問的資源
II、用戶能使用的命令
授權用戶可以使用哪些業務。如公共業務,還是敏感業務。
授權用戶管理設備時,可以使用那些命令。如可以使用Display命令,不能使用delete,copy命令。
(3)Accounting 計費
計費主要的含義有三個:
I、用戶用多長時間
II、用戶花了多少錢
III、用戶做了哪些操作
(4)本地認證和服務器認證
① 不認證:
對用戶非常信任,不對其進行合法檢查,一般情況下不采用這種方式。
② 本地認證:
將用戶信息(包括本地用戶的用戶名、密碼和各種屬性)配置在(本地)網絡接入服務器上。
本地認證的優點是速度快,可以為運營降低成本;缺點是存儲信息量受設備硬件條件限制。
③ 服務器認證:
將用戶信息(包括本地用戶的用戶名、密碼和各種屬性)配置在(第三方)認證服務器上。
AAA支持通過RADIUS(Remote Authentication Dial In User Service)協議或HWTACACS (HuaWei Terminal Access Controller Access Control System)協議進行遠端認證。
下面會分別對這兩個協議做詳細的介紹。
RADIUS協議概述
AAA可以用多種協議來實現,最常用的是RADIUS協議。
① 網絡接入服務器NAS(Network Access Server)系統通過使用RADIUS協議,負責把用戶的認證和計費信息傳遞給RADIUS服務器。
② RADIUS服務器負責接收用戶的認證和計費信息,完成認證,並把結果返回給NAS。
③ RADIUS協議規定了NAS與RADIUS服務器之間傳遞用戶信息和計費信息以及認證和計費結果的方式。
RADIUS使用UDP(User Datagram Protocol)作為傳輸協議,具有良好的實時性;同時也支持重傳機制和備用服務器機制,從而具有較好的可靠性。
(1)RADIUS客戶端與服務器間的消息流程
Step 1:用戶登錄USG或接入服務器等網絡設備時,會將用戶名和密碼發送給該網絡接入服務器;
Step 2:該網絡設備中的網絡接入服務器的RADIUS客戶端接收用戶名和密碼,並向RADIUS服務器發送認證請求;
Step 3:RADIUS服務器接收到合法的請求后,完成認證,並把所需的用戶授權信息返回給RADIUS客戶端;對於非法的請求,RADIUS服務器返回認證失敗的信息給客戶端。
(2)RADIUS報文結構
RADIUS的消息結構如圖所示:
① Code(8 bits=1 Byte):消息類型,用來標識RADIUS報文類型。如接入請求、接入允許等。
Code = 1: Access-Request,接入請求報文
Code = 2: Access-Accept,接入成功回應報文
Code = 3: Access-Reject,接入拒絕回應報文
Code = 4: Accounting-Request,計費請求報文
Code = 5: Accounting-Response,計費回應報文
Code = 11: Access-Challenge,接入挑戰報文
Code = 12: Status-Server (experimental),服務器狀態報文(試驗)
Code = 13: Status-Client (experimental),客戶端狀態報文(試驗)
Code = 255: Reserved,保留
② Identifier(8 bits=1 Byte):用於匹配請求和回應報文。若在一個很短的時間內接收到相同的源IP地址、源UDP端口號和相同Identifier域的請求報文,RADIUS服務器就可以認為是重復的請求報文。
一般是順序遞增的數字,請求報文和響應報文中該字段必須匹配。
③ Length(16 bits=2 Bytes):所有域的總長度。包含了報文中的Code域,Identifier域,Length域,Authenticator域和屬性域的總長度。
如果收到的報文實際長度超過Length,超過部分被當做填充內容忽略掉,如果實際長度小於Length,報文被丟棄。
④ Authenticator(144 bits=16 Bytes):驗證字,用於驗證RADIUS的合法性。主要用於認證來自服務端的響應,也用於用戶密碼的加密處理中。
⑤ Attribute(變長):消息的內容主體,主要是用戶相關的各種屬性,承載認證、授權、計費以及配置等信息。采用TLV格式:
類型(Type): 占位一個字節。具體類型值對應的屬性名請參見下表。
長度(Length)域:占位一個字節,表示包括Type、Length、Value域在內的屬性的長度。
值(Value)域:占位零個或者更多字節,它包含了屬性信息的詳細描述。值域的格式和長度是由屬性的類型和長度決定的。需要指出的是,在RADIUS中沒有任何類型的屬性值是以NULL(十六進制的0x00)結束的。
(3)RADIUS報文交互流程
Step 1:用戶輸入用戶名密碼
Step 2:認證請求
Step 3:認證接受
Step 4:計費開始請求
Step 5:計費開始請求響應報文
Step 6:用戶訪問資源
Step 7:計費結束請求報文
Step 8:計費結束請求響應報文
Step 9:訪問結束
HWTACACS協議概述
HWTACACS(Huawei Terminal Access Controller Access Control System,終端訪問控制器控制系統協議)是在TACACS協議的基礎上進行了功能增強的安全協議。該協議與RADIUS協議的功能類似,采用客戶端/服務器模式實現NAS與TACACS+服務器之間的通信。
HWTACACS的典型應用是對需要登錄到設備上進行操作的終端用戶進行認證、授權、計費。設備作為HWTACACS的客戶端,將用戶名和密碼發給HWTACACS服務器進行驗證。用戶驗證通過並得到授權之后可以登錄到設備上進行操作。
(1)HWTACACS協議應用場景
(2)HWTACACS和RADIUS比較
HWTACACS協議與RADIUS協議的比較。
LDAP協議概述
LDAP(Lightweight Directory Access Protocol,輕量級目錄訪問協議)是從X.500目錄訪問協議的基礎上發展過來的,X.500是層次型的,所有對象被組織成樹形結構。X.500目錄服務實現身份認證、訪問控制。LDAP就是簡化X.500目錄的復雜度,同時適應Internet的需要。
目錄服務就是由目錄數據庫和一套訪問協議組成的系統。可以認為是一個特殊的數據庫,用來保存描述性的、基於屬性的詳細信息,支持過濾功能。而且是動態的,靈活的,易擴展的。
類似以下的信息適合儲存在目錄中:
① 企業員工信息,如姓名、郵箱、手機號碼等;
② 公司設備的物理信息,如IP地址、放置位置、廠商、購買時間等;
③ 公用證書和安全密鑰;
特點如下:
① 目錄方式組織數據;
② 對外提供一個統一的訪問點;
③ 支持數據的分布式數據存儲;
④ 優化查詢,讀取數據較快。
(1)LDAP概念
在開始介紹之前先來看幾個問題:
1. 我們日常的辦公系統是不是有多個?
2. 每個系統之間是不是都有獨立的賬號密碼?
3. 密碼多了,有時候半天想不起來哪個密碼對應哪個系統?
4. 每次新項目的開發,都需要重新開發和維護一套用戶密碼?
5. 維護多套系統的用戶是不是非常頭疼?
“LDAP統一認證服務”就是用於解決以上問題的。即各個不同的系統登錄使用同個認證服務。而存儲認證信息的是以目錄數據庫(樹狀結構)方式來進行存儲的。
在LDAP中,信息以樹狀方式組織,基本數據單元是條目,而每個條目由屬性構成,屬性由類型(Type)和一個或多個值(Value)組成。
目錄數據庫和關系數據庫不同,它有優異的讀性能,但寫性能差,並且沒有事務處理、回滾等復雜功能,不適於存儲修改頻繁的數據。所以目錄天生是用來查詢的,就好象它的名字一樣。
① 目錄信息樹DIT(Directory Information Tree)
目錄條目的集合構成目錄信息樹。樹中的每個節點是一個條目。
② 條目Entry
目錄信息樹中的一個節點,是目錄信息中最基本的單位,由一系列屬性構成。
每個條目就是一條記錄,每個條目有自己的唯一可區別的名稱(DN)。
③ 屬性Attribute
屬性描述對象的特征,一個屬性有屬性類型和一個或多個屬性值構成。
④ DC(Domain Component)
域名的部分,其格式是將完整的域名分成幾部分。
如域名為example.com變為dc=example,dc=com(一條記錄的所屬位置)
⑤ UID(User Id)
一條記錄的ID。
⑥ OU(Organization Unit)
組織單位,組織單位可以包含其他各種對象(包括其他組織單元),
⑦ CN(Common Name)
一條記錄的公共名稱。
⑧ 相對標識名RDN(Relative Distinguished Name)
相對辨別名,類似於文件系統中的相對路徑,它是與目錄樹結構無關的部分,唯一標識同一父條目的子條目。
如“uid=zheng”或“cn=admin”。
⑨ 唯一標識名DN(Distinguished Name)
絕對辨別名,一個目錄信息樹種唯一標識一個條目的名字。
如“uid=zheng,ou=oa,dc=example,dc=com”
Tips:
唯一標識名DN有三個屬性,分別是DC (Domain Component),CN (Common Name),OU (Organizational Unit)。
例如:“CN=admin, OU=guest, DC=domainname, DC=com”
在上面的代碼中 CN=admin 可能代表一個用戶名,OU=guest 代表一個組織單位。這句話的含義說明admin這個對象處在domainname.com 域的 guest 組織單位中。
(2)LDAP認證流程
認證流程描述如下:
① 用戶輸入用戶名/密碼發起登錄請求,防火牆和LDAP服務器建立TCP連接。
② 防火牆以管理員DN和密碼向LDAP服務器發送綁定請求報文用以獲得查詢權限。
③ 綁定成功后,LDAP服務器向防火牆發送綁定回應報文。
④ 防火牆使用用戶輸入的用戶名向LDAP服務器發送用戶DN查詢請求報文。
⑤ LDAP服務器根據用戶DN進行查找,如果查詢成功測發送查詢回應報文。
⑥ 防火牆使用查詢到的用戶DN和用戶輸入的密碼向LDAP服務器發送用戶DN綁定請求報文,LDAP服務器查詢用戶密碼是否正確。
⑦ 綁定成功后,LDAP服務器發送綁定回應報文。
⑧ 授權成功后,防火牆通知用戶登錄成功。
用戶認證
AAA技術為用戶認證提供手段。
用戶認證分類有:
① 本地認證
訪問者通過Portal認證頁面將標識其身份的用戶名和密碼發送給防火牆,防火牆上存儲了密碼,驗證過程在防火牆上進行,該方式稱為本地認證。
② 服務器認證
訪問者通過Portal認證頁面將標識其身份的用戶名和密碼發送給防火牆,防火牆上沒有存儲密碼,防火牆將用戶名和密碼發送至第三方認證服務器,驗證過程在認證服務器上進行,該方式稱為服務器認證。
③ 單點登錄
訪問者將標識其身份的用戶名和密碼發送給第三方認證服務器,認證通過后,第三方認證服務器將訪問者的身份信息發送給防火牆。防火牆只記錄訪問者的身份信息不參與認證過程,該方式稱為單點登錄(Single Sign-On)。
④ 短信認證
訪問者通過Portal認證頁面獲取短信驗證碼,然后輸入短信驗證碼即通過認證。防火牆通過校驗短信驗證碼認證訪問者。