8021x认证以及portal认证的参考资料

最近几个月一直在阅读和认证相关的东西,到如今,也基本上将认证的流程摸得比较清楚了,所以在这里写一篇文章,记录一下自己的心得,同时也给希望了解这些认证的同学一些参考资料。(说实话,在没有别人的帮助下,自己一个人去琢磨各种代码是很痛苦的一件事情,我就是这么过来的。)

认证的本质

简单一点来说,所谓认证,指的是控制终端(sta)的访问权限,在sta没有通过认证的情况下,不让其访问网络资源,只有当sta通过了认证的情况下,才放通其访问权限。
因此,认证的程序一般是跑在交换机,ap,或者网关上的。怎么样来控制sta的访问权限,方法多的是,在通用的linux上面,可以用iptables,在交换机上面,可以通过acl规则来控制,当然,你也可以写个驱动,自己来抓包什么的。
关于怎么控制sta的访问权限,这不是我们的重点,我们也只需要将相关的控制抽象成一个函数,比如:

bool enale_sta_access(u8 *mac, bool enable);

即可。

认证更为复杂的点在于如何判断是否放通这个sta的流量。

现在比较常用的判断方法主要有两个,一个是portal认证,另外一个是8021x认证。
我们连接一个陌生的开放的wifi的时候,往往一打开浏览器就会被重定向到一个认证的网页,这就是portal认证,8021x的话,更直观一点就是,连接到了wifi之后,你还需要输入用户名和密码,才能上网。

不光是无线,通过以太网连接的有线也可以通过这两种方式来控制终端流量。

8021x认证

当然,首先最为官方的资料是rfc3748以及rfc 437以及IEEE Std 802.1X-2004/802.1X-2010。
你要是一上来就能啃下上面的几个文档,我敬你是条汉子。

事实上,上面的几个rfc文档相当晦涩难懂。我的建议是,如果你实在感到困惑,可以去翻一翻上面的文档。

8021x的实现最出名的,当属hostapd,作者写这篇文章的时候,hostapd已经升级到了2.8版本了,你要是直接翻阅2.6版本的代码的话,估计有股想死的冲动。对于hostapd来说,做为8021x认证的服务端只是其中非常小的一部分功能而已。它的代码来还杂糅了radius server,加密,解密等功能。代码写得非常长,而且可供参考的资料比较少。

我个人并不是很推荐大家直接从hostapd 2.x开始看,我推荐大家直接从hostapd的最初版本开始读,也就是hostapd 0.0.1版本,这个版本代码量并不是很多,不到1w行,但是麻雀虽小,五脏俱全,它完整的实现了8021x服务端的相关功能(不包含radius serv相关功能。),而且没有其他太多冗余的功能,而且8021x的几个状态机的实现和最新版本的区别并不是很大,可以说,是最值得研究的一版实现。但是很遗憾,这个版本在大多数网卡上都跑不起来,也就是说,可能你没有办法通过调试的方法来追踪代码了。

hostapd最难以理解的,就是那几个状态机了,但是其实不难,我这里推荐几份个人认为比较好的资料,第一份是一篇硕士论文:
802.1X协议研究与实现 叶敏 西南交通大学
好歹是一篇毕业论文,里面介绍8021x的知识还是相当到位的,不光服务端的几个状态机,客户端的几个状态机都讲的比较详细和清楚。我就是读了这篇论文,然后跟着论文的思路去读实现,发现如出一辙。强烈推荐。

接下来是一本书的相关章节:
深入理解android:wi-fi、nfc和gps卷
可以只关注里面关于eapol的相关章节。

接下来是一些博文:
https://blog.csdn.net/lee244868149/column/info/wlan

至于各种报文相关的资料,如eapol报文,可以自己去搜索。

读完了0.0.1的源码,可以尝试去读一下最新的实现,你会发现,这东西其实都是严格遵循rfc的,实现大同小异。
上面的资料以及hostapd 0.0.1版本源码的阅读笔记我都放到了这个链接里面:
链接: https://pan.baidu.com/s/139T2VbFA8SiXyyqMdteVMw 提取码: e1ts
上面链接如果失效的话,可以在这里下载:
https://download.csdn.net/download/lishuhuakai/11349012

portal认证

这个,我个人推荐一份开源代码供参考,那就是wifidog,这份实现并不是很复杂,但是说明了问题。
在读wifidog的源码之前,简易可以先了解一下iptables,下面是比较好的参考资料:
http://www.zsythink.net/archives/category/%e8%bf%90%e7%bb%b4%e7%9b%b8%e5%85%b3/iptables/

然后更多相关资料可以参考这里:
http://www.wifidog.pro/

总体来说,这份代码比较简单,真正应用到实际生产生活的,应该都是在这份代码的基础上魔改的。

这份代码比较糟心的一点是,原来的几个开源portal任务服务器的代码全部都失效了,可能你读代码的时候,会面临着没有portal认证服务器可用的地步。

wifidog源代码的阅读笔记我都放在了下面的连接之中:
链接: https://pan.baidu.com/s/1X8o6rJ9qamUEyvVcyf0pzA 提取码: sd82

祝君好运。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值