初试freeradius

2019-05-13  本文已影响0人  魂狩

安装

  1. 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。建议编译安装,按照需要安装需要的依赖。
  2. 安装lnmp环境以备后用,这里教程太多就不赘述了。
  3. 编译安装需要先安装依赖,比如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"作为测试。

存数据库的帐号模块

  1. 给数据库添加radius用户和数据库:
CREATE USER 'radius'@'localhost' IDENTIFIED BY 'hello';
create database radius default charset=utf8;
grant all privileges on radius.* to radius@'localhost';
  1. 执行mysql -u root radius < /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql
  2. 启用sql模块,ln -s /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-enabled
  3. 修改配置,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

  1. wget https://github.com/lirantal/daloradius/archive/master.zip,解压到nginx配置下的文件夹。修改nginx配置使其可以正常使用。
  2. mysql -u root -p radius < mysql-daloradius.sql导入数据库。
  3. pear install DB安装php依赖,然后重启php:/etc/init.d/php7.2-fpm reload。这里PHP版本为7.2,其他版本对应修改即可。
  4. http访问服务器地址,就会出现登录页面,默认帐号administrator 密码radius。
    这个项目年代很久远了,适合测试使用。生产环境建议还是自己开发进行管理,可以参考此项目。

使用PHP客户端

  1. 安装依赖:pecl install https://pecl.php.net/get/radius-1.4.0b1.tgz。对于PHP版本低于7.0的,可以直接pecl install radius,radius稳定版无法运行在PHP7.X版本。
  2. 添加依赖:
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
  1. 重启php:/etc/init.d/php7.2-fpm reload
  2. 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 

末尾需要添加空格,否则无效!

上一篇 下一篇

猜你喜欢

热点阅读