注意看,是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的日志啊,有日志就好判断了。