认证协议介绍:
扩展认证协议 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, 但是他们的实现有所区别.
三者对比:
EPA-TLS 是目前为止最安全的方式, 但缺点也很明显, 很多系统客户端并没有集成, 客户端需要导入认证证书等等, 所以当下 WLAN 认证方式最常用的是 PEAP 和 EAP-TTLS 这两种. 下图是 PEAP 的认证粗略过程:
认证基本流程:
1, 证书获取
证书主要用来进行终端和网络的相互认证. Radius 服务器首先向 CA 证书颁发机构申请服务器证书, 用来代表 Radius 服务器的合法性. STA 向 CA 证书颁发机构下载 CA 根证书, 用来验证 Radius 服务器下发的证书是否合法(一般情况下, 如果终端不需要对网络进行认证的情况下, 根证书可以不用下载和安装).
2, 无线接入
STA 通过开放系统接入的方法 (OPEN SYSTEM) 和 AP 之间建立好物理连接.
3, 认证初始化
1 STA 向 AP 设备发送一个 EAPoL-Start 报文, 开始 802.1x 接入的开始;
2 AP 向客户端发送 EAP-Request/Identity 报文, 要求客户端将用户信息送上来;
3 STA 回应一个 EAP-Response/Identity 给 AP 的请求, 其中包括用户的网络标识. 用户 ID, 对于 EAP-mschchap v2 认证方式的用户 ID 是由用户在 STA 手动输入或者配置的;
4 AP 以 EAP Over Radius 的报文格式将 EAP-Response/Identity 发送给认证服务器 Radius, 并且带上相关的 Radius 的属性;
5 Radius 收到客户端发来的 EAP-Response/Identity, 根据配置确定使用 EAP-PEAP 认证, 并向 AP 发送 RADIUS-Access-Challenge 报文, 里面含有 Radius 发送给客户端的 EAP-Request/Peap/Start 的报文, 表示希望开始进行 EAP-PEAP 的认证;
6 AP 设备将 EAP-Request/PEAP/Start 发送给认证客户端.
4, 建立 TLS 通道
7 STA 收到 EAP-Request/Peap/Start 报文后, 产生一个随机数, STA 支持的加密算法列表, TLS 协议版本, 会话 ID, 以及压缩方法(目前均为 NULL), 封装在 EAP-Response/Client Hello 报文中发送给 AP 设备;
8 AP 以 EAP Over Radius 的报文格式将 EAP-Response/Client Hello 发送给认证服务器 RadiusServer, 并且带上相关的 Radius 的属性;
9 Radius 收到 STA 发来的 Client Hello 报文后, 会从 STA 的 Hello 报文的加密算法列表中选择自己支持的一组加密算法 + Server 产生的随机数 + Server 证书(包含服务器的名称和公钥)+ 证书请求 + Server_Hello_Done 属性形成一个 Server Hello 报文封装在 Access-Challenge 报文中, 发送给 STA;
10 AP 把 Radius 报文中的 EAP 域提取, 封装成 EAP-request 报文发送给 Client.
注: 由于证书比较大, 一个报文是无法承载的, 所以在实际流程中第 10,11 完成后, 后面还有 3 个续传的 IP 分片报文, 目的是把 Server 证书发送到客户端.
101 STA 收到报文后, 进行验证 Server 的证书是否合法(使用从 CA 证书颁发机构获取的根证书进行验证, 主要验证证书时间是否合法, 名称是否合法), 即对网络进行认证, 从而可以保证 Server 的合法. 如果合法则提取 Server 证书中的公钥, 同时产生一个随机密码串 pre-master-secret, 并使用服务器的公钥对其进行加密, 最后将加密的信息 ClientKeyExchange + 客户端的证书(如果没有证书, 可以把属性置为 0)+TLS finished 属性封装成 EAP-Rsponse/TLS OK 报文发送给认证点 AP. 如果 STA 没有安装证书, 则不会对 Server 证书的合法性进行认证, 即不能对网络进行认证;
102 AP 以 EAP Over Radius 的报文格式将 EAP-Response/TLS OK 发送给认证服务器 Radius Server, 并且带上相关的 Radius 的属性;
103 Radius 收到 STA 发了的报文后, 用自己的证书对应的私钥对 ClientKeyExchange 进行解密, 从而获取到 pre-master-secret, 然后将 pre-master-secret 进行运算处理, 加上 Client 和 Server 产生的随机数, 生成加密密钥, 加密初始化向量和 hmac 的密钥, 这时双方已经安全的协商出一套加密办法了, 至此 TLS 通道已经建立成功, 以后的认证过程将使用协商出的密钥进行加密和校验. Radius Server 借助 hmac 的密钥, 对要在 TLS 通道内进行认证的消息做安全的摘要处理, 然后和认证消息放到一起. 借助加密密钥, 加密初始化向量加密上面的消息, 封装在 Access-Challenge 报文中, 发送给 Client.
5, 认证过程
104 AP 把 Radius 报文中的 EAP 域提取, 封装成 EAP-request 报文发送给 Client;
105 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;
106 服务器认证 STA 成功, 会发送 Access-Accept 报文给 AP, 报文中包含了认证服务器所提供的 MPPE 属性;
107 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 服务器(解决 Wi-Fi 认证问题)
验证方式:
PEAP 验证: 使用证书 + AD 用户集成认证;
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, 然后网络畅通.
来源: https://www.cnblogs.com/yanghua1012/p/11837969.html