1.什么是802.1x?
802.1x 协议起源于802.11 协议,后者是标准的无线局域网协议,802.1x 协议的主要目的是为了解决无线局域网用户的接入认证问题。现在已经开始被应用于一般的有线LAN 的接入(微软的Windows XP,以及Cisco,华为3com,北电,港湾等厂商的设备已经开始支持802.1X 协议)。在 802.1x 出现之前,企业网上有线LAN 应用都没有直接控制到端口的方法。也不需要控制到端口。但是随着无线LAN 的应用以及LAN 接入在电信网上大规模开展,有必要对
端口加以控制,以实现用户级的接入控制。802.1x 就是IEEE 为了解决基于端口的接入控制(Port-Based Access Control)而定义的一个标准。
2. 802.1x的认证体系分为三部分:
a.客户端(PC机或是网络设备)
b.认证系统(多为具有支持802.1x协议的交换机)
c.认证服务器(例如radius认证服务器)
这里我简单介绍一下这三部分:
客户端呢,是一个需要接入LAN 及享受switch 提供服务的设备(如PC 机),客户端需要支持EAPOL 协议,客户端必须运行802.1X 客户端软件,如:802.1X-complain,Microsoft Windows XP,H3C802.1X。这里我主要介绍linux下的802.1x的认证,我用的是wpa_supplicant软件。
认证系统,多为交换机Switch (边缘交换机或无线接入设备),它是—根据客户的认证状态控制物理接入的设备,switch 在客户和认证服务器间充当代理角色(proxy)。switch 与client间通过EAPOL 协议进行通讯,switch 与认证服务器间通过EAPoRadius 或EAP 承载在其他高层协议上,以便穿越复杂的网络到达 Authentication Server (EAP Relay);switch 要求客户端提供identity,接收到后将EAP 报文承载在Radius 格式的报文中,再发送到认证服务器,返回等同; switch 根据认证结果控制端口是否可用;
需要指出的是:我们的802.1x 协议在设备内终结并转换成标准的RADIUS 协议报文,加密算法采用PPP 的CHAP 认证算法,所有支持PPP CHAP 认证算法的认证计费服务器都可以与我们对接成功。
认证服务器是对客户进行实际认证,认证服务器核实客户的identity,通知swtich 是否允许客户端访问LAN 和交换机提供的服务。Authentication Sever 接受 Authenticator 传递过来的认证需求,认证完成后将认证结果下发给 Authenticator,完成对端口的管理。
3. 802.1x认证过程如下:
1).首先我们的客户端向认证系统(我这里是交换机)发送一个开始认证的请求报文。
2).然后我们的交换机回应客户端,要求客户端发来用户名,即identity。
3).交换机收到客户端发来的用户信息后,开始将其封装成radius request报文,发给认证服务器。
4).认证服务器收到消息后,再次发送一个验证请求给认证系统,要求客户端发送md5加密后的密码,完成验证。
5).认证系统收到后,反馈给客户端。
6).客户端收到请求后,将自己的密码和收到的md5-challenge做MD5算法后回应给认证系统。
7).认证系统收到信息后将用户名和密码一起封装发给认证服务器。
8).认证服务器完成最后的验证。
具体是:RADIUS 服务器根据用户信息,做MD5 算法,判断用户是否合法,然后回应认证成功/失败报文到接入设备。如果成功,携带协商参数,以及用户的相关业务属性给用户授权。如果认证失败,则流程到此结束。
4.
那么在linux下我们如何完成这么复杂的流程呢?
两种方法。
第一种:
很简单,利用wpa_supplicant软件,你可以使用yum来安装它。我们只需要简单配置一下它的配置文件(/etc/wpa_supplicant/wpa_supplicant.conf),然后运行相应的命令来启动它就可以。
具体如下:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
ap_scan=0
network={
key_mgmt=IEEE8021X
eap=MD5
identity="user"
password="password"
eapol_flags=0
}
注意:用实际的用户名和密码替换 user 和password。
保存后,执行如下命令:
[root@localhost ~]#wpa_supplicant -c wired.conf –i eth0 –b br0 –D wired
我是桥接网络,所以有桥。没有的桥的情况还没测试。
该命令的输出大致如下:
Associated with 01:80:c2:00:00:03
CTRL-EVENT-EAP-STARTED EAP authentication started
CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=4
CTRL-EVENT-EAP-METHOD EAP vendor 0 method 4 (MD5) selected
CTRL-EVENT-EAP-SUCCESS EAP authentication completed successfully
CTRL-EVENT-CONNECTED - Connection to 01:80:c2:00:00:03 completed (auth) [id=0 id_str=]
如果br0上已经事先配好了静态地址,应该不再需要额外配置。
如果采用dhcp,用命令
dhclient br0
可以用ping命令检查网络是否已通。
这样就完成了802.1x认证,你就可以上网啦,如有错误,欢迎指正。本文部分参考其他文章,其出处已不明,敬请理解。
第二种请看下文,待续。。。
阅读(2529) | 评论(0) | 转发(0) |