網絡安全之接入控制
身份鑒別
定義:驗證主題真實身份與其所聲稱的身份是否符合的過程,主體可以是用戶、進程、主機。同時也可實現防重放,防假冒。
分類:單向鑒別、雙向鑒別、三向鑒別。
主題身份標識信息:密鑰、用戶名和口令、證書和私鑰
Internet接入控制過程
一些基本模型
終端訪問網絡資源
在一個簡化的單一線路網絡中,終端訪問網絡資源的過程且必需完成以下操作過程,如圖所示:
-
建立終端A與路由器的傳輸路徑。這條線路可能是公共電話網,則需要建立點對點信道;也可能是以太網網絡,則需要建立連接到該以太網的信道路徑
-
終端A完成網絡信息配置過程**。**終端A需要配置IP地址、子網掩碼、默認網關地址等
-
路由器路由表建立對應路由項。
終端接入Internet
但訪問Internet網絡上的資源,不是我們接一根線到路由器上就完成得了的,對Internet上的資源,終端接入Internet的過程如圖所示:
也就是說在終端A接入Internet前,必須完成用戶注冊,只能由注冊用戶開始終端A接入internet程,接入控制設備在確定啟動終端A接入Internet的先決條件是由注冊用戶情況下,才允許終端A完成接入Internet過程和在接入控制設備中建立路由項,這一過程需要完成身份認證。
這里需要注意接入控制設備和路由器的區別:
-
接入控制設備不僅具有普通路由器的功能還包含其他功能
-
接入控制設備可以鑒別終端A用戶身份
-
接入控制設備為終端A動態分配IP地址(有點像DHCP的功能,不知道是不是需要在接入控制設備中配置DHCP協議)
終端接入Internet過程
-
建立終端A到接入控制設備之間的傳輸路徑。
-
接入控制設備完成身份鑒別過程。確定終端A是注冊用戶。
-
動態配置終端A的網絡信息。
-
在接入控制設備路由表中動態配置相應路由項。
PPP與接入控制
簡介
PPP(Point to Point Protocol)協議,是我們熟知的用於傳遞點對點信道數據包的數據鏈路層協議。但其實PPP協議也可作為接入控制協議。
為什么可以用PPP作為接入控制協議?
在早期用戶使用的寬帶接入技術中,由於公共電話線路鋪設廣泛而其高頻分段的利用的空白為改造成數據傳輸路線創造了條件,ADSL(非對稱數字用戶線技術)占到了大多數。也就是撥號上網,使用的是基於PPPoE協議的ADSL。而接入控制設備在與終端A交換信息(A的用戶身份標識、接入控制設備為終端A配置的網絡信息)的過程中,由於終端A與接入控制設備之間的傳輸路徑是點對點語音信道,因此需要將這種信息風專場適合點對點傳輸的幀格式,PPP幀就是適合點對點語音信道傳輸的PPP幀。
PPP幀中與接入控制相關的協議
口令鑒別協議PAP(Password Authentication Protocol)
其在PPP幀中協議屬性值為0xC023
。終端A以明文方式向接入控制設備發送接入Internet需要的用戶名和口令。接入控制設備在在收到信息后,檢索注冊用戶信息庫,如果用戶名存在且密碼匹配,則准入終端A到Internet。
挑戰握手鑒別協議CHAP(Challenge Handshake Authentication Protocol)
在PPP幀首部的協議屬性值為0xC223
。接入控制設備會先向終端A發送一個隨機數C,終端A會將接收到的隨機數和密碼串接,並經過MD5摘要算法運算后,再加上用戶名發送到接入控制設備。接入控制設備收到該消息后,在注冊用戶信息庫檢索到用戶的密碼和剛剛發送的隨機數選出並經過MD5摘要算法運算后與接收到的消息進行比對。如果相同則准入終端A到Internet。前提:終端A和控制設備之間有共享密鑰K。
IP控制協議IPCP(Internet Protocol Control protocol)
其作用是為終端A動態分配IP等網絡信息。接入控制設備為終端A分配一個全球IP地址,並且在路由表中添加一項動態路由,該項路由是將終端A的IP地址和語音信道綁定在一起的。
PPP接入控制過程
如圖所示
注:LCP也就是Link Control Protocol鏈路控制協議,用來建立、配置和測試數據鏈路連接的協議。
EAP
簡介
EAP全稱為Extensible Authentication Protocol,中文名稱拓展鑒別協議。在身份鑒別過程中,需要在鏈路上傳送鑒別信息,但在不同的鏈路上所需要的數據鏈路層幀格式不同,比如在點對點信道上使用PPP幀,在以太網上使用MAC幀。由於網絡環境日益復雜,在終端到接入控制設備之間可能不單單只有一種通信信道的情況下,為了避免鑒別協議的數據幀與通信信道兩兩綁定的關系,EAP應運而生。
EAP就是將多種鑒別協議對應的PDU統一封裝成拓展鑒別協議EAP報文,然后將EAP報文封裝成不同類型傳輸網絡對應的鏈路層幀格式。
EAP包含鑒別數據PDU,鏈路層幀格式包含EAP。
這樣,鑒別協議也就不再具有必須與數據鏈路層協議綁定的特殊性,而可以隨用戶終端或者接入控制設備來進行指定。
EAP報文格式
-
編碼:1~4,分別對應請求報文、響應報文、成功報文和失敗報文
-
標識符:一組請求/報文過程中,其請求報文和響應報文的標識必需相同,在相鄰兩個請求報文中,也必須采用不同的標識符
-
長度:EAP報文總的長度
-
類型:1-身份報文;4-CHAP鑒別協議;5-OTP鑒別協議;13-TLS協議
EAP over PPP
簡介
PPP協議是點對點網絡下的對應的鏈路層協議,自然也是點對點網絡環境下的EAP載體協議,用於實現用戶和鑒別者之間的EAP報文傳輸。這也就是所謂的EAP over PPP。
PPP封裝EAP的報文如圖所示
也就是在PPP報文的協議字段位置處的值為0xC227
鑒別過程
CHAP鑒別模式下的EAP over PPP報文鑒別過程如圖所示
在建立PPP鏈路的過程中,在鑒別身份之前,會約定采用EAP作為鑒別協議。在服務器向終端A發出的EAP請求報文中其類型值就是身份。注意在終端A會送EAP響應時,會把EAP字段的標識符也納入到MD5的報文摘要計算之中,用以防止假冒攻擊。
EAP over LAN
簡介
假如終端用戶與接入控制設備之間的傳輸信道不再是點對點路線,而是處於某一個以太網中,這個時候所采用的鏈路層幀格式多半是MAC幀。
基於局域網的拓展認證協議(EAP over PPP)給出了將EAP報文封裝成LAN對應的幀格式(大都是V2版本的MAC幀)的過程。
其報文格式如下所示
在MAC幀的頭部字段值中類型值為0x888E
(0x0800時為IP報文)。
與單純的MAC幀可以說相同也可以說不同,將版本、報文類型、報文體長度和報文體都當作MAC幀的數據時就跟v2 版本的MAC幀是完全一致的,但是這個數據部分又相比單單的EAP報文多出了幾個首部。其中一個首部字段值分類及其意思如上圖所示。所以我們可以特地稱其為EAPOL報文。
802.1X
802.1X就是一種實現用戶身份鑒別,並開通連接進以太網的用戶終端接入權限端口的接入控制協議。
目前支持802.1X的局域網主要是以太網和無線局域網。
以下是802.1X的操作模型
與后文的RAIUS協議配合使用,且在鑒別者中的端口分為受控端口和非受控端口。受控端口用於對鑒別者提供正常服務,在完成身份鑒別過程后才會打開;非受控端口一直允許接收EAP報文,直接進行鑒別操作或對EAP報文進行轉發。也就是說,在完成用戶身份鑒別之前,該端口只能輸入輸出EAP報文和廣播幀,只有在用戶身份鑒別成功后,才可使用正常服務。
鑒別過程
鑒別過程如圖所示
相比於用戶A通過EAP over PPP完成鑒別過程,802.1X是允許雙方即鑒別者和用戶均可發起鑒別過程的,上圖是由用戶發起鑒別的過程。
以太網接入控制過程
那么我們在上一模塊僅僅講了PPP信道中的接入控制過程,並未提及到以太網是如何進行從以太網接入Internet的過程,有了以上知識作為鋪墊,可以簡單敘述一下。
值得一提的是現在的以太網交換機實現的802.1X都是基於MAC地址的,而不是基於端口。因為在一個局域網中,一個端口可能涉及到多台主機,所以禁用端口是不現實的。只有當用戶完成用戶身份鑒別后,交換機才會將該終端的MAC地址列入接收到EAP報文的端口對應的訪問訪問控制列表,並將訪問控制設置為允許訪問。
RADIUS
簡介
其實我們可以思考一下在上面所示的接入控制協議中,其鑒別服務器都停留在局域網層面,然而實際上,如果將接入控制設備設置在每一個以太網下面,其成本非常高難以維護,而且是非常不安全的,因為每一個接入控制設備都需要存儲所有接入用戶的身份標識信息。所以為了實現統一鑒別,我們需要將鑒別服務器放在互聯網中的任何位置,至少這個位置是易於維護,且安全的。
遠程鑒別撥入用戶服務RADIUS(Remote Authentication Dial In User Service)就是這樣一種可以實現接入控制設備等鑒別者與服務器之間的雙向身份鑒別和身份標識信息鑒別者與鑒別服務器之間安全傳輸的應用層協議。設置鑒別服務器在互聯網的某一個地方,鑒別服務器統一管理用戶,完成對用戶的身份鑒別、授權和計費操作。設置鑒別者在以太網層面附近。用戶和鑒別者之間仍然可以通過鏈路層傳輸路徑完成EAP報文傳輸過程,使用的與傳輸網絡相對應的鏈路層協議,如ADSL的ppp鏈路,或傳送MAC幀。但鑒別者和鑒別服務器之間的傳輸路徑往往是由路由器互連的多段鏈路層傳輸路徑所組成的,因此,必須用IP以上的協議作為載體協議。
其端口包括1812的認證授權端口和1813的計費端口
RADIUS消息格式
封裝格式
因為RADIUS是應用層協議,而且需要在形態各異的網絡上進行傳輸,肯定是需要IP以上的協議的,如圖所示,是RADIUS消息的封裝格式
RADIUS消息格式
RADIUS消息格式如上圖所示
-
編碼code字段:表示當前RADIUS消息類型,目前一共有16種報文類型,分為3大類別:認證報文、計費報文和授權報文,這里僅對認證報文作消息介紹。編碼值為1時,表示請求接入報文,用於傳輸用戶的身份標識信息如用戶名和口令等;編碼值為2時,表示允許接入報文,完成對用戶的身份鑒別;編碼為3時,表示拒絕接入報文,未成功完成用戶鑒別,拒絕接入網絡;編碼為11時,表示挑戰接入報文,需要用戶提供更多的身份標識信息或者需要用戶根據約定的鑒別機制對挑戰接入消息中包含的數據進行運算
-
標識符Identifier字段:用於匹配請求接入消息和對應的響應消息。
-
長度Length字段:給出RADIUS消息總長
-
鑒別信息Authenticator字段:用於鑒別發送響應消息的鑒別服務器。首先由網絡接入服務器NAS(Network Access Server)發送的RADIUS消息中的鑒別信息是一個16字節的隨機數,用於防止防重放攻擊,在有效期內,不允許出現相同的隨機數。而鑒別服務器所發送的響應消息中,鑒別消息會經過如下計算所得
響應消息中的鑒別消息=MD5(響應消息||對應請求接入消息的鑒別消息(s隨機數)||共享密鑰K)
共享密鑰K可鑒別鑒別服務器的身份,防止黑客假冒
-
屬性Attribute字段:屬性字段用於給出用戶身份標識信息和NAS標識信息,如用戶名、口令、NAS標識符、NAS IP地址等。根據NAS標識符確定共享密鑰K。屬性部分本來是支持各種鑒別協議的如PAP或CHAP,但是新發展的鑒別協議要同時支持EAP和RADIUS略顯麻煩。所以為了避免重復勞動,EAP不斷增加和新發展的鑒別機制相匹配的數據類型,但在RADIUS中只需要設置用於封裝EAP報文的EAP屬性。對於敏感屬性值,如用戶名和口令等,需要進行加密運算,使用共享密鑰K進行MD5運算。
RADIUS完整應用
一次鑒別身份,接入控制如圖所示