天天看點

Windows Server 搭建企業無線認證(Radius認證方案)

認證協定介紹:

擴充認證協定EAP(Extensible Authentication Protocol)

是一個在無線網絡或點對點連線中普遍使用的認證架構。它被定義在RFC 3748中,并且使RFC 2284過時,後又被RFC 5247更新。EAP不僅可以用于無線區域網路,還可以用于有線區域網路,但它在無線區域網路中使用的更頻繁。WPA和WPA2标準已經正式采納了5類EAP作為正式的認證機制。

EAP是一個認證架構,不是一個特殊的認證機制。EAP提供一些公共的功能,并且允許協商所希望的認證機制。這些機制被叫做EAP方法,現在大約有 40種不同的方法。IETF的RFC中定義的方法包括:EAP-MD5, EAP-OTP, EAP-GTC, EAP-TLS, EAP-SIM,和EAP-AKA, 還包括一些廠商提供的方法和新的建議。無線網絡中常用的方法包括EAP-TLS, EAP-SIM, EAP-AKA, PEAP, LEAP,和EAP-TTLS。

IEEE 802.1x協定認證就使用了EAP認證架構,因為EAP提供了可擴充的認證方法,但是這些認證方法的安全性完全取決于具體的認證方法,比如EAP-MD5、EAP-LEAP、EAP-GTC等,而802.1x最開始是為有線接入設計的,後來被用于無線網的接入,有線接入在安全性方面考慮畢竟少,如果要竊取資訊需要實體上連接配接網絡,而無線網完全不同,無線網信号沒有實體邊界,是以要使用802.1x的話,需要對802.1x進行安全性方面的增強,也就是增強EAP認證架構的安全性,而且要進行雙向認證,那麼EAP使用了IETF的TLS(Transport Layer Security)來保證資料的安全性。

現在主流的安全認證方法:EAP-TLS,PEAP,EAP-TTLS

分别介紹這三種方法:

1. EAP-TLS:

EAP-TLS使用TLS握手協定作為認證方式,TLS有很多優點,是以EAP選用了TLS作為基本的安全認證協定,并為TTLS和PEAP建立安全隧道,TLS已經标準化,并且進過了長期應用和分析,都沒有發現明顯的缺點。

TLS認證是基于Client和Server雙方互相驗證數字證書的,是雙向驗證方法,首先Server提供自己的證書給Client,Client驗證Server證書通過後送出自己的數字證書給Server,用戶端的證書可以放到本地、放到key中等等.

TLS有一個缺點就是TLS傳送使用者名的時候是明文的,也就是說抓包能看到EAP-Identity的明文使用者名。

TLS是基于PKI證書體系的,這是TLS的安全基礎,也是TLS的缺點,PKI太龐大,太複雜了,如果企業中沒有部署PKI系統,那麼為了這個認證方法而部署PKI有些複雜,當然,如果企業已經部署了PKI,那麼使用EAP-TLS還是不錯的選擇。

2. EAP-TTLS:下同

3. EAP-PEAP:

正因為TLS需要PKI的缺點,是以設計出現了TTLS和PEAP,這兩個協定不用建立PKI系統,而在TLS隧道内部直接使用原有老的認證方法,這保證了安全性,也減小了複雜度。

把TTLS和PEAP放到一起介紹的原因是他們倆很像,兩個都是典型的兩段式認證,在第一階段建立TLS安全隧道,通過Server發送證書給Client實作Client對Server的認證(這裡TTLS和PEAP仍然使用證書,但是這裡的證書都是伺服器證書,管理起來比TLS用戶端證書要簡單那的多);當安全隧道一旦建立,第二階段就是協商認證方法,對Client進行認證;

TTLS利用TLS安全隧道交換類似Radius的AVPs(Attribute-Value-Pairs),實際上這些AVPs的封裝和Radius都十分相似,TTLS這種AVPs有很好的擴充性,是以它幾乎支援任何認證方法,這包括了所有EAP的認證方法,以及一些老的認證方法,比如PAP、CHAP、MS-CHAP、MS-CHAPv2等,TTLS的擴充性很好,通過新屬性定義新的認證方法。

PEAP之是以叫Protected EAP,就是它在建立好的TLS隧道之上支援EAP協商,并且隻能使用EAP認證方法,這裡為什麼要保護EAP,是因為EAP本身沒有安全機制,比如EAP-Identity明文顯示,EAP-Success、EAP-Failed容易仿冒等,是以EAP需要進行保護,EAP協商就在安全隧道内部來做,保證所有通信的資料安全性。其實PEAP最大的優點就是微軟支援開發,微軟在Windows系統内內建了用戶端,微軟和Cisco都支援PEAP,但是他們的實作有所差別。

