802.1x(dot1x)協議詳解
來源 https://zhuanlan.zhihu.com/p/151693854
802.1x協議是基於Client/Server的訪問控制和認證協議。
它可以限制未經授權的用戶/設備通過接入端口(access port)訪問LAN/WLAN。在獲得交換機或LAN提供的各種業務之前,802.1x對連接到交換機端口上的用戶/設備進行認證。在認證通過之前,802.1x只允許EAPOL(基於局域網的擴展認證協議)數據通過設備連接的交換機端口;認證通過以后,正常的數據可以順利地通過以太網端口。
客戶端 設備端 認證服務器需要滿足的要求
客戶端:局域網用戶終端設備,但必須是支持EAPOL(Extensible Authentication Protocol over LAN,局域網可擴展認證協議)的設備(如PC機),可通過啟動客戶端設備上安裝的802.1x客戶端軟件發起802.1x認證。
設備端:支持802.1x協議的網絡設備(如交換機),對所連接的客戶端進行認證。它為客戶端提供接入局域網的端口,可以是物理端口,也可以是邏輯端口(如Eth-Trunk口)。
認證服務器:為設備端802.1x協議提供認證服務的設備,是真正進行認證的設備,實現對用戶進行認證、授權和計費,通常為RADIUS服務器。
802.1X認證的觸發方式
802.1x的認證過程可以由客戶端主動發起,也可以由設備端主動發起。在“客戶端主動觸發方式”中,由客戶端主動向設備端發送EAPOL-Start(EAPOL開始)報文來觸發認證;而“設備端主動觸發方式”中用於支持不能主動發送EAPOL-Start報文的客戶端,例如Windows XP自帶的802.1x客戶端。
設備端主動觸發方式”中又有兩種以下具體的觸發方式“
DHCP報文觸發:設備在收到用戶的DHCP請求報文后主動觸發對用戶的802.1x認證,僅適用於客戶端采用DHCP方式自動分配IP地址的情形。因為DHCP請求報文是以廣播方式發送的,所以在同一網段中的設備都可以收到,故設備端不一定就是擔當DHCP服務器的設備。
源MAC地址未知報文觸發:當設備收到源MAC地址未知的報文時主動觸發對用戶的802.1x認證。若設備端在設置的時長內沒有收到客戶端的響應,則重發該報文。
802.1x的認證方式
無論是哪種觸發方式,802.1x認證系統都是使用EAP協議來實現客戶端、設備端和認證服務器之間認證信息的交換。在客戶端與設備端之間使用的是基於以太局域網的EAPOL格式封裝EAP報文,然后承載於以太網數據幀中進行交互;而設備端與RADIUS服務器之間的EAP報文可以使用以下兩種方式進行交互:
EAP中繼:來自客戶端的EAP報文到達設備端后,直接使用EAPOR(EAP over RADIUS)格式封裝在RADIUS報文中,再發送給RADIUS服務器,則RADIUS服務器來從封裝的EAP報文中獲取客戶端認證信息,然后再對客戶端進行認證。
這種認證方式的優點是設備端的工作很簡單,不需要對來自客戶端的EAP報文進行任何處理,只需要用EAPOR對EAP報文進行封裝即可,根本不管客戶端的認證信息。同時在這種認證方式中,設備端與RADIUS服務器之間可支持多種EAP認證方法,例如MD5-Challenge、EAP-TLS、PEAP等,但要求服務器端也支持相應的認證方法。
EAP終結:來自客戶端的EAP報文在設備端進行終結,然后由設備端將從EAP報文中提取的客戶端認證信息封裝在標准的RADIUS報文(不再是EAPOR格式)中,與RADIUS服務器之間采用PAP(Password Authentication Protocol,密碼驗證協議)或CHAP(Challenge Handshake Authentication Protocal,質詢握手驗證協議)方式對客戶端進行認證(當然在RAIUDS服務器端必須配置合法用戶的用戶名和密碼信息)。
這種認證方式的優點是現有的RADIUS服務器基本均可支持PAP和CHAP認證,無需升級服務器,但設備端的工作比較繁重,因為在這種認證方式中,設備端不僅要從來自客戶端的EAP報文中提取客戶端認證信息,還要通過標准的RAIUDS協議對這些信息進行封裝,且不能支持除MD5-Challenge之外的其它EAP認證方法。
802.1x認證原理
對於EAP中繼方式,802.1X認證流程如下圖所示:
在第5步中,如果采用的是EAP-MD5認證,則處理方式方式如下:
認證服務器收到接入設備轉發的用戶名信息后,按照如下方式對其密碼進行驗證。
- 認證服務器將用戶名信息與數據庫中的用戶名列表進行對比,找到該用戶名對應的密碼信息。
- 認證服務器用隨機生成的一個MD5 Challenge對密碼進行加密處理,並將此MD5 Challenge通過接入設備發送給客戶端。
- 客戶端收到由接入設備轉發的MD5 Challenge后,用該Challenge對密碼部分進行加密處理,之后將加密后的密碼通過接入設備發送到認證服務器。
- 認證服務器將收到的已加密的密碼信息和本地經過加密運算后的密碼信息進行對比。如果相同,則認為該用戶為合法用戶;如果不同,則認為該用戶為非法用戶。
EAP終結方式與EAP中繼方式的認證流程相比,不同之處在於步驟4和5。對於EAP終結方式,當接入設備將客戶端發送的用戶名信息發送給認證服務器時,會隨機生成一個MD5 Challenge並發送給客戶端(MD5 Challenge由接入設備生成而非認證服務器生成)。之后接入設備會把用戶名、MD5 Challenge和客戶端加密后的密碼信息一起送給認證服務器,進行相關的認證處理。
在EAP中繼認證的過程中,設備端起一個中繼代理的角色,用於通過EAPOR封裝和解封裝的過程轉發客戶端和認證服務器之間的交互報文。整個認證過程是先進行用戶名認證,然后再進行對應的密碼認證,具體如下
(1)當用戶訪問網絡時自動打開802.1x客戶端程序,根據提示輸入已經在RADIUS服務器中創建的用戶名和密碼,發起連接請求。因為端口最初的狀態是未授權狀態,所以此時端口除了IEEE 802.1x協議包外不能接收和發送任何包。此時,客戶端程序將向設備端發出認證請求幀(EAPOL-Start),啟動認證過程。
(2)設備端在收到客戶端的認證請求幀后,將發出一個Identity(標識)類型的EAP請求幀(EAP-Request/Identity),要求用戶的客戶端程序發送上一步用戶所輸入的用戶名。
(3)客戶端程序在收到設備端的Identity請求幀后,將用戶名信息通過Identity類型的EAP響應幀(EAP-Response/Identity)發送給設備端,響應設備端發出的請求。
(4)設備端將客戶端發送的Identity響應幀中的EAP報文原封不動地使用EAPOR格式封裝在RADIUS報文( RADIUS Access-Request)中,發送給認證服務器進行處理。
(5)RADIUS服務器收到設備端發來的RADIUS報文后從中提取用戶名信息后,將該信息與數據庫中的用戶名列表中對比,找到該用戶名對應的密碼信息,並用隨機生成的一個MD5 Challenge消息對密碼進行加密處理,然后將此MD5 Challenge消息同樣通過EAPOR格式封裝以RADIUS Access-Challenge報文發送給設備端。
(6)設備端在收到來自RADIUS服務器的EAPOR格式的Access-Challenge報文后,通過解封裝,將其中的MD5 Challenge消息轉發給客戶端。
(7)客戶端在收到由設備端傳來的MD5 Challenge消息后,用該Challenge消息對密碼部分進行加密處理,然后生成EAP-Response/MD5 Challenge報文,並發送給設備端。
(8)設備端又將此EAP-Response/MD5 Challenge報文以EAPOR格式封裝在RADIUS報文( RADIUS Access-Request)中發送給RADIUS服務器。
(9)RADIUS服務器將收到的已加密的密碼信息后,與第(5)步在本地經過加密運算后的密碼信息進行對比,如果相同則認為為合法用戶,並向設備端發送認證通過報文(RADIUS Access-Accept)。
(10)設備收到RADIUS Access-Accept報文后,經過EAPOR解封裝再以EAP-Success報文向客戶端發送,並將端口改為授權狀態,允許用戶通過端口訪問網絡。
(11)用戶在線期間設備端會通過向客戶端定期發送握手報文,對用戶的在線情況進行監測。
(12)客戶端收到握手報文后向設備發送應答報文,表示用戶仍然在線。缺省情況下,若設備端發送的兩次握手請求報文都未得到客戶端應答,設備端就會讓用戶下線,防止用戶因為異常原因下線而設備無法感知。
(13)客戶端可以發送EAPOL-Logoff幀給設備端,主動要求下線。
(14)在設備端收到客戶端發來的EAPOL-Logoff幀后,把端口狀態從授權狀態改變成未授權狀態,並向客戶端發送EAP-Failure報文,確認對應客戶端下線。
2. EAP終結認證原理
EAP終結方式與EAP中繼方式的認證流程相比,主要不同在於步驟(4)中用來對用戶密碼信息進行加密處理的MD5 challenge是由設備端生成(而不是由RADIUS服務器生成),之后設備端會把用戶名、MD5 challenge和客戶端加密后的密碼信息一起送給RADIUS服務器,進行相關的認證處理。
3. MAC旁路認證
在802.1x認證過程中,設備端會首先觸發用戶采用802.1x認證方式,但若用戶長時間內沒有進行802.1x認證,則以用戶的MAC地址作為用戶名和密碼上送認證服務器進行認證。MAC旁路認證可使802.1x認證系統中無法安裝和使用802.1x客戶端軟件的終端,例如打印機等,以自身MAC地址作為用戶名和密碼進行認證。
和802.1X配合使用的特性
1. VLAN下發
802.1X用戶在服務器上通過認證時,服務器會把授權信息傳送給設備端。如果服務器上配置了下發VLAN功能,則授權信息中含有授權下發的VLAN信息,設備根據用戶認證上線的端口鏈路類型,按以下三種情況將端口加入下發VLAN中。
- 端口的鏈路類型為Access,當前Access端口離開用戶配置的VLAN並加入授權下發的VLAN中。
- 端口的鏈路類型為Trunk,設備允許授權下發的VLAN通過當前Trunk端口,並且端口的缺省VLAN ID為下發VLAN的VLAN ID。
- 端口的鏈路類型為Hybrid,設備允許授權下發的VLAN以不攜帶Tag的方式通過當前Hybrid端口,並且端口的缺省VLAN ID為下發VLAN的VLAN ID。需要注意的是,若當前Hybrid端口上配置了基於MAC的VLAN,則設備將根據認證服務器下發的授權VLAN動態地創建基於用戶MAC的VLAN,而端口的缺省VLAN ID並不改變。
授權下發的VLAN並不改變端口的配置,也不影響端口的配置。但是,授權下發的VLAN的優先級高於用戶配置的VLAN,即通過認證后起作用的VLAN是授權下發的VLAN,用戶配置的VLAN在用戶下線后生效。
2. Guest VLAN
Guest VLAN功能允許用戶在未認證的情況下,可以訪問某一特定VLAN中的資源,比如獲取客戶端軟件,升級客戶端或執行其他一些用戶升級程序。這個VLAN稱之為Guest VLAN。
根據端口的接入控制方式不同,可以將Guest VLAN划分基於端口的Guest VLAN和基於MAC的Guest VLAN。
(1) PGV(Port-based Guest VLAN)
在接入控制方式為portbased的端口上配置的Guest VLAN稱為PGV。若在一定的時間內(默認90秒),配置了PGV的端口上無客戶端進行認證,則該端口將被加入Guest VLAN,所有在該端口接入的用戶將被授權訪問Guest VLAN里的資源。端口加入Guest VLAN的情況與加入授權下發VLAN相同,與端口鏈路類型有關。
當端口上處於Guest VLAN中的用戶發起認證且失敗時:如果端口配置了Auth-Fail VLAN,則該端口會被加入Auth-Fail VLAN;如果端口未配置Auth-Fail VLAN,則該端口仍然處於Guest VLAN內。關於Auth-Fail VLAN的具體介紹請參見“3. Auth-Fail VLAN”。
當端口上處於Guest VLAN中的用戶發起認證且成功時,端口會離開Guest VLAN,之后端口加入VLAN情況與認證服務器是否下發VLAN有關,具體如下:
- 若認證服務器下發VLAN,則端口加入下發的VLAN中。用戶下線后,端口離開下發的VLAN回到初始VLAN中,該初始VLAN為端口加入Guest VLAN之前所在的VLAN。
- 若認證服務器未下發VLAN,則端口回到初始VLAN中。用戶下線后,端口仍在該初始VLAN中。
(2)MGV(MAC-based Guest VLAN)
在接入控制方式為macbased的端口上配置的Guest VLAN稱為MGV。配置了MGV的端口上未認證的用戶被授權訪問Guest VLAN里的資源。
當端口上處於Guest VLAN中的用戶發起認證且失敗時:如果端口配置了Auth-Fail VLAN,則認證失敗的用戶將被加入Auth-Fail VLAN;如果端口未配置Auth-Fail VLAN,則該用戶將仍然處於Guest VLAN內。
當端口上處於Guest VLAN中的用戶發起認證且成功時,設備會根據認證服務器是否下發VLAN決定將該用戶加入到下發的VLAN中,或回到加入Guest VLAN之前端口所在的初始VLAN。
3. Auth-Fail VLAN
Auth-Fail VLAN功能允許用戶在認證失敗的情況下可以訪問某一特定VLAN中的資源,這個VLAN稱之為Auth-Fail VLAN。需要注意的是,這里的認證失敗是認證服務器因某種原因明確拒絕用戶認證通過,比如用戶密碼錯誤,而不是認證超時或網絡連接等原因造成的認證失敗。
與Guest VLAN類似,根據端口的接入控制方式不同,可以將Auth-Fail VLAN划分為基於端口的Auth-Fail VLAN和基於MAC的Auth-Fail VLAN。
(1)PAFV(Port-based Auth-Fail VLAN)
在接入控制方式為portbased的端口上配置的Auth-Fail VLAN稱為PAFV。在配置了PAFV的端口上,若有用戶認證失敗,則該端口會被加入到Auth-Fail VLAN,所有在該端口接入的用戶將被授權訪問Auth-Fail VLAN里的資源。端口加入Auth-Fail VLAN的情況與加入授權下發VLAN相同,與端口鏈路類型有關。
當端口上處於Auth-Fail VLAN中的用戶再次發起認證時:如果認證失敗,則該端口將會仍然處於Auth-Fail VLAN內;如果認證成功,則該端口會離開Auth-Fail VLAN,之后端口加入VLAN情況與認證服務器是否下發VLAN有關,具體如下:
- 若認證服務器下發VLAN,則端口加入下發的VLAN中。用戶下線后,端口會離開下發的VLAN回到初始VLAN中,該初始VLAN為端口加入任何授權VLAN之前所在的VLAN。
- 若認證服務器未下發VLAN,則端口回到初始VLAN中。用戶下線后,端口仍在該初始VLAN中。
- MAFV(MAC-based Auth-Fail VLAN)
在接入控制方式為macbased的端口上配置的Auth-Fail VLAN稱為MAFV。在配置了MAFV的端口上,認證失敗的用戶將被授權訪問Auth-Fail VLAN里的資源。
當Auth-Fail VLAN中的用戶再次發起認證時,如果認證成功,則設備會根據認證服務器是否下發VLAN決定將該用戶加入到下發的VLAN中,或回到加入Auth-Fail VLAN之前端口所在的初始VLAN。
4. ACL下發
ACL(Access Control List,訪問控制列表)提供了控制用戶訪問網絡資源和限制用戶訪問權限的功能。當用戶上線時,如果RADIUS服務器上配置了授權ACL,則設備會根據服務器下發的授權ACL對用戶所在端口的數據流進行控制;在服務器上配置授權ACL之前,需要在設備上配置相應的規則。管理員可以通過改變服務器的授權ACL設置或設備上對應的ACL規則來改變用戶的訪問權限。
5. 指定端口的強制認證域
指定端口的強制認證域(mandatory domain)為802.1X接入提供了一種安全控制策略。所有從該端口接入的802.1X用戶將被強制使用該認證域來進行認證、授權和計費,可以防止用戶通過惡意假冒其它域賬號來接入網絡。
另外,對於采用證書的EAP中繼方式的802.1X認證來說,接入用戶的客戶端證書決定了用戶的域名。因此,即使所有端口上客戶端的用戶證書隸屬於同一證書頒發機構,即輸入的用戶域名相同,管理員也可以通過配置強制認證域對不同端口指定不同的認證域,從而增加了管理員部署802.1X接入策略的靈活性。
802.1X支持EAD快速部署配置
1. 概述
EAD(Endpoint Admission Defense,端點准入防御)作為一個網絡端點接入控制方案,它通過安全客戶端、安全策略服務器、接入設備以及第三方服務器的聯動,加強了對用戶的集中管理,提升了網絡的整體防御能力。但是在實際的應用過程中EAD客戶端的部署工作量很大,例如,需要網絡管理員手動為每一個EAD客戶端下載、升級客戶端軟件,這在EAD客戶端數目較多的情況下給管理員帶來了操作上的不便。
802.1X認證支持的EAD快速部署就可以解決以上問題,可為所有接入網絡的終端用戶提供自動下載並安裝EAD客戶端的方便途徑。
2. 實現機制
802.1X支持的EAD快速部署是通過以下兩個功能的配合工作實現的:
(1)用戶受限訪問
802.1X認證成功之前(包括認證失敗),終端用戶只能訪問一個特定的IP地址段。該IP地址段中可以配置一個或多個特定服務器,用於提供EAD客戶端的下載升級或者動態地址分配等服務。
(2)用戶HTTP訪問URL重定向
終端用戶在802.1X認證成功之前(包括認證失敗),如果使用瀏覽器訪問網絡,設備會將用戶訪問的URL重定向到已配置的URL(例如,重定向到EAD客戶端下載界面),這樣只要用戶打開瀏覽器,就必須進入管理員預設的界面。提供重定向URL的服務器必須位於用戶受限訪問的特定網段內。
============= End