Linux环境下Web/Portal计费网关自动登录/下线的研究
2017-04-27刘越扬胥薇
刘越扬 胥薇
摘要:Web/Portal协议相较于第三方認证协议议具有无需客户端的优点。然而运行在校园网上的众多智能设备并不支持这种协议,如需重新划分网段将造成大量人力物力的损耗。该文所探讨利用嵌入式设备Linux的cURL扩展实现校园网Web/Portal认证自动上下线的功能。
关键词:Web/Porta;认证;Linux;cURL;智能硬件
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)29-0052-03
1研究背景
为了满足广大学生日益增长的网络需求,提高校园网的管理效率,我校联合中国移动对我校的校园网进行了升级,其认证由原先的802.1X认证变更为Web/Portal认证,并采取按时计费的方法。采用Web/Portal认证的计费网关无需安装客户端软件,减轻了网络管理员的工作负担,但每次连接网络均需手动输入用户名和密码,且下线时需登录指定页面进行下线操作,给众多校园网内不具备浏览器功能的智能硬件带来了网络兼容性挑战。
2 Web/Portal认证计费网关技术分析
2.1认证过程分析
1)用户从DHCP Server获取一个合法的IP地址。
2)用户在浏览器中访问任意网页,BAS设备得知用户没有认证后,修改报文的IP地址将用户定向至认证页面。用户进行登录操作。
3)BAS设备获取了用户名,密码和用户机器的IP地址后,首先使用IP地址对用户进行合法性检查。如果该用户是一个合法的未认证用户,则使用获取的用户名和密码到AAAServer进行认证。
4)BAS根据AAA Server认证的结果,修改该用户的ACL策略。该用户可以开始正常地访问网络。认证结束,开始计费。
5)用户需要离开网络时,需要再次访问Portal Server,Portal Server通过BAS设备得知用户已经通过认证,则向用户提供退出登录页面。
6)用户通过退出登录页面退出网络后,BAS设备修改该用户的ACL策略,将该用户恢复为未认证状态,计费结束。
结论:如果客户端能够自主向BAS设备发送用户信息,即可自动完成认证。
2.2用户端在线检测分析
Web/Portal认证通常使用ARP探测或心跳包的方法检测用户是否在线
1)ARP探测
用户端计算机响应来自BAS设备的ARP请求报文,如果BAS设备连续若干次没有收到来自客户端的ARP应答报文,则判定离线。
2)心跳报文
在用户认证通过后,推送给用户一个连接保持页面。连接保持页面中嵌入Java Applet,定期向BAS设备发送特定心跳报文表示该用户在线
结论:客户端如能定期向BAS发送报文,BAS即判定该客户端在线。
3实现环境
1)采用Web/Portal认证的计费网关
21运行Linux系统的智能硬件
OpenWrt是一个嵌入式设备的Linux发行版,主要应用于各种路由器和家庭网关等,具有很强的通用性。选择OpenWrt系统作为运行平台,可以最大限度地利用其支持众多网络设备的特点,而无需重新编写驱动程序。本文选择市面上常见的路由器TP-LINK WR720为例,模拟具有联网功能的智能硬件。
3)cURL软件包
cURL(CommandLine Uniform Resource Loeator)是利用URL语法在命令行方式下工作的开源文件传输工具。它被广泛应用在Unix、Linux中。cURL可以处理各种情况的认证页面,例如:用户名/密码认证方式的页面和使用COOKIES登录的界面等。
4实现过程
4.1给路由器刷入OpenWrt
访问OpenWrt的下载页面,这里选择目前最新的ChaosCalmer版本,(本文对应版本为openwrt-15.05-ar71xx-generie-tl-wr720n-v3-squashfs-faetory.bin)进人路由器管理界面,然后进人固件更新选项,选择下载的文件,然后点击更新。
绝大多数预先编译好的OpenWrt不支持cURL命令,为了使OpenWrt支持cURL命令需要先行安装cURL软件包。使用winsep登录路由器,将从OpenWrt官网下载得到的安装包:lib-安装软件包:
opkg install libpolarssl.ipk
opkg install libcurl.ipk
opkg install curl.ipk
至此cURL安装完成,可利用cURL执行有关命令
4.2登录
打开网关登录界面,通过Chmme的调试模式寻找发送的http请求。填入手机号,密码,在Network选项卡中查找登录接口请求。得到登录请求接口http://10.30.45.4:8080/seffservice(图1)
这里为内网,登录账户密码均为明文传输且未进行加密。
为了提高成功率可以先使用Postman进行模拟登录测试。
Postman是一款功能强大的网页调试与发送网页HTFP请求的Chrome插件,该工具不仅可以调试简单的CSS、HTML、脚本等网页基本信息,它还可以发送几乎所有类型的HTTP请求。
先将地址填入地址栏,方式选择POST。
在bodv选项卡中填入需要填充的项目。
最后点击Send即可提交请求,然后在下面查看请求结果,并且可以以Pretty、Raw、Preview三种方式查看。
测试成功后按要求編写cURL命令
4.3保持在线
经过对登录成功后的页面源代码分析,并未发现相关的Java Applet,因而断定采用的是ARP探测。由于ARP协议是无状态的,任何主机即使在没有请求的时候也可以做出应答,通常情况下可以考虑通过C语言编写定时生成发送ARP包的程序,但路由器的CPU'陛能较弱,再安装C语言运行环境容易崩溃,这里给出一种逆向解决的方案——每隔一段时间向网关发送ARP请求,经过测试,此方案可以保证用户的在线状态。
以Linux自有ARPING命令实现:
[root@hnlinux~]#arping-f 10.30.45.4
//向指定IP地址发送ARP请求,收到第一个数据包后退出
4.4定时下线
该型计费网关是在在用户提交下线申请后引导用户一个网站完成下线操作,其提交方式为GET。例如
http://10.3.4.5/eportal/webGate.domethod=goToLogout
利用cURL命令完成
Linux下可用Crontab命令完成定时操作,
OpenWrt Crontab命令格式如下:
如每天早327点30分断开网络的命令:
5总结
相较于传统PPPoE/802.1X认证,Web/Ponal操作简单,管理便捷,既能应对校园网络接人数量众多的问题,也能保障校园网接入的安全性及网络资源使用合理性。且客户无需安装各种饱受诟病的第三方拨号软件,主流操作系统打开浏览器即可完成认证工作。但Web/Portal网关每次使用均需人工登录,且使用完成后需人工下线,给一些依托于校园网运行却没有浏览器功能的智能硬件(如网络摄像机,智能门禁)的使用带来了不少兼容性问题。如直接升级硬件将会带来较大的资金损失和环境污染。考虑到目前众多智能设备均运行经过定制的Linux系统,且cURL的通用性,可移植性,现有低功耗设备只需重新编译少量代码即可支持cURL模拟登录网关,而无需更新硬件,满足了数量众多的IOT设备的需要。cURL对系统资源要求不高,并不会对设备能耗造成较大影响,高度契合IOT设备低功耗,低成本的特点。自动化命令也可以有效减轻设备维保人员的工作强度,从而无需逐一手动设备。但cURL模拟登录网关也存在缺点,由于Web/Portal网关生产厂家众多,且不同的单位使用的Web登录模板,BAS设备TP地址均不相同,登录代码不具备通用性,编写代码前需要进行大量的调试工作,或与网络管理员提前进行好沟通。随着物联网的发展,相关硬件厂商应预留相应的程序接口,提高设备的兼容能力,以应对愈加复杂的网络情况。