三者對比:

Windows Server 搭建企業無線認證(Radius認證方案)

EPA-TLS是目前為止最安全的方式,但缺點也很明顯,很多系統用戶端并沒有內建,用戶端需要導入認證證書等等,是以當下WLAN認證方式最常用的是PEAP和EAP-TTLS這兩種。下圖是PEAP的認證粗略過程:

Windows Server 搭建企業無線認證(Radius認證方案)

認證基本流程:

1、證書擷取

證書主要用來進行終端和網絡的互相認證。 Radius伺服器首先向CA憑證頒發機構申請伺服器證書,用來代表Radius伺服器的合法性。STA向CA憑證頒發機構下載下傳CA 根證書,用來驗證Radius伺服器下發的證書是否合法(一般情況下,如果終端不需要對網絡進行認證的情況下,根證書可以不用下載下傳和安裝)。

2、無線接入

STA通過開放系統接入的方法(OPEN SYSTEM)和AP之間建立好實體連接配接。

3、認證初始化

① STA向AP裝置發送一個EAPoL-Start封包,開始802.1x接入的開始;

② AP向用戶端發送EAP-Request/Identity封包,要求用戶端将使用者資訊送上來;

③ STA回應一個EAP-Response/Identity給AP的請求,其中包括使用者的網絡辨別。使用者ID,對于EAP-mschchap v2認證方式的使用者ID是由使用者在STA手動輸入或者配置的;

④ AP以EAP Over Radius的封包格式将EAP-Response/Identity發送給認證伺服器Radius,并且帶上相關的Radius的屬性;

⑤ Radius收到用戶端發來的EAP-Response/Identity,根據配置确定使用EAP-PEAP認證,并向AP發送RADIUS-Access-Challenge封包,裡面含有Radius發送給用戶端的EAP-Request/Peap/Start的封包,表示希望開始進行EAP-PEAP的認證;

⑥ AP裝置将EAP-Request/PEAP/Start發送給認證用戶端。

4、建立TLS通道

⑦ STA收到EAP-Request/Peap/Start封包後,産生一個随機數、STA支援的加密算法清單、TLS協定版本、會話ID、以及壓縮方法(目前均為NULL),封裝在EAP-Response/Client Hello封包中發送給AP裝置;

⑧ AP以EAP Over Radius的封包格式将EAP-Response/Client Hello發送給認證伺服器RadiusServer,并且帶上相關的Radius的屬性;

⑨ Radius收到STA發來的Client Hello封包後,會從STA 的Hello封包的加密算法清單中選擇自己支援的一組加密算法+Server産生的随機數+Server 證書(包含伺服器的名稱和公鑰)+證書請求+Server_Hello_Done屬性形成一個Server Hello封包封裝在Access-Challenge封包中,發送給STA;

⑩ AP把Radius封包中的EAP域提取,封裝成EAP-request封包發送給Client。

注:由于證書比較大,一個封包是無法承載的,是以在實際流程中第10,11完成後,後面還有3個續傳的IP分片封包,目的是把Server證書發送到用戶端。

⑩① STA收到封包後,進行驗證Server的證書是否合法(使用從CA憑證頒發機構擷取的根證書進行驗證,主要驗證證書時間是否合法,名稱是否合法),即對網絡進行認證,進而可以保證Server的合法。如果合法則提取Server證書中的公鑰,同時産生一個随機密碼串pre-master-secret,并使用伺服器的公鑰對其進行加密,最後将加密的資訊ClientKeyExchange+用戶端的證書(如果沒有證書,可以把屬性置為0)+TLS finished屬性封裝成EAP-Rsponse/TLS OK封包發送給認證點AP.如果STA沒有安裝證書,則不會對Server證書的合法性進行認證,即不能對網絡進行認證;

⑩② AP以EAP Over Radius的封包格式将EAP-Response/TLS OK發送給認證伺服器Radius Server,并且帶上相關的Radius的屬性;

⑩③ Radius收到STA發了的封包後,用自己的證書對應的私鑰對ClientKeyExchange進行解密,進而擷取到pre-master-secret,然後将pre-master-secret進行運算處理,加上Client和Server産生的随機數,生成加密密鑰、加密初始化向量和hmac的密鑰,這時雙方已經安全的協商出一套加密辦法了,至此TLS通道已經建立成功,以後的認證過程将使用協商出的密鑰進行加密和校驗。Radius Server借助hmac的密鑰,對要在TLS通道内進行認證的消息做安全的摘要處理,然後和認證消息放到一起。借助加密密鑰,加密初始化向量加密上面的消息,封裝在Access-Challenge封包中,發送給Client。

5、認證過程

⑩④ AP把Radius封包中的EAP域提取,封裝成EAP-request封包發送給Client;

⑩⑤ STA收到Radius server發來封包後,用伺服器相同的方法生成加密密鑰,加密初始化向量和hmac的密鑰,并用相應的密鑰及其方法對封包進行解密和校驗,然後産生認證回應封包,用密鑰進行加密和校驗,最後封裝成EAP-response封包發送給AP,AP以EAP Over RADIUS的封包格式将EAP-Response發送給認證伺服器Radius Server,并且帶上相關的RADIUS的屬性,這樣反複進行互動,直到認證完成(注:對于不同的認證方法互動流程不一緻,通常的認證方法為:PEAP-MSCHAPV2或者GTC(IBM LDAP支援的,有關于PEAP-GTC的過程就是在認證的時候按照GTC/OTP的過程在PEAP添加的一個過程罷了,再注:在傳送完密碼後要傳一個長度為1的資料為0的包過去後才會得到SUCESS連通網絡),下面由單獨認證流程,如果是SIM認證,還需要跟HLR/AUC裝置進行資料互動,并且使用AS作為認證伺服器),在認證過程中,Radius Server會下發認證後用于生成空口資料加密密鑰(包括單點傳播、多點傳播密鑰)的PMK給STA;

⑩⑥ 伺服器認證STA成功,會發送Access-Accept封包給AP,封包中包含了認證伺服器所提供的MPPE屬性;

⑩⑦ AP收到RADIUS-Access-Accept封包,會提取MPPE屬性中的密鑰做為WPA加密用的PMK,并且會發送EAP-success封包給STA。

企業無線認證方案:Windows Server NPS + CA憑證 + AD域控

公司之前Windows 10用戶端認證需要手動配置EAP-TTLS進行無線網絡認證,認證伺服器為FreeRadius,現在可以結合域控搭建Radius認證伺服器(Windows Server NPS),當然認證的使用者資料也從域控活動目錄資料庫中擷取,Windows Server NPS作為認證伺服器,利用認證方式為PEAP,可以免配置檔案,因為Windows 10中會預設使用該認證方式進行伺服器互動認證,無需設定。但Windows 7和XP需要設定(加域的使用者可以利用組政策,沒加域的用戶端可以使用腳本導入模闆,後續說明),後續如果需要做有線端口的認證也是可以的。如果後續所有Windows用戶端加入域控,那麼就無須手動進行認證,用戶端會預設使用域控賬戶進行認證,大大友善後續的網絡接入管理工作。

AD域控(DNS)-->CA伺服器-->NPS伺服器(解決WIFI認證問題)

驗證方式:

  1. PEAP驗證:使用證書+AD使用者內建認證;
  2. PEAP驗證:使用密碼+AD使用者內建認證;

如果部署基于證書的身份驗證方法,如可擴充身份驗證協定-傳輸層安全性(EAP-TLS),受保護的可擴充身份驗證協定-傳輸層安全性(PEAP-TLS),和 PEAP-Microsoft 質詢握手身份驗證協定版本 2 (MS-CHAP v2),必須對所有你 NPS注冊伺服器證書。 伺服器證書必須:

滿足最小伺服器證書要求,如中所述為 PEAP 和 EAP 要求配置證書模闆

由證書頒發機構頒發(CA)受信任的用戶端計算機。 在目前使用者和本地計算機的受信任的根證書頒發機構證書存儲中存在其證書時,CA 是受信任。

以下說明幫助管理 NPS 中部署受信任的根 CA 其中是第三方 CA,如 Verisign,或已部署的公鑰基礎結構是 ca 的證書(PKI)使用處于活動狀态Directory 證書服務(AD CS)。

  • 部署伺服器證書用于 802.1x 有線和無線部署(抛棄)
  • 部署密碼-基于 802.1x 經過身份驗證無線通路(使用)

因為 PEAP-MS-CHAP v2 要求使用者提供密碼-基于的憑據而不是在身份驗證過程中的證書,它是通常更容易、 成本更低比 EAP部署-TLS 或 PEAP-TLS。

部署 802.1x 身份驗證無線通路與 PEAP-MS-CHAP v2:

  • IEEE 802.1X
  • RADIUS 身份驗證
  • 無線身份驗證和密碼:WPA2-企業使用 AES

認證過程:用戶端輸入使用者名和密碼給AC,AC傳遞給NPS伺服器,NPS伺服器讀取AD目錄資料庫進行認證,認證通過後授權,從POE交換機DHCP擷取IP,然後網絡暢通。