转载 EZcast
(一)Radius认证方案说明:
当交换机设置成需要认证模式,交换机只允许认证协议包通过交换机,其他网络数据包不允许通过,直到认证通过,交换机开放端口。
Radius认证方案是一个由客户端,设备和服务器三个实体组成的解决方案。客户端负责与交换机通信(通过802.1x协议),发送认证请求和数据包;交换机将客户端上送的用户名和密码通过加密转送给服务器;服务器存储认证用户名和密码,并对交换机通过CHAP/EAP协议送过来的用户名和密码进行验证,返回认证结果;如果通过认证,交换机开放端口,网络数据包可以通过交换机。
3.1 Radius认证体系结构
802.1X系统为典型的Client/Server结构,如图 1 所示,包括三个实体:客户端(Client)、设备端(Device)和认证服务器(Server)。
图 1 802.1X认证体系结构
客户端 是位于局域网段一端的一个实体,由该链路另一端的设备端对其进行认证。客户端一般
为一个用户终端设备,用户可以通过启动客户端软件发起802.1X 认证。客户端必须支持
EAPOL(Extensible Authentication Protocol over LAN,局域网上的可扩展认证协议)。(NCU监控在该体系架构中属于Client的角色,如果监控需要支持Radius认证功能,需要做的工作就是移植或者开发一个802.1X客户端)。
设备端 是位于局域网段一端的另一个实体,对所连接的客户端进行认证。设备端通常为支持
802.1X 协议的网络设备,它为客户端提供接入局域网的端口,该端口可以是物理端口,也可
以是逻辑端口。(设备端一般为交换机,目前华为与思科等厂家的交换机基本上支持Radius认证功能,除少部分较老型号的产品)。
认证服务器 是为设备端提供认证服务的实体。认证服务器用于实现对用户进行认证、授权和计
费,通常为RADIUS(Remote Authentication Dial-In User Service,远程认证拨号用户服务)
服务器。(认证服务器一种是纯软件,部署在虚拟机下,例如FreeRadius等开源软件;一种是硬件加软件成套设备)。
3.2认证客户端
客户端为一个802.1x客户端,通过802.1x协议与交换机交互,客户端主动向交换机发送认证请求,交换机接受到请求后向客户端请求相关的认证协议包。
3.2.1 客户端对802.1x协议支持
802.1X协议是一种基于端口的网络接入控制协议(port based network access control protocol)。“基于端口的网络接入控制”是指在局域网接入设备的端口这一级对所接入的用户设备进行认证和控制。连接在端口上的用户设备如果能通过认证,就可以访问局域网中的资源;如果不能通过认证,则无法访问局域网中的资源。
有协议就有报文,802.1X对应的数据包是EAP(Extensible Authentication Protocol)和EAPOL(Extensible Authentication Protocol over LAN),EAPOL是对EAP的封装(报文可以看出来)使其能够在局域网中以广播包或组播包的形式传输。通过EAP数据包再与远端的RADIUS(用户远程拨号接入服务系统)服务器进行认证,设备端与认证服务器之间交互信息采用的是radius数据包。
图1 EAPOL报文格式
图2 EAP报文格式
当EAPOL数据帧格式Type域为EAP-Packet(认证信息帧)时,Packet Body的内容为EAP数据报文(即图2)。
3.2.2客户端认证过程
802.1X 系统支持EAP 中继方式和EAP 终结方式与远端RADIUS 服务器交互完成认证。以下关于两种认证方式的过程描述,都以客户端主动发起认证为例。
1. EAP 中继方式
这种方式是 IEEE 802.1X 标准规定的,将EAP(可扩展认证协议)承载在其它高层协议中,如EAPover RADIUS,以便扩展认证协议报文穿越复杂的网络到达认证服务器。一般来说,EAP 中继方式需要RADIUS 服务器支持EAP 属性:EAP-Message 和Message-Authenticator,分别用来封装EAP报文及对携带EAP-Message 的RADIUS 报文进行保护。
下面以EAP-MD5 方式为例介绍基本业务流程,如图 2 所示。
图 2 IEEE 802.1X 认证系统的EAP 中继方式业务流程
认证过程如下:
(1) 当用户有访问网络需求时打开802.1X 客户端程序,输入已经申请、登记过的用户名和密码,
发起连接请求(EAPOL-Start 报文)。此时,客户端程序将发出请求认证的报文给设备端,
开始启动一次认证过程。
(2) 设备端收到请求认证的数据帧后,将发出一个请求帧(EAP-Request/Identity 报文)要求用户
的客户端程序发送输入的用户名。
(3) 客户端程序响应设备端发出的请求,将用户名信息通过数据帧(EAP-Response/Identity 报文)
发送给设备端。设备端将客户端发送的数据帧经过封包处理后(RADIUS Access-Request 报
文)送给认证服务器进行处理。
(4) RADIUS 服务器收到设备端转发的用户名信息后,将该信息与数据库中的用户名表对比,找到
该用户名对应的密码信息,用随机生成的一个加密字对它进行加密处理,同时也将此加密字通
过RADIUS Access-Challenge 报文发送给设备端,由设备端转发给客户端程序。
(5) 客户端程序收到由设备端传来的加密字(EAP-Request/MD5 Challenge 报文)后,用该加密
字对密码部分进行加密处理(此种加密算法通常是不可逆的),生成EAP-Response/MD5
Challenge 报文,并通过设备端传给认证服务器。
(6) RADIUS 服务器将收到的已加密的密码信息(RADIUS Access-Request 报文)和本地经过加
密运算后的密码信息进行对比,如果相同,则认为该用户为合法用户,反馈认证通过的消息
(RADIUS Access-Accept 报文和EAP-Success 报文)。
(7) 设备收到认证通过消息后将端口改为授权状态,允许用户通过端口访问网络。在此期间,设备
端会通过向客户端定期发送握手报文的方法,对用户的在线情况进行监测。缺省情况下,两次
握手请求报文都得不到客户端应答,设备端就会让用户下线,防止用户因为异常原因下线而设
备无法感知。
(8) 客户端也可以发送EAPOL-Logoff 报文给设备端,主动要求下线。设备端把端口状态从授权状
态改变成未授权状态,并向客户端发送EAP-Failure 报文。
2. EAP 终结方式
这种方式将EAP报文在设备端终结并映射到RADIUS报文中,利用标准RADIUS协议完成认证、授权和计费。设备端与RADIUS服务器之间可以采用PAP或者CHAP认证方法。以下以CHAP认证方法为例介绍基本业务流程,如图 3 所示。
图 3 IEEE 802.1X 认证系统的EAP 终结方式业务流程
(1) 用户有上网需求时打开802.1x客户端,输入已经登记过的用户名和密码,发起连接请求(EAPOL-Start报文)。此时,客户端程序将发出请求认证的报文给NAS,开始启动一次认证过程。(2) NAS收到请求认证的数据帧(EAPOL-Start)后,将发出一个请求帧(EAP-Request/Identity报文)要求用户的客户端程序发送输入的用户名。
(3) 客户端程序将用户名信息通过数据帧(EAP-Response/Identity报文)送给NAS。直到这里,认证过程中的前三步和EVP中继方式完全相同。
(4) 接下来, NAS收到客户端送上来的数据帧(EAP-Response/Identity报文)后,没有上传至认证服务器,而是用服务器的一个加密字,并将将此加密字的通过数据帧(EAP-Request/MD5 Challenge报文)交给客户端程序。
(5) 客户端程序收到加密字(EAP-Request/MD5 Challenge报文)后,用该加密字对密码部分进行加密处理,生成EAP-Response/MD5 Challenge报文发送给NAS。
(6) NAS收到加密密码(EAP-Response/MD5 Challenge)后,用CHAP协议对用户名、加密密码、加密字等认证信息重新封装成标准的Radius报文(RADIUS Access-Requeset报文) ,送给认证服务器进行处理。
(7) 认证服务器收到的认证信息(RADIUS Access-Requeset报文)后,根据收到的用户名信息在数据库中查找对应的密码信息,用收到的加密字对密码信息进行加密处理得到自己的加密密码。然后和收到的加密密码信息进行对比,如果相同,则认为该用户为合法用户,反馈认证通过的消息(RADIUS Access-Accept报文)给NAS。
(8) NAS向客户端程序反馈认证通过消息( EAP-Success报文),将端口状态改为授权状态,允许用户通过该端口访问网络。
(9) 客户端可以发送EAPOL-Logoff报文给NAS,主动终止已认证状态,交换机将端口状态从授权状态改变成未授权状态。
两种认证方式比较:
EAP中继方式与EAP终结方式的认证流程十分类似,不同之处主要在于加密字的生成处理及传递方式。在EAP中继方式中,用来对用户口令信息进行加密处理的随机加密字由认证服务器生成,交换机只是负责将EAP报文透传认证服务器,整个认证处理都由认证服务器来完成。而在EAP终结方式中,用来对用户密码信息进行加密处理的随机加密字由NAS生成,NAS会把用户名、随机加密字和客户端加密后的密码信息一起送给认证服务器,进行相关的认证处理。
优缺点:
EAP中继方式优点是NAS设备处理更简单,支持更多的认证方式,缺点则是认证服务器必须支持EAP;而EAP终结方式的优点是认证服务器无需升级,现有的Radius服务器可以继续使用,缺点是NAS设备处理更复杂。
若为了兼容Radius服务器,节省用户投资,建议NAS选择EAP终结方式。
3.3.认证设备
认证设备为交换机,设备需要支持Radius协议,客户端接入到认证设备一端,认证设备另一端接Radius服务器。
3.3.1设备网络认证选择
不认证:信任用户,无需任何认证,无网络安全需求时使用。
本地认证:将用户信息(用户名,密码,属性)配置在接入服务器上(Switch)。本地认证优点是速度快,运营成本低,但存储信息量受限制。
只在交换机本地上完成认证,而不需要经过Radius服务器,这种认证方式一般用于备用方案,以交换机本地配置的认证用户名和密码进行认证,这样可以保证当Radius Server宕机时,不至于整个网络都无法使用。
远端认证:通过协议进行远端认证。
客户端先通过8021.x协议与交换机通信,交换机通过MD5加密将用户名和密码通过EAP中继/终结方式转送给Radius服务器进行认证,Radius返回认证结果给交换机,开放交换机端口。
3.3.2设备接入控制方式
基于端口:
当采用基于端口的接入控制方式时,只要该端口下的第一个用户认证成功后,其它接入用户无须认证就可使用网络资源,但是当第一个用户下线后,其它用户也会被拒绝使用网络。
基于端口的认证方式下,一旦有一个用户通过认证,端口就处于打开状态,任何其他用户都可以通过该端口访问网络,这对无线接入访问点而言是足够的,因为一个用户占用一个信道。但在电信接入和学校等环境中,以端口为对象的控制粒度难以满足安全要求,基于MAC地址逻辑端口控制势在必行
基于MAC地址:
基于MAC的认证方式下,H3C公司的实现是通过在MAC表项中添加/删除用户主机MAC的方式来实现的,通过认证的用户MAC将被添加到MAC表项中,这样用户就具备权限访问网络了。反之,没有通过认证的用户主机MAC是不会出现在MAC表项中的,因此就没有访问网络的权限。
3.3.3 设备认证方式
CHAP认证方式:
- 当交换机上配置了user-name-format with-domain,不管用户输入的是否带后缀,交换机都会处理成带后缀的用户名。如果用户输入test,交换机上传到服务器的是 [email protected](domain default enable aabbcc.net),若没有设置domain default,交换机默认domain 为system,交换机当成是[email protected],认为是local-user,直接在本机上认证。
- 当交换机上配置了user-name-format without-domain,论客户端发起认证时用户名后面是否有后缀,交换机在认证或计费请求报文中username属性中都不带域名后缀。
EAP认证方式:
对于EAP方式的话,由于设备是实行EAP透传,不对用户名和其后缀域名进行改动。分析和上面一致。差别就是上传到3A的username是带域名还是不带域名是由认证输入来决定(即用户输入),而不再是设备。
H3C交换机默认采用chap认证方式。
注:交换机根据域名查找其对应的配置的Radius scheme。
3.4认证服务器
认证服务器接入在交换机的另外一端,为 RADIUS 客户端发送的所有访问请求提供中心身份验证和授权服务。当用户通过认证后,认证服务器会把用户的相关信息传递给NAS,由NAS构建动态的访问控制列表。
3.4.1服务器端认证协议
AAA是认证(Authentication)、授权(Authorization)和计费(Accounting)的缩写,它是运行于NAS(网络访问服务器)上的客户端程序。提供了一个用来对认证、授权和计费这三种安全功能进行配置的一致性框架,实际上是对网络安全的一种管理。这里的网络安全主要指访问控制。包括哪些用户可以访问网络服务器;具有访问权的用户可以得到哪些服务;以及如何对正在使用网络资源的用户进行计费网络认证方式。
常用的AAA协议是Radius协议。
3.4.2认证服务器选择
LDAP服务器:
LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,它是基于X.500标准的,主要用于统一认证服务器。
比如要使用samba做文件共享,在windows中访问共享文件是需要输入用户名密码,验证通过后才可以读或者写文件。在未配置ldap服务器以前,samba用户信息在本地保存,也就是说如果有多个samba服务器则需要在多台机器上重复建立认证账户信息,管理不方便。建立ldap后就可以将需要认证的用户全部放到ldap服务器上,这样就可以避免重复建立samba的认证账户,方便统一管理账户信息
目录服务,给予不同的用户不同的访问权限,LDAP的支持,因为他们根本不用考虑另一端(客户端或服务端)是怎么样的,LDAP服务器安装起来很简单,也容易维护和优化。
Radius服务器:
Radius是一种专门的认证协议,支持多样的认证方式。除了最常见的pap,chap等,还支持EAP(扩展认证协议),这是LDAP协议中没有的。
服务器选择:
LDAP是一种简化了的数据库,而Radius则提供多样的认证方式。
目前的电信网络成熟认证方案基本802.1x+Radius+LADP,LDAP作为统一用户名和密码,不单独做认证功能。根据实际的需求和方案的成熟性我们选择Radius作为认证服务器。
3.4.3 RADIUS网络安全
RADIUS协议的加密是使用MD5加密算法进行的,在RADIUS的客户端(NAS)和服务器端(RADIUS Server)保存了一个**(key),RADIUS协议利用这个**使用MD5算法对RADIUS中的数据进行加密处理。**不会在网络上传送。
RADIUS的加密主要体现在以下两方面:
包加密:
在RADIUS包中,有16字节的验证字(authenticator)用于对包进行签名,收到RADIUS包的一方要查看该签名的正确性。如果包的签名不正确,那么该包将被丢弃,对包进行签名时使用的也是MD5算法(利用**),没有**的人是不能构造出该签名的。
口令加密:
在认证用户时,用户的口令在NAS和RADIUS Server之间不会以明文方式传送,而是使用了MD5算法对口令进行加密。没有**的人是无法正确加密口令的,也无法正确地对加密过的口令进行解密。
口令加密与口令验证过程:
例如CHAP(挑战握手认证协议),它提供对用户口令进行加密的机制。
当用户请求上网时,NAS产生一个16字节的随机码给用户(同时还有一个ID号,本地路由器的Host name)。用户端得到这个包后使用自己独有的设备或软件客户端将CHAP ID、用户密码(口令字)用MD5算法对该随机码进行加密生成一个Secret Password,随同用户名user name一并传给NAS。
NAS把传回来的user name和Secret Password分别作为用户名和密码,并把原来的16字节随机码以及CHAP ID传给RADIUS服务器。RADIUS根据用户名在服务器端查找数据库,得到和用户端进行加密所用的一样的**,用MD5算法对CHAP ID,**和传来的16字节的随机码进行加密,将其结果与传来的Password作比较,如果相匹配,服务器送回一个接入允许数据包,否则送回一个接入拒绝数据包。