EAPSIM技术手册Word格式.docx
《EAPSIM技术手册Word格式.docx》由会员分享,可在线阅读,更多相关《EAPSIM技术手册Word格式.docx(12页珍藏版)》请在冰豆网上搜索。
Length
Type
Subtype
Reserved
AttributeField
在上表中表示EAP-SIM协议包的格式。
Code域占据一个字节,代表EAP包类型,其中1代表request类型,2代表response类型,3代表success类型,4代表failure类型。
Identifier域占据一个字节,指代数据包的标识域,方便request包与response包的匹配。
Length域占据两个字节,标识EAP包的总长度。
Type域占据一个字节,此处的值为18。
Subtype域占据一个字节,标识EAP-SIM子类型,其中10表示start类型,11表示challenge类型。
Reserved域占据两个字节,为协议将来的扩展,目前保留,值置为0。
数据包随后的字段为属性域,根据包的类型不同,属性域也有所不同。
3.EAP-SIM的工作原理
客户端可以是手机或是具有SIM卡读卡器的电脑。
首先,客户端通过安全隧道与支持802.1x的无线接入点(AP)取得联系,而后通过WLANAP连接到Radius服务器,Radius服务器支持EAP-SIM认证协议,并且具有GSM/MAP/SS7的数据通道,通过此通道与存储着用户信息的HLR(HomeLocationRegister,归属位置寄存器)进行连接。
从理论上讲,在EAP-SIM的服务器端,需要有Radius服务器和HLR(归属位置寄存器),二者通过GSM/MAP/SS7的数据通道进行连接。
但在本手册中,我们是将HLR和Radius服务器整合为一个整体,即HLR数据库仅仅是Hostapd服务器中的一个文件——hostapd.sim_db,在这个文件中存储着要接入的用户信息。
本实验用到的EAP-SIM认证结构如下图所示:
4.EAP-SIM的认证流程
整个EAP-SIM的认证流程如下所示:
(1).客户端发送EAPOL_Start帧,请求认证接入;
(2).WLANAP发出请求帧,请求客户端发送身份信息;
(3).客户端响应请求,将身份信息发送至AP;
(4).AP将客户端身份信息重新封装成RADIUSAccess-Request帧转发至服务器端;
(5).服务器验证客户端身份,验证合法之后向用户发送EAP-Request/SIM/Start帧,封装在RADIUSAccess-Challenge帧中;
(6).AP提取RADIUSAccess-Challenge帧中的EAP-Request/SIM/Start帧,转发至客户端;
(7).客户端响应请求,将EAP-Response/SIM/Start帧发送至AP;
(8).AP将EAP-Response/SIM/Start帧重新封装成RADIUSAccess-Request帧,转发至服务器端;
(9).服务器根据客户端响应结果,回送EAP-Request/SIM/Challenge帧至AP,此帧封装在RADIUSAccess-Challenge帧中;
(10).AP提取RADIUSAccess-Challenge帧中的EAP-Request/SIM/Challenge帧,转发至客户端;
(11).客户端响应请求,将EAP-Response/SIM/Challenge帧发送至AP;
(12).AP将EAP-Response/SIM/Challenge帧重新封装成RADIUSAccess-Request帧,转发至服务器端;
(13).服务器端认证成功,将EAP-Success帧封装在RADIUSAccess-Accept帧中,发送至AP;
(14).AP提取RADIUSAccess-Accept帧中的EAP-Success帧,转发至客户端.EAP-SIM双向认证结束,认证成功。
二.实验部分
1.搭建EAP-SIM测试环境的需求清单
1、一张sim卡。
无特殊要求,现在通用的sim卡即可。
2、一部支持EAP-SIM认证的手机用作客户端。
例如华为的安卓手机T8830。
售价在800元左右。
或者华为的安卓手机AscendG305T,已通过四川现网测试,具备真正EAP-SIM商用能力。
售价大概在600元左右。
3、一款支持802.1X协议的无线路由器。
目前市面上大部分TP-LINK的路由器均支持。
4、认证服务器。
Linux系统下的hostapd或者freeradius服务器均可。
Hostapd配置比较简单,容易上手。
Freeradius服务器配置难度大,但是功能更强。
2.配置路由器
进入路由器的设置界面。
配置如下:
认证类型使用WPA2。
因为EAP-SIM认证类型是WPA2认证类型的其中一种。
加密算法采用AES。
Radius服务器IP:
设置成radius服务器所在电脑的IP。
Radius端口:
设置成1812。
Radius密码:
这是radius服务器和路由器之间进行通信的密码。
3.radius服务器的安装
使用开源软件hostapd来搭建radius服务器。
1、在hostapd的官方网站http:
//w1.fi/hostapd/获取hostapd的压缩包。
2、将获取到的包解压,进入hostapd。
在终端输入命令:
tarxzvfhostapd-x.y.z.tar.gz
cdhostapd-x.y.z/hostapd
3、复制配置文件
在终端输入命令:
cpdefconfig.config
4、配置.config文件
选取以下配置:
CONFIG_DRIVER_WIRED=y
CONFIG_DRIVER_NONE=y
CONFIG_EAP=y
CONFIG_EAP_MD5=y
CONFIG_EAP_TLS=y
CONFIG_EAP_MSCHAPV2=y
CONFIG_EAP_PEAP=y
CONFIG_EAP_GTC=y
CONFIG_EAP_TTLS=y
CONFIG_EAP_SIM=y
CONFIG_EAP_AKA=y
CONFIG_EAP_PAX=y
CONFIG_EAP_PSK=y
CONFIG_EAP_SAKE=y
CONFIG_EAP_GPSK=y
CONFIG_EAP_GPSK_SHA256=y
CONFIG_EAP_IKEV2=y
CONFIG_EAP_TNC=y
CONFIG_PKCS12=y
CONFIG_RADIUS_SERVER=y
这里需要注意几点:
1)这里我仅仅把hostapd作为一个radiusserver使用,因此.config文件的其它部分都注释掉。
2)编译过程中可能会出现缺乏openssl文件等错误,需要下载编译安装openssl。
5、在终端输入命令make、makeinstall,hostapd安装成功。
4.radius服务器的配置
1、启动radius服务器前需要先对配置文件hostapd.conf进行配置。
在安装目录下找到hostapd.conf文件,进行配置。
主要配置以下内容:
interface=eth0
eap_server=1
eap_user_file=/home/yang/hostapd.eap_user
eap_sim_db=unix:
/tmp/hlr_auc_gw.sock
own_ip_addr=192.168.1.253#用于配置路由器的IP
auth_server_addr=127.0.0.1#radius服务器的地址
auth_server_port=1812#radius服务器的端口
auth_server_shared_secret=secret
radius_server_clients=/home/yang/hostapd.radius_clients#配置客户端的文件路径
radius_server_auth_port=1812
2、配置hostapd.eap_user
将安装目录下的范例文件hostapd.eap_user直接拷来用即可。
3、配置hostapd.radius_clients
允许IP为192.168.1.253的无线路由器使用这个radius服务器,共享密码为yangrenjie:
192.168.1.253yangrenjie
5.编译安装hlr_auc_gw程序
hlr_auc_gw程序用于radius认证服务器和hlr的连接。
同时可以监听客户端发来的请求。
在安装目录下找到hlr_auc_gw.c文件,在终端输入make、makeinstall,编译并安装。
6.模拟测试
1、在手机端用hellosim.apk这个软件读出sim卡的IMIS、Kc、SRES、Rand这个四个值。
将这四个值以一定的格式写入到hostapd安装目录下的hostapd.sim_db这个文件中。
此文件相当于HLR。
2、在hostapd安装目录下,启动终端。
输入命令:
sudo./hlr_auc_gw–ghostapd.sim_db
该命令用于服务器和hlr连接,并监听客户端的请求。
3、启动另一个终端。
sudohostapdhostapd.conf–dd
本命令用于启动radius服务器。
4、用手机搜寻测试用的路由器SSID。
安全类型为802.1X。
图中SSID为fengfengfeng的路由器,就是我们测试用的路由器。
5、连接的时候对手机进行设置,将验证类型改为EAP-SIM方式。
6、进行连接
监听端显示信息如下所示:
服务器端显示信息如下所示:
最后,实验结果说明,手机无需输入用户名和密码,只要利用SIM卡的信息即可通过认证,与服务器连接。