安装
- ubuntu 18.04下直接
apt install freeradius radiusd-livingston
即可。前者是服务端,后者是客户端,方便测试。在完成此文时,apt下载的默认版本为3.0.16,官方最新版本是3.0.19,如果想使用最新版本,可以选择编译安装(wget ftp://ftp.freeradius.org/pub/freeradius/freeradius-server-3.0.19.tar.gz
)。对于ubuntu 18.04之前的版本建议编译安装。
坑:不建议使用apt安装,默认安装没有rlm_sql_mysql.so文件,无法使用mysql。建议编译安装,按照需要安装需要的依赖。 - 安装lnmp环境以备后用,这里教程太多就不赘述了。
- 编译安装需要先安装依赖,比如
libtalloc-dev
,mysql依赖libmysqlclient-dev
,其他依赖按照需求安装即可。
apt install libtalloc-dev libmysqlclient-dev
注:编译安装的根目录为/usr/local/etc/raddb,下面的例子都是apt安装的,需要将/etc/freeradius/3.0 替换成 /usr/local/etc/raddb。服务的名称也变成了radiusd。编译安装不会添加服务,需要自己处理开机启动。
配置
客户端配置
在/etc/freeradius/3.0/clients.conf
保存了客户端白名单,需要在其他电脑发起鉴权时,要先在这里添加授权。具体配置详情可以直接看文件注释,默认只允许本地访问,密码为testing123
。
存文件的帐号模块
在/etc/freeradius/3.0/mods-config/files/authorize
保存了帐号信息,可以在第一行添加testing Cleartext-Password := "password"
作为测试。
存数据库的帐号模块
- 给数据库添加
radius
用户和数据库:
CREATE USER 'radius'@'localhost' IDENTIFIED BY 'hello';
create database radius default charset=utf8;
grant all privileges on radius.* to radius@'localhost';
- 执行
mysql -u root radius < /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql
- 启用sql模块,
ln -s /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-enabled
- 修改配置,
driver = "rlm_sql_mysql" dialect = "mysql"
,然后修改Connection info,配置数据库信息。
测试
修改完配置文件后记得重启radius,测试建议关闭服务(systemctl stop freeradius.service
),使用freeradius -X
开启调试模式,获取详细信息。
在本地执行radtest testing password 127.0.0.1 0 testing123
,显示Access-Accept
代表认证成功。
安装daloradius
-
wget https://github.com/lirantal/daloradius/archive/master.zip
,解压到nginx配置下的文件夹。修改nginx配置使其可以正常使用。 -
mysql -u root -p radius < mysql-daloradius.sql
导入数据库。 -
pear install DB
安装php依赖,然后重启php:/etc/init.d/php7.2-fpm reload
。这里PHP版本为7.2,其他版本对应修改即可。 - http访问服务器地址,就会出现登录页面,默认帐号administrator 密码radius。
这个项目年代很久远了,适合测试使用。生产环境建议还是自己开发进行管理,可以参考此项目。
使用PHP客户端
- 安装依赖:
pecl install https://pecl.php.net/get/radius-1.4.0b1.tgz
。对于PHP版本低于7.0的,可以直接pecl install radius
,radius稳定版无法运行在PHP7.X版本。 - 添加依赖:
echo 'extension=radius.so' >/etc/php/7.2/mods-available/radius.ini
ln -s /etc/php/7.2/mods-available/radius.ini /etc/php/7.2/cli/conf.d/20-radius.ini
ln -s /etc/php/7.2/mods-available/radius.ini /etc/php/7.2/fpm/conf.d/20-radius.ini
- 重启php:
/etc/init.d/php7.2-fpm reload
- PHP代码示例如下:
<?php
$radh = radius_auth_open();
// radius_add_server($radh,'127.0.0.1',1812,'pwd',5,3);
radius_config($radh,'r.txt');
radius_create_request($radh,RADIUS_ACCESS_REQUEST);
radius_put_attr($radh,RADIUS_USER_NAME,'user');
radius_put_attr($radh,RADIUS_USER_PASSWORD,'userpwd');
var_dump(radius_send_request($radh));
其中可以使用配置的方式来读取,配置文件格式如下:文件格式详情
//文件名r.txt
auth 127.0.0.1:1812 pwd
末尾需要添加空格,否则无效!