最新消息:

AAA之802.1x网络接入控制

Cisco admin 3008浏览 0评论

AAA之802.1x网络接入控制       原创:wildlee

802.1x是针对非法接入访问其内部网络提供了一种控制机制。其安全原理是边缘交换机在转发所连接主机数据分组的时候,要进行身份验证,通过身份验证的主机可以进行正常的分组转发与接收,如果没有通过身份验证,则拒绝转发除了其用来认证的EAPOL报文的其它任何数据分组报文。

在实现802.1x的时候,我这里把其中的各种角色点明一下。3A服务器是安装了3A程序实体的主机,这里我用微软server2003的IAS,协议为标准的RADIUS协议;3A客户端是思科交换机,它将主机发送过来的EAP认证报文用radius协议封装起来,交给3A服务器进行认证;这里面的认证信息EAP是被主机用EAPOL协议封装发送到交换机的。

 

802.1X认证配置

这里我们先讲如何部署802.1x,后面我们详细的通过分析协议,来了解其详细原理。

部署单一安全认证服务,我继承网络安全之AAA一文的配置思想,我们先配置AAA客户端。

AAA客户端NAS交换机配置

1.Aaa newmodel

2.Interface vlan 1

Ip address 192.168.1.12 255.255.255.0

3.radius-server host 192.168.1.200 auth-port 1812 acct-port 1813 key wildlee

radius-server retransmit 3

4.aaa authentication dot1x default group radius server

5.dot1x system-auth-control

   dot1x re-authentication

全局启用交换机对802.1x认证的支持,re-authentication告诉交换机允许请求者重复认证。默认没有开启,这样如果请求者第一次输错了密码,将不能在次尝试认证。

  Switchport mode access

  dot1x port-control auto

在接口下启用802.1x认证,端口类型必须为访问接口模式。

===============================================

上面的配置完成了我AAA一文中提到的配置思想,可以与认证服务器进行交流了,下面我配置客户机提出的具体认证内容。以上配置只是主要配置,还有很多详细的配置参数,做的时候可以参看命令帮助。

===============================================

AAA服务端2003IAS配置

1.我们用server2003做认证服务器的第一步就是添加认证服务器,以便用RADIUS协议与NAS交换机交流。在控制面板、添加删除管理单元、添加、Internet验证服务,然后打开系统的组策略[GPEDIT.MSC]配置“密码策略”→“用可还原的加密来储存密码”设置成启用,我感觉这个是在验证过程 中,如果无法还原密码,在使验证协议的过程中,将无法对认证者的密码进行有效判断,这个可能与CHAP认证协议有关。

2.我们添加一个3A客户端 ,在server2003的“Internet验证服务 ”,中选择“新建一个RADIUS客户端”,给它取个容易记忆的名字,设置好它的IP地址,并设置一个密码用来验证3A客户端的身份。

3.我们知道认证分本地认证[交换机本地账号与密码]与远程认证[3A服务器认证],如果使用远程认证那么远程认证服务器必须要有相应用户账号与密码信息,将根据此信息做出认证结果,所以我们必须在3A服务器添加此数据。我们要在server2003里创建用户账户与密码,并将账户属性“拔入”选项卡里的“远程访问权限”设置成“允许访问”。

4.打开server2003的“Internet验证服务 ”,创建一个“远程访问策略”,这里我们设置客户端必须符合哪些条件才允许通过请求,这里是利用了RADIUS的协议的属性值AVP。同时附上一个关于RADIUS属性参考文章[http://www.iana.org/assignments/radius-types/radius-types.xml]

支持802.1X主机配置

为了能与认证者交换机进行802.1X交流,我们就要让主机也支持802.1x协议。如果为windows主机这里的注意点是要启动支持802.1X的服务。在运行对话框中输入“services.msc”,将 “Wired Autoconfig”服务启动起来。设置本地连接属性,配置身份验证,并输入账号与密码进行验证。

===============================================

这里我没有给出大量的细节戴图,也没有做ACSserver的示例,这些东西网上有很多类似教程。个人感觉我们学知识要撑握他的一个核心思想与原理,而并不是一定要建立在一个机械式的程序实体上面,这样就固化了你知识。因为一个程式实体总是在不断改变演进的,就像windows一样。当然我们可以利用这种程序进行实验与理论验证,让我们能更好的更深入的去理解一个技术。

===============================================

交换机控制端口特性

在启用了802.1x的交换机上,其交换端口类型从非控制端口转型为控制端口,控制端口有三种控制模式,每个控制端口还有三种主机模式。

控制模式

dot1x port-control auto

此控制端口需要通过认证才能转发数据分组。

dot1x port-control force-authorized

此控制端口不需要主机进行认证,强制接口为已认证模式,转分用户分组报文。

dot1x port-control force-unauthorized

此控制端口不接受主机进行认证,不会转发用户的数据分组。

主机模式

dot1x host-mode single-host

此端口只能连接一台主机,通过认证后可以为其转发数据分组。

dot1x host-mode multi-host

此端口下面可以连接傻瓜式交换机,其中有一台主机通过认证,其它主机均可以被转发数据分组。

dot1x host-mode multi-auth

此端口下面可以连接傻瓜式交换机,其中有一台主机通过认证,其它主机数据分组得不到转发,必须也要过通过身份验证。

附交换机配置过程中调试命令

debug radius authentication

调试RADIUS认证报文

 clear dot1x interface fastEthernet *

清空接口缓存认证

test aaa group radius username password new-code

对认证服务器进行认证测试

 

802.1X认证协议过程

 Vmware_5e:e6:ce是主机,也称请求者;Nearest是交换机,也称认证者,其ip是192.168.1.12;192.168.1.10是认证服务器。

1.请求者主机发送一个EAPoL-Start报文发起认证过程。

2.交换机收到EAPoL-Start后发送一个EAP-Request报文响应主机的认证请求,EAP报文被封装在EAPOL报文中。

3. 主机用一个EAP-Response报文响应EAP-Request,EAP报文里有用户账号标识,EAP报文被封装在EAPOL报文中。

4.交换机根据主机EAP-Request中账号标识与自己IP、NAS Port、services-type等相关信息进行RADIUS的AVP值属性封装,最终生成Access-Request报文发送给认证服务器要求进行认证.这里整个EAP报文被当作一个RADIUS的AVP属性值。

5.认证服务器收到RADIUS Access-Request报文后,根据其RADIUS属性值进行策略匹配,符合匹配条件的,要求进行CHAP认证挑战并发送EAP-Challenge Request报文。不匹配策略的,直接发送Access-Reject报文拒绝。

6. 策略匹配的话交换机收到RADIUS Access-Challenge报文后,将封装在RADIUS该报文中的EAP消息解封装发送给主机,要求完成认证。

7.主机将EAP中认证消息进行相应的HASH计算,然后用EAP-Challenge Response回复给交换机,EAP报文被封装在EAPOL报文中。

8. 交换机收到EAP-Challenge Response报文后,将EAP-Message信息封装RADIUS Access-Request报文的AVP属性值中发送给认证服务器。

9.认证服务器根据其结果,做出认证结果。认证失败返回RADIUS Access-Reject,认证成功返回RADIUS Access-Accept.

10.认证成功交换机在收到认证服务器发送过来的RADIUS Access-Accept,将控制端口变更成已授权状态,然后交换机生成EAP-Success报文回复主机,EAP报文被封装在EAPOL报文中。

===============================================

以上认证过程基于密码式认证,而证书式认证。这里我没有把报文解码给大家看,在做实验的时候大家要自己解码观察更细节的情况。

===============================================

 

802.1X认证协议报文

为了能让大家更好的理解报文内容,我摘抄了部分RFC文档给大家参看,如果想更多的了解报文内容,就看详细的RFC吧,这个不失为一个好的教程。

EAP报文

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Code | Identifier | Length |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Data …

CODE字段

1 Request

2 Response

3 Success

4 Failure

Success 和Failure 类型的包没有Data 域,相应的Length 域的值为4。Request和Response类型数据包的Data域的格式所示。Type为EAP的认证类型,Typedata的内容由类型决定。例如,Type值为1 时代表Identity,用来查询对方的身份;Type值为4 时,代表MD5-Challenge,类似于PPP CHAP协议,包含质询消息。RADIUS 为支持EAP 认证增加了两个属性;EAP-Message(EAP 消息)和Message-Authenticator (消息认证码)。

 

EAPOL

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Version    |  Packet Type  |  Packet Body Length           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |          Key  Length          |Replay Counter…
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Version
The Version field is one octet.  For IEEE 802.1X, it contains the
value 0×01.

Packet Type
The Packet Type field is one octet, and determines the type of
packet being transmitted.  For an EAPOL-Key Descriptor, the Packet
Type field contains 0×03.

Packet Body Length
The Packet Body Length is two octets, and contains the length of
the EAPOL-Key descriptor in octets, not including the Version,
Packet Type and Packet Body Length fields

Packet Type字段

0 EAP报文[EAP-packet]

1 EAPoL开始报文[EAPoL-start]

2 EAPoL 注消报文[EAPoL-logoff]

3 EAPoL 信息报文[EAPoL-key]

4 EAPoL 告警报文[EAPoL-alert]

RADIUS

 0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Code      |  Identifier   |            Length             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
|                         Authenticator                         |
|                                                               |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Attributes …
+-+-+-+-+-+-+-+-+-+-+-+-+-

RADIUS Codes (decimal) are assigned as follows:

1       Access-Request
2       Access-Accept
3       Access-Reject
4       Accounting-Request
5       Accounting-Response
11       Access-Challenge
12       Status-Server (experimental)
13       Status-Client (experimental)
255       Reserved

此文到此结束了,如果发现有什么错误或遗漏之处,请多多指点。在此感谢下午夜兄,对我文章提出了很多好的建议与看法。

wildlee博客

转载请注明:爱开源 » AAA之802.1x网络接入控制

您必须 登录 才能发表评论!