在 EdgeOS 上部署 FreeRadius

由于众所周知的我国特色软件“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

参考文献:

darconeous: Getting FreeRadius set up on EdgeRouter

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据