802.1x又叫Eapol协议,是基于二层做准入控制的,他是基于端口(接口)的网络接入控制协议,802.1x协议仅关注接入端口的状态(一般指client连接入交换机的接口),当合法(根据账号和密码)用户接入时,该端口打开,当非法用户接入或没有用户接入时,该端口状态关闭。
802.1x在client与接入交换机之间承载EAP协议(拓展认证协议,承载所有认证授权消息例如:用户名,访问控制列表等),802.1x只用在client和交换机之间,交换机和controller之间用radius 79属性来承载EAP,EAP是贯传client与server之间
以EAP透传认证举例(这里用的是最简单的eap-md5,通过不同的认证方式有很多EAP协议):EAP终结认证中的挑战值,是由交换机给client端发起的。
首先,client要启用802.1x(可以是Windows自带服务,也可以装agent这种软件)
1、client发送一个eapol-start消息给交换机
2、交换机收到以后,回复给client eap=request消息,要求输入用户名
3、client回复eap-response消息给交换机,包含自己的用户名
4、用户名送到交换机后,交换机剥离802.1x的封装,用radius封装送往服务器
5、服务器收到这个用户名后,会根据该用户名产生一个MD5的挑战值。将这个挑战值放在eap回复消息中用radius封装发送给交换机
6、交换机收到radius access-challenge消息后剥离radius用802.1x封装发送EAP-Request/MD5 Challenge(挑战包内容:用户名+随机数+ID ID是认证的序列号)给client
7、client将收到查询本地数据库将用户名+MD5<密码+ID+随机数>发送给交换机(hash值是在EAP中的由802.1x封装)
8、交换机解封装再通过radius封装发送到Server,Server用自己本地数据库中用户名对应的密码+ID+随机数,做HASH与收到的HASH值做比较
9、如HASH值相同返回radius access-accept消息给交换机。(注:radius认证授权是同一个报文,所以在发送access-accept认证成功消息的同时,如果有授权信息,会使用同一个报文发送过来,比如一个ACL,至此,授权就由Server推送给交换机了)
10、交换机给Client返回eap-success消息
11、图中后三个消息是握手维护消息,用于探测是否在线
1、当用户需要访问外部网络时,用户发起连接请求,向RADIUS客户端(即接入设备)发送用户名和密码。
2、RADIUS客户端根据获取的用户名和密码,向RADIUS服务器提交认证请求报文。该报文中包含用户名、密码等用户的身份信息。
3、RADIUS服务器对用户身份的合法性进行检验:
如果用户身份合法,RADIUS服务器向RADIUS客户端返回认证接受报文,允许用户进行下一步工作。由于RADIUS协议合并了认证和授权的过程,因此认证接受报文中也包含了用户的授权信息。
如果用户身份不合法,RADIUS服务器向RADIUS客户端返回认证拒绝报文,拒绝用户访问接入网络
4、RADIUS客户端通知用户认证是否成功
5、RADIUS客户端根据接收到的认证结果接入/拒绝用户。如果允许用户接入,则RADIUS客户端向RADIUS服务器发送计费开始请求报文
6、RADIUS服务器返回计费响应报文,并开始计费
7、用户开始访问网络资源
8、(可选)在使能实计费功能的情况下(可以使配置realtime实现实时计费),RADIUS客户端会定时向RADIUS服务器发送实时计费请求报文,以避免因付费用户异常下线导致的不合理计费
9、(可选)RADIUS服务器返回实时计费响应报文,并实时计费
10、用户发起下线请求,请求停止访问网络资源
11、RADIUS客户端向RADIUS服务器提交计费结束请求报文
认证名称 | EAP-MD5 | EAP-TLS | EAP-TTLS | EAP-PEAP | EAP-GTC |
---|---|---|---|---|---|
协议说明 | 建立TLS会话,并且验证客户端和服务器证书 | 1、建立TLS通道2、客户端服务器交换属性对 | 1、建立TLS通道2、在TLS通道中运行其他的EAP协议 | 客户端明文用户名、密码传给服务器进行验证 | |
服务器证书 | 不要求 | 要求 | 要求 | 要求 | 不要求 |
客户端证书 | 不要求 | 要求 | 可选 | 可选 | 不要求 |
双向认证 | 否 | 是 | 是 | 是 | 否 |
对服务器认证 | 否 | 证书 | 证书 | 证书 | 否 |
对客户端认证 | 密码 | 证书 | PAP、CHAP、MS-CHAPv2、EAP等 | MS-CHAPv2、GTC、TLS等 | 用户名、密码 |
复杂性 | 低 | 中 | 高 | 高 | |
安全性 | 中 | 高 | 高 | 高 |
EAP是通过TLS隧道进行客户端与Server之间的双向证书认证
TLS会话的建立过程,其实就是整个SSL握手协议的过程
PEAP,可以解决EAP-TLS的问题,在TLS建立会话的过程中,只用Server端给client端推证书,然后形成安全的加密通道,随后在这个安全的加密通道里,再进行简单的CHAP认证。client不需要生成证书。
portal认证也称web认证,其基本原理是:用户首次打开浏览器,输入任何网址,都被强制重定向到web服务器的认证页面,只有在认证通过后,用户才能访问网络资源,未认证用户只能访问特定的站点服务器。portal认证通过web页面输入用户名和密码,使用portal协议完成认证过程。
SACG准入,是Controller和防火墙配合实现的用户准入控制,主要针对网络是有线网络,并且不改造网络架构的场景,实现对有线网络接入用户的准入控制,本质上是通过防火墙上的ACL来控制用户的权限。
认证前域
受控域
隔离域:
认证后域:
1、缺省情况下,接入设备对未通过认证的流量都是deny的
2、未认证前,SACG会从Server获取定义好的策略和角色
3、用户在客户端输入用户名和密码,提交认证
4、服务器对用户进行认证,授权设备用户的角色,并通知客户端用户上线成功
5、用户访客网络时,SACG根据角色控制用户的策略
(1)802.1x认证需要认证终端安装专门的软件
802.1x客户端软件的安装部署是一个很实际的问题,对于网络的临时访问者,要求安装专门软件更不可取
注:802.1x是公用标准的技术,可以与其他设备互接
(2)portal认证不需要安装专门的软件
用户首次打开浏览器,输入任何网址,都被强制重定向到web服务器的认证页面,只有在认证通过后,用户才能访问网络资源
(注:华为的portal只支持与华为的设备对接)
(3)MAC认证:
MAC认证地址是一种基于端口和MAC地址对用户的网络访问进行权限控制的认证方法,它不需要用户安装任何客户端软件,用户名和密码都是用户设备的MAC地址,网络接入设备在首次检测到用户的MAC地址以后,即启动对该用户的认证。
MAC认证实际上采用的是802.1x认证方法,当设备配置了MAC认证后,会自动把接入设备的MAC地址作为用户名和密码发送到AAA服务器进行认证。
当然,在AAA服务器上必须首先配置了接入设备的MAC地址作为用户名和密码
(4)MAC旁路认证
目前哑终端的MAC旁路认证,只支持HW交换机
MAC旁路认证命令:dot1x mac-bypass命令
(5)SACG
SACG不需要改变网络的拓扑,不像802.1x,portal都需要在client端接入的设备上做部署,只需要将流量引流到旁挂的SACG设备(FW)上做部署就行了。(因此可以把防火墙旁挂到思科的设备上。)对于接入设备都不需要做什么配置,只需要将流量引流到SACG,让SACG与Controller沟通做相应的认证、授权。如果在终端安装了anyoffice,对终端可以做实现终端安全检查,单独的802.1x是不能实现终端安全检查的。
注:SACG不支持对哑终端实施控制
1.强制授权
2.强制非授权
3.自动识别
1、FW2上没有放行portal(50100-》2000)的安全策略。
2、用户所属组没有做相应的认证授权。
3、web和接入设备之间认证交互错了。
1.添加接入设备,启用RAIDUS
2.创建用户和部门和账号
3.配置认证规则(部门、角色、账号、数据源(本地还是AD等)、时间段、定制条件、认证协议(pap、chap、peap、tls等))
4.配置策略元素(接入设备、时间段、动态acl、ssid、定制条件)
5.配置授权结果(vlan、动态acl、acl号、安全组、上行带宽、下行带宽、自定义授权参数)
6.配置授权规则(部门、角色、账号、接入设备组、终端ip地址范围、ssid、终端设备组、时间段等)调用授权结果