802.1x认证方式(EAP中继认证与EAP终结认证) |
您所在的位置:网站首页 › net认证 › 802.1x认证方式(EAP中继认证与EAP终结认证) |
文章目录
1、前言2、协议说明3、报文分析EAP中继模式:MD5-challengeEAP终结模式:MD5-challengeRadius CHAP认证原理Message-Authenticator消息验证器计算参考连接:
1、前言
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服务器。 认证方式定义优势劣势EAP中继认证也叫EAP透传认证,由网络接入设备直接把802.1X用户的认证信息以及EAP报文直接封装到RADIUS报文的属性字段中,发送给RADIUS服务器,而无须将EAP报文转换成标准的RADIUS报文后再发给RADIUS服务器来完成认证。优势:MD5-Challenge:例如基于Linux操作系统的Xsupplicant客户端和FreeRadius服务器之间可以采用MD5-Challenge认证。服务器需要配置MD5策略属性。EAP-MD5认证方式简单。EAP-TLS:例如基于Symantec Endpoint的客户端和基于Symantec Enforcer 6100的RADIUS服务器之间可以采用不带证书的EAP-TLS认证方式。EAP-TLS认证方式安全性较好。EAP-PEAP:例如Windows XP操作系统自带的客户端和Windows Server 2003自带的RADIUS服务器之间可以采用EAP-PEAP认证方式。EAP-PEAP认证方式安全性较好。要求RADIUS服务器支持相应的认证方法。EAP终结认证由网络接入设备终结用户的EAP报文,解析出用户名和密码,并对密码进行加密,再将EAP报文转换成标准的RADIUS报文后发给RADIUS服务器来完成认证。由网络接入设备终结用户的EAP报文,解析出用户名和密码,并对密码进行加密,再将EAP报文转换成标准的RADIUS报文后发给RADIUS服务器来完成认证。RADIUS服务器并不需要支持EAP认证,减轻了服务器压力。设备端处理较为复杂。EAP中继模式:
其中,EAPOL-Start,EAPOL-Logoff和EAPOL-Key仅在客户端和设备端之间存在;在设备端和认证服务器之间,EAP-Packet报文会被重新封装承载于RADIUS协议上,我们称之为EAPoR,以便穿越复杂的网络到达认证服务器;EAPOL-Encapsulated-ASF-Alert封装与网管相关的信息,例如各种警告信息,由设备端终结。 注意,当是EAPOL-Start或EAPOL-Logoff类型报文时,并不需要PacketBody有具体的内容。 3、报文分析 EAP中继模式:MD5-challenge1.当用户有上网需求时打开802.1X客户端程序,输入用户名和口令,发起连接请求。此时客户端程序将发出请求认证的报文给交换机,启动一次认证过程。 Ethernet II, Src:00:e0:4c:d7:65: cd, Dst:01:80:c2:00:00:03 Destination:01:80:c2:00:00:03(Spanning-tree-(for-bridges)_03) Source:00:e0:4c:d7:65: cd(RealtekS_d7:65: cd) Type:802.1X Authentication (0x888e) Frame check sequence:0xa5a5a5a5(incorrect, should be0xcc6d5b40) 802.1x Authentication Version:1 Type: Start(1) Length:02.交换机在收到请求认证的数据帧后,将发出一个EAP-Request/Identitybaowe 请求帧要求客户端程序发送用户输入的用户名。 Ethernet II, Src:00:03:0f:01:3a:5a, Dst:00:e0:4c:d7:65:cd Destination:00:e0:4c:d7:65: cd(RealtekS_d7:65: cd) Source:00:03:0f:01:3a:5a(DigitalC_01:3a:5a) Type:802.1X Authentication (0x888e) 802.1xAuthentication Version:1 Type: EAP Packet(0) Length:5 Extensible Authentication Protocol Code: Request(1) Id:1 Length:5 Type: Identity [ RFC3748](1)3.客户端程序响应交换机的请求,将包含用户名信息的一个EAP-Response/Identity 送给交换机, Ethernet II, Src:38:22:d6:de:f0:e1, Dst:01:80:c2:00:00:03 Destination:01:80:c2:00:00:03(Spanning-tree-(for-bridges)_03) Source:00:e0:4c:d7:65: cd(RealtekS_d7:65: cd) Type:802.1X Authentication (0x888e) 802.1xAuthentication Version:1 Type: EAP Packet(0) Length:59 Extensible Authentication Protocol Code: Response(2) 1d:1 Length:13 Type: Identity [ RFC3748](1) Identity(8 bytes):03051020 交换机将客户端送来的数据帧经过封包处理后生成RADIUS Access-Request报文送给认证服务器进行处理在含有EAP-Message 属性的数据包中,必须同时也包含Message-Authenticator,否则该数据包会被认为无效而被丢弃 4.认证服务器收到交换机转发上来的用户名信息后,将该信息与数据库中的用户名表相比对,找到该用户名对应的口令信息,用随机生成的一个加密字Challenge对它进行加密处理(MD5), 通过接入设备将 RADIUS Access-Challenge报文发送给客户端,其中包含有EAP-Request/MD5-Challenge。 Ethernet II, Src:38:22:d6:de:f0:e1, Dst:00:e0:4c:d7:65:cd Destination:00:e0:4c:d7:65: cd(RealtekS_d7:65: cd) Source:00:03:0f:01:3a:5a(DigitalC_01:3a:5a) Type:802.1X Authentication (0x888e) 802.1xAuthentication Version:1 Type: EAP Packet(0) Length:22 Extensible Authentication Protocol Code: Request(1) Id:2 Length:22 Type: MD5-Challenge [ RFC3748](4) Value-Size:16 Value:3934306461343239365376236346164345.客户端收到EAP-Request/MD5-Challenge 报文后,用该加密字对口令部分进行加密处理(MD5)给交换机发送在EAP-Response/MD5-Challenge 回应 Ethernet II, Src:00:e0:4c:d7:65: cd, Dst:01:80:c2:00:00:03 Destination:01:80:c2:00:00:03(Spanning-tree-(for-bridges)_03) Source:00:e0:4c:d7:65: cd(RealtekS_d7:65: cd) Type:802.1X Authentication (0x888e) 802.1x Authentication Version:1 Type: EAP Packet(0) Length:76 Extensible Authentication Protocol Code: Response(2) Id:2 Length:30 Type: MD5-Challenge [ RFC3748](4) Value-Size:16 Value: CBAC378ABB609123D2BB412840AEC614 Extra data(8 bytes):3033303531303230交换机将Challenge,Challenged Password 和用户名一起送到RADIUS 服务器进行认证。 6.认证服务器将送上来的加密后的口令信息和其自己经过加密运算后的口令信息进行对比,判断用户是否合法,然后回应认证成功/失败报文到接入设备。如果认证成功,则向交换机发出打开端囗的指令,允许用户的业务流通过端口访问网络。否则,保持交换机端口的关闭状态,只允许认证信息数据通过。 Ethernet II, Src:38:22:d6:de:f0:e1, Dst:00:e0:4c:d7:65:cd Destination:00:e0:4c:d7:65: cd(RealtekS_d7:65: cd) Source:00:03:0f:01:3a:5a(DigitalC_01:3a:5a) Type:802.1X Authentication (0x888e) 802.1xAuthent ication Version:1 Type: EAP Packet(0) Length:225 Extensible Authentication Protocol Code: Success (3) Id:0 Length:4 EAP终结模式:MD5-challenge1、EOPAL start 该数据包的前14字节是MAC帧的头部信息,1-6 字节内容为目标的 MAC 地址, 7-12 字节为源 MAC地址,13-14字节为该数据帧类型。从第15字节开始为 MAC层封装的实际通信内容。从MAC帧的头部信息可以看出,EAPOL-Start消息发向了FF-FF-FF-FF-FF-FF 这个广播(broadcast)地址,源地址则将请求者的位置告诉验证者。MAC帧头的Type字段的值为0x888e,表示了该帧封装了802 .1X Authentication数据,以下各包的Type字段均是 0x888e。从第15字节开始是802 .1X Authentication内容。第15字节为Version字段,值为1;第16字节为Type字段,表示了该 802.1X Authentication 的类型,这个包值为1 ,表示 Start(开始认证过程);第17- 18字节为 Length字段,它表示的是802.1X Authentication 封装的 EA P消息的长度,由于EAPOL-Start没有包含EAP消息,所以此处为 0。以下各包的802.1X Authentication 格式和这个包是一样的,Type和Length值有变化。 CHAP(Challenge Handshake Authentication Protocol)验证协议为三次握手(交互)验证协议 chap并不会直接在认证过程传递用户密码,而是传递 md5 ( chapID + 密码 + challenge ), 服务端通过比较md5值判断用户密码是否在正确, client 和 server 之前存在一个 challenge “协商”过程 但在radius 协议中, NAS(交换机)与radius服务器的交互,并不需要三次交互, NAS会将认证信息 “打包”给radius 服务器校验 radius服务器 chap 用户名/密码 校验原理 (1)radius 服务器通过用户名(明文), 找出对应的密码,此时密码为pass (2)计算 md5 ( chapID + 密码 + challenge ) , 并判断 是否与 chap-password (从第2字节开始比较) 一致,如果一致, 则认为密码正确 截图中, md5 ( chapID + 密码 + challenge ) 与 chap string 一致, 由此可知,用户密码正确 0x0a 是chapID 0x70 0x61 0x73 0x73 是密码,转换便是:pass 剩下的十六字节便是MD5-challenge,组成后进行 md5 ( chapID + 密码 + challenge ) 得到的值与CHAP String相等。 Message-Authenticator消息验证器计算以下示例说明如何手动计数值,以确保其计算正确。 已选择数据包编号30(访问请求)。它处于EAP会话中,且数据包包含Message-Authenticator字段。目的是验证消息验证器是否正确: 将该RADIUS负载写入文件(二进制数据)。 要计算消息验证器字段,必须将零置于此处并计算HMAC-MD5。 例如,当您使用十六进制/二进制编辑器(如vim)时,在键入“:%!xxd”后,它会切换到十六进制模式,从“5012”后开始为16个字节(50hex是80,其中是消息验证器类型,12是18,包括属性值对(AVP)报头): 修改后,负载就绪。必须返回十六进制/二进制模式(类型:“:%!xxd -r”)并保存文件(“:wq”)。 使用OpenSSL计算HMAC-MD5: cat packet30-clear-msgauth.bin | openssl dgst -md5 -hmac 'cisco' (stdin)= 01418d3b1865556918269d3cf73608b0HMAD-MD5函数采用两个参数:第一个来自标准输入(stdin)是消息本身,第二个是共享密钥(本例中为思科)。 结果与附加到RADIUS Access-Request数据包的消息验证器的值完全相同。 使用Python脚本可以计算相同值: cat hmac.py #!/usr/bin/env python import base64 import hmac import hashlib f = open('packet30-clear-msgauth.bin', 'rb') try: body = f.read() finally: f.close() digest = hmac.new('cisco', body, hashlib.md5) d=digest.hexdigest() print d $ python hmac.py 01418d3b1865556918269d3cf73608b0 参考连接:802.1x认证基础 802.1X协议及Radius协议 RADIUS无效身份验证器和消息身份验证器故障排除指南 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |