由于众所周知的我国特色软件“WiFi万能钥匙”,即使WAP2加密关闭WPS也无法避免自家的无线接入点被盗用(只要有任何一个你家的亲戚朋友使用该软件就会在他向你询问并连接到你的无线接入点的时候就会上传你都密码到服务器上,因此即使你处心积虑的设置了一个20位随机密码也无济于事),将加密方式设置为802.1x PEAP 方式可以一定程度避免这一问题(虽然不及802.1x TLS)。
本文翻译并修改自这是他的原文链接,据他文内所述仅对于功能进行实现,不保证安全性能。
,感谢他提供的方法
我的测试环境为UBNT EdgeRouter-X,EdgeOS v1.9.0
Step 1: 添加debian软件包和security软件包
configure
set system package repository wheezy components 'main contrib non-free'
set system package repository wheezy distribution wheezy
set system package repository wheezy url http://http.us.debian.org/debian
set system package repository wheezy-security components main
set system package repository wheezy-security distribution wheezy/updates
set system package repository wheezy-security url http://security.debian.org
commit
save
exit
Step 2: 更新本地缓存
sudo apt-get update
Step 3: 安装 FreeRadius
sudo apt-get -y install freeradius
Step 4: 将 /etc/freeradius/
目录移至/config/freeradius
sudo mv /etc/freeradius /config/freeradius
sudo ln -s /config/freeradius /etc/freeradius
Step 5: 设置证书
我是用ER-X内置的证书和私钥作为FreeRadius的证书,当然你也上传并可以使用其他证书和私钥。
sudo cp /etc/ssl/private/ssl-cert-snakeoil.key /config/freeradius/certs/server.key
sudo cp /etc/ssl/certs/ssl-cert-snakeoil.pem /config/freeradius/certs/server.pem
sudo cp /etc/ssl/certs/ssl-cert-snakeoil.pem /config/freeradius/certs/ca.pem
Step 6: 使用OpenSSL为FreeRadius生成Diffie–Hellman密钥交换参数
sudo openssl dhparam -out /config/freeradius/certs/dh 2048
注:据
原文所述生成需要很长时间可以在本地生成或者直接用他提供的文件,我试了一下不算快但是可以接受。Step 7: 设置/config/freeradius/radiusd.conf
默认配置能跑起来,监听地址和端口在这改具体的参考
libinbin_1014的专栏:RSS订阅Freeradius配置文件radiusd.conf详解
Step 8: 设置 /config/freeradius/clients.conf
首先需要生成一个强密码可以使用darconeous提供的脚本当然随便哪个生成器都可以搞定这个事情了。
编辑/config/freeradius/clients.conf
要注意需要使用root权限,大概100行的位置修改本地连接的密钥
secret = JK9Y-KYNH-HCPX-4MWQ-QXQ7
然后还需要在最后添加一个局域网内访问的密钥例如:
client 192.168.0.0/24 {
secret = JK9Y-KYNH-HCPX-4MWQ-QXQ7
shortname = local-private-network
}
当然这里面的地址和掩码也要根据自己需要修改成你需要在AP上使用的网段
Step 9:在/config/freeradius/users
内添加用户
可以在文件末尾添加多个用户,以用户名bob
密码hello
为例
“bob” Cleartext-Password := "hello"
其他的配置可以参考配置文件内的样例
Step 10:以调试模式启动FreeRadius
sudo /usr/sbin/freeradius -X
原文中
直接使用启动脚本运行FreeRadius,看不到调试信息还得调log才能看见问题在哪Step 11: 测试FreeRadius服务
使用radtest命令可以测试设置是否有问题以用户名bob
密码hello
服务器密钥JK9Y-KYNH-HCPX-4MWQ-QXQ7
为例
radtest bob hello localhost 0 JK9Y-KYNH-HCPX-4MWQ-QXQ7
测试成功后就可以启动FreeRadius服务了
sudo /etc/init.d/freeradius start
当然你也可以停止和重启服务
停止服务:sudo /etc/init.d/freeradius stop
重启服务:sudo /etc/init.d/freeradius restart
Step 12: 确保FreeRADIUS在更新后被重新安装
至此已经配置完毕,但是如果你安装了路由器的固件更新,FreeRadius将停止工作。 以下技巧有助于在更新后重新安装FreeRadius。
创建一个名为 /config/scripts/post-config.d/freeradius.sh
的Bash,内容如下:
#!/bin/bash die() { exit 1 } [ -e /etc/freeradius ] || { apt-get update || die apt-get install -y freeradius rm -r /etc/freeradius || die ln -s /config/freeradius /etc/freeradius || die chown -R freerad:freerad /config/freeradius || die sudo /etc/init.d/freeradius start } [ -d /var/log/freeradius ] || { mkdir -p /var/log/freeradius || die chown -R freerad:freerad /var/log/freeradius || die } [ -d /var/run/freeradius ] || { mkdir -p /var/run/freeradius || die chown -R freerad:freerad /var/run/freeradius || die }
Tips:在VI中可以使用:set noautoindent
关掉自动缩进
不要忘记修改文件权限:
sudo chmod +x /config/scripts/post-config.d/freeradius.sh