为Freeradius3.0配置sql与EAP-TLS

前言

新学期课程开始了,其中有一门神奇的课要求构建一个安全的公司内网接入访问控制系统。第一个要部署的就是中心认证服务器(Authentication Server)。认证服务器选取freeradius的很多,但是相关文档非常稀有且古老。CSDN甚至只能找出几年前关于EAP-TLS的配置文档,实在是让人踩了不少坑。故写下这篇文章,希望对后来者起到作用。

安装

本文假定你已经有了树莓派/远程服务器/虚拟机作为安装平台。要注意的第一个坑就是Windows下的Linux子系统对freeradius极其不友好,会出现无法收到request包的情况,需要配置防火墙(坑1),所以建议不要使用Windows下的Linux子系统进行安装配置。
首先需要安装freeradius最新版本与mysql、openssl。对于debian/ubuntu,直接使用apt安装即可:

sudo su
apt update
apt-get install freeradius freeradius-mysql mysql openssl

配置

Freeradius基础配置

接着需要进行初步配置,确保freeradius可以在本机运行与测试。3.0版本以后的freeradius安装路径改为了/etc/freeradius/3.0/,导致几乎所有搜索到的step-by-step教程都无法直接使用(坑2)。
首先需要修改users文件,加入第一个测试用户,便于进行测试。Freeradius可以使用文本文档或数据库检索用户,测试当然先使用文本文档方式。这里要注意的是,很多文档,甚至官方how-to都会让你修改mods-config/files/authorize文件,但freeradius已经为我们做好了软链接,将其链接到了根目录下的users文件,我们直接修改即可(坑3)

cd /etc/freeradius/3.0/
nano users

此时可以在合适位置添加一行

testing  Cleartext-Password := "password"

这句话的意思是,定义一个用户名为testing,密码为password的用户。当然也可以将文件中的bob解注释,用以测试。
此时你已经可以在本机测试Freeradius了。首先在本终端中执行以下语句:

freeradius -X

若出现Ready to process requests字样,代表服务器启动成功,可以接收认证包。此时打开另一个终端或新建一个ssh连接,执行以下语句:

sudo radtest testing password localhost 0 testing123

这个语句的意思是:向本地服务器发送一个认证请求,账号为testing,密码为password,对称密钥为testing123。若收到Access-Accept包,则代表认证成功,可以进行下一步的配置。
下一步要修改的是位于根目录的clients.conf文件,这个文件定义了每一个可以接受的认证终端与使用的对称密钥,如果认证终端(通常为无线接入点)的ip地址不存在于本文件中,该终端的所有请求都将被拒绝。

nano clients.conf

在适当的位置添加如下语句

client client1 { #client1是认证终端的别名
    ipaddr = 192.168.0.1 #这是认证终端地址,通常为路由器LAN接口地址。
                         #如果想允许整个子网的使用,可以加/子网掩码,如192.168.0.0/24
                        #如果是IPv6网络,可以使用ipv6addr = <IPv6地址>/<子网掩码>
                        #如果网内存在DNS服务器,此处也可以为一个域名
    secret = testing123 #共享对称密钥,可以任意修改,注意在路由器参数也需要修改以匹配
    require_message_authenticator = no #建议为no,旧版本协议设备不支持message authenticator
    #还有一些参数可以修改,详见clients.conf中的注释,此处对于日常使用已经足够 
}

此时我们可以接收来自于192.168.0.1的路由器的认证请求了。对于大多数路由器,只需要将WLAN安全设置改为WPA-EAP/WPA2-EAP/WPA-Enterprise/WPA2-Enterprise,并配置好认证服务器地址与对称密钥就可以了。

TLS模块的配置

现在让我们来转向如何使用Freeradius中的TLS模块以确保传输安全或使用证书完成认证过程。首先要进行的是生成一套测试用证书文件:

cd /etc/freeradius/3.0/certs
make

经过一段时间的密钥生成,一套证书被存在了certs文件夹内,其中如下文件对我们而言具有作用:
ca.pem: 自签发根证书,用于服务器验证客户证书或客户验证服务器证书。
server.pem: 服务器证书
server.key: 服务器私钥,保护密码为whatever
client.p12: PKCSv12编码的个人证书文件,包含了证书,私钥,并由密码“whatever”保护,需要导出并在自有设备上安装。
将client.p12用邮件发送至iPhone设备即可安装,或存储至Android手机也可安装,windows10下直接双击安装即可。
接下来我们需要修改freeradius配置文件使其支持TLS,此时需要编辑mods-enabled/eap(坑4,几乎没有文档指出该文件的位置):

cd /etc/freeradius/3.0/mods-enabled
nano eap

接着修改如下参数(未列出的不修改)

eap{
    default_eap_type=tls  #其实不修改也可以,Freeradius会自己根据请求包调用相应的方法
    
    tls-config tls-common {
        private_key_password = whatever  #服务器私钥密码
        private_key_file = ${certdir}/server.key #也可以为绝对路径,服务器私钥
        certificate_file = ${certdir}/server.pem #也可以为绝对路径,服务器证书
        ca_file = ${cadir}/ca.pem #也可以为绝对路径,CA根证书
        dh_file = ${certdir}/dh #也可以为绝对路径,Diffie-Hellman参数
    }
}

此时,重启freeradius服务器,EAP-TLS/EAP-TTLS已配置成功。

SQL模块的链接

最后一步是链接mysql到Freeradius中。首先需要配置MySQL,为其配置数据库与账号密码:

mysql -uroot
CREATE USER radius IDENTIFIED by 'radpass';
CREATE DATABASE radius;
GRANT all  on radius.* to radius@'localhost' identified by 'radpass';

然后需要导入数据表结构(坑5,数据表结构存放位置改变了):

mysql -uradius -pradpass radius
source /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql

最后修改相关配置文件mods-enabled/sql(坑6,配置文件位置貌似也变了):

cd /etc/freeradius/3.0/mods-enabled
nano sql

修改配置文件如下(未列出的不修改):

sql {
    driver = "rlm_sql_mysql"
    dialect = "mysql"
    server = "localhost"
    port = 3306
    login = "radius"
    password = "radpass"
}

接着重启freeradius服务,如果没有错误信息,说明sql模块加载成功。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容