注意看,是 Radius,不是 Redis
通常来说,我们的无线网络一般是使用 WPA2-Personal 保护的,但是如果能够使用 802.1x,每位用户输入自己的用户名密码,类似某些企业、学校那种认证方式,岂不是很好玩?
当然了,咱只是为了好玩…… 好像并没什么卵用的样子
前置条件
需要有一台支持 WPA2-Enterprise 的路由器
包括但不限于 Padavan 等第三方固件。某些路由器的官方固件也是支持的。
比如,在这款 TP-LINK 固件中无线安全的设置下我们可以看到这个:
Padavan 固件中可以看到这些
一台服务器
无论这台服务器是在内网的,还是在外网(比如说腾讯云的也可以)的都可以,只要能和路由器互相通信,并且拥有一个固定的 IP 即可。
当然了,我这么穷,肯定是拿树莓派做 Radius 服务器啦。如果想拿 Padavan 自身做 Radius 服务器…… 嗯~ o( ̄▽ ̄)o 这个还是算了吧,交叉编译太麻烦,性能也有点太差劲呢。
当然了,这台服务器是要装好一个 Linux 发行版的。方便起见,这里我用的是 Ubuntu Mate 16.04,IP 地址为 192.168.7.193. 当然了,我已经在 Padavan 中绑定了这个 IP,这样就不会因为种种原因导致分配了其他的 IP 地址啦。
小提示:固定 IP 分配方法
高级配置 - 内部网络 - DHCP 服务器,最下方的手动指定 IP 的 DHCP 列表。
其他固件可以参考类似条目或者 IP 与 MAC 绑定等。
准备 Radius 服务器
既然要使用 WPA2-Enterprise,咱就要有 Radius 服务器来提供认证。这里咱就选择 freeRadius 啦。
所以就是编译编译咯。以 Ubuntu、freeRadius 3.0.x 为例:
- sudo apt update
- sudo apt install libtalloc-dev libssl-dev build-essential
- wget ftp://ftp.freeradius.org/pub/freeradius/freeradius-server-3.0.17.tar.gz
- tar xf freeradius-server-3.0.17.tar.gz && rm freeradius-server-3.0.17.tar.gz
- cd freeradius-server-3.0.17
- ./configure
- make -j4 && sudo make install
在最后一步make install
时,由于树莓派这孱弱的性能,生成 DH 密钥花了很长时间(超过半小时哦)
修改配置
经过漫长的编译之后,如果确认编译成功的话,那咱们就开始配置吧。
以 root 权限执行如下命令开启调试模式:
- sudo radiusd -X
不出意外的话你会看到这样的报错:
Debugger not attached Refusing to start with libssl version OpenSSL 1.0.2g 1 Mar 2016 0x1000207f (1.0.2g release) (in range 1.0.2 release - 1.0.2h rele) Security advisory CVE-2016-6304 (OCSP status request extension) For more information see https://www.openssl.org/news/secadv/20160922.txt Once you have verified libssl has been correctly patched, set security.allow_vulnerable_openssl = 'CVE-2016-6304'
要么更新 OpenSSL 到 1.0.2h 之后的,要么…… 禁用这个检查呗。鉴于 OpenSSL 实在是太基础的东西,怕更新出乱子,还是禁用吧
- sudo vim /usr/local/etc/raddb/radiusd.conf
找到allow_vulnerable_openssl = no
,把 no 改成 yes
此时再运行sudo radius -X
,就应该能看到 Ready to process requests 字样了。
添加认证信息
我们需要配置两个认证信息,一个是路由器连接到 Radius 的认证信息,一个是客户用于连接到热点的信息。
- sudo vim /usr/local/etc/raddb/clients.conf
在文件末尾添加如下信息:
- client new {
- ipaddr = 192.168.7.1
- secret = pi.lan
- }
其中 IP 地址是路由器的 IP 地址,secret 是设置的密码。
- sudo vim /usr/local/etc/raddb/mods-config/files/authorize
在文件的开头(或者找到取消注释)添加如下信息:
- bob Cleartext-Password := "hello"
- Reply-Message := "Hello, %{User-Name}"
这行配置的意思是,用户名为 bob,密码为 hello
保存退出,再次运行sudo radiusd -X
另开一个窗口,运行如下命令:
- radtest bob hello 127.0.0.1 0 test
- ing123
如果出现如下图所示的 Access-Accept 那么就是配置成功了
配置路由器
在路由器中找到对应的 WPA2-Enterprise 的配置,大概如下设置:
之后保存即可
客户端连接
之后拿起你的手机,找到刚刚的热点,会发现已经变成 802.1x 认证了,输入用户名 bob,密码 hello,就可以成功连接啦。
注意事项
这只是一个非常简单的基础配置教程,可能存在一些不安全的因素。所以以后说不定出系列呗?比如说用数据库,提升安全性……?
更多详情,还是看下面的参考资料吧
参考资料
https://wiki.freeradius.org/building/Home
https://freeradius.org/documentation/
https://freeradius.org/doc/getting_started.html
http://networkradius.com/doc/FreeRADIUS%20Technical%20Guide.pdf
https://depthsecurity.com/blog/when-802-1x-peap-eap-ttls-is-worse-than-no-wireless-security
你可以检查下路由器的设置。
然后检查下路由器真的连接上了 radius 服务器吗
然后再看看是不是配置的时候用户名密码错了(这个文件
/usr/local/etc/raddb/mods-config/files/authorize
)还有就是,贴个 radius 的日志啊,有日志就好判断了。