CentOS 8中安装FreeRADIUS和DaloRADIUS虽然不复杂,但还是有些东西需要记录一下,以免走弯路.

安装FreeRADIUS基本配置

安装mariadb & freeradius

# dnf install mariadb mariadb-server
# systemctl enable mariadb
# systemctl start mariadb
# mysqladmin -u root password "pass"
# 上一步可先不做,未设密码时可以直接在root 账号下 用mysql进入,如已设密码,则需要使用 mysql -u root -p  进入
# dnf install freeradius freeradius-utils freeradius-mysql

配置FreeRADIUS

建立并初始化FreeRADIUS需要的数据库

# mysql
MariaDB [(none)]>CREATE DATABASE radius;
MariaDB [(none)]>GRANT ALL ON radius.* TO radius@localhost IDENTIFIED BY "nbplus";
MariaDB [(none)]>FLUSH PRIVILEGES;
MariaDB [(none)]>quit
# mysql radius < /etc/raddb/mods-config/sql/main/mysql/schema.sql

为FreeRADIUS启用sql 模组

# ln -s /etc/raddb/mods-available/sql /etc/raddb/mods-enabled/
# chgrp -h radiusd /etc/raddb/mods-enabled/sql
# vim /etc/raddb/mods-available/sql

设定FreeRADIUS连接DB参数,像下面就行

sql {
driver = "rlm_sql_mysql"
dialect = "mysql"
server = "localhost"
port = 3306
login = "radius"
password = "nbplus"
radius_db = "radius"
}
read_clients = yes
client_table = "nas"

设定FreeRADIUS自启动

# systemctl enable radiusd
# systemctl start radiusd

安装Daloradius和基本配置

DaloRADIUS是基于php的web管理工具.

安装

先决条件

# dnf install httpd php php-pear php-json php-devel php-gd php-mbstring php-mysqlnd php-xml
# pear install DB

下载安装Daloradius

# wget https://github.com/lirantal/daloradius/archive/master.zip
# unzip master.zip
# mv daloradius-master /var/www/html/daloradius

基本配置

为DaloRADIUS扩展DB

# cd /var/www/html/daloradius/contrib/db
# mysql radius < fr2-mysql-daloradius-and-freeradius.sql
# mysql radius < mysql-daloradius.sql

DaloRADIUS 基本配置

# cd /var/www/html/daloradius/library
# cp daloradius.conf.php.sample daloradius.conf.php
# vim daloradius.conf.php

把和DB的连接参数设定正确就行

$configValues['CONFIG_DB_HOST'] = 'localhost';
$configValues['CONFIG_DB_PORT'] = '3306';
$configValues['CONFIG_DB_USER'] = 'radius';
$configValues['CONFIG_DB_PASS'] = 'nbplus';
$configValues['CONFIG_DB_NAME'] = 'radius';

权限重设一下

# chown -R apache:apache /var/www/html/daloradius

附加设定:

下载安装phpmyadmin

# wget https://files.phpmyadmin.net/phpMyAdmin/5.1.1/phpMyAdmin-5.1.1-all-languages.tar.gz
# tar -zxvf phpMyAdmin-5.1.1-all-languages.tar.gz
# mv  phpMyAdmin-5.1.1-all-languages /var/www/html/phpmyadmin
#  chown -R apache:apache /var/www/html/phpmyadmin

DaloRADIUS中读取log

为要读取的log文件增加读取权限

# chmod 755 /var/log/radius
# chmod 644 /var/log/radius/radius.log
# chmod 644 /var/log/messages
# touch /tmp/daloradius.log
# chown -R apache:apache /tmp/daloradius.log

做完上面的你可能会遇到还是无法读取RADIUS/SYSLOG的情况,那就是Selinux挡着了,可以在/var/log/audit/audit.log看到相应信息

关闭Selinux或修改上述文件的安全设定

修改安全设定还是直接禁用Selinux看自己的情况.

#chcon -t httpd_sys_content_t /var/log/messages
#chcon -t httpd_sys_content_t /var/log/radius/radius.log
改了下试试结果系统写日志写不进去了.后面有机会再研究,先禁了它.

# setenforce 0
# vim /etc/selinux/config
修改SELINUX=enforcing为SELINUX=disabled

到这里,一个标准的freeradius环境及web管理界面就好了,下面为实际应用示例.

freeRADIUS中为不同SSID进行MAC验证的实现.

在实际使用中,我们常会遇到要使用MAC认证的情况,如果针对单一SSID验证,直接加个用户就行.但我的需求是在WLAN AC上启用了几个使用mac auth的SSID用于不同用途,且要求设备只能连接上指定的ssid.
官网的指南: https://wiki.freeradius.org/guide/mac-auth#
这个指南看着有点晕也并不全,比如像我现在的情况适用**Mac-Auth authorisation by SSID SQL** 这一节,但这里用到的表本来是没有的,你得手动加,表里的数据你还得另想办法去做增改删,反正不容易.
思路沿用,但做法稍变通一下,让整个配置过程变简单点
我的WLAN设备: Ruckus AC+AP, SSID: ssid001,ssid002.

确认取得待认证MAC的目标SSID的方式

一般来说,各设备厂商都会在发送radius 请求时单独附上ssid这个属性,比如ruckus的就是Ruckus-SSID:ssid name .大厂的都类似,如果没有单独给出,那就需要从Called-Station-ID里面取值. Called-Station-ID的格式:AC的MAC+冒号+SSID.可以在调试模式看呼入数据确认.

# systemctl stop radiusd
# radiusd -Xx
Wed Sep  8 16:11:42 2021 : Info: Ready to process requests
Wed Sep  8 16:12:19 2021 : Debug: (0) Received Access-Request Id 9 from 192.168.78.252:53060 to 192.168.70.43:1812 length 217
Wed Sep  8 16:12:19 2021 : Debug: (0)   User-Name = "11:22:33:44:55:66"
Wed Sep  8 16:12:19 2021 : Debug: (0)   User-Password = "11:22:33:44:55:66"
Wed Sep  8 16:12:19 2021 : Debug: (0)   Calling-Station-Id = "11-22-33-44-55-66"
Wed Sep  8 16:12:19 2021 : Debug: (0)   NAS-IP-Address = 192.168.78.252
Wed Sep  8 16:12:19 2021 : Debug: (0)   Called-Station-Id = "AA-FF-CC-CD-DD-3C:SSID-NAME"
Wed Sep  8 16:12:19 2021 : Debug: (0)   Service-Type = Framed-User
Wed Sep  8 16:12:19 2021 : Debug: (0)   NAS-Port-Type = Wireless-802.11
Wed Sep  8 16:12:19 2021 : Debug: (0)   NAS-Identifier = "AA-FF-CC-CD-DD-3C"
Wed Sep  8 16:12:19 2021 : Debug: (0)   Ruckus-SSID = "SSID-NAME"

为FreeRADIUS增加需要检查的Attribute

NAS会发送单独的SSID的情况:

直接在DaloRADIUS中新增

如果不用后台数据库,直接加在/etc/raddb/dictionary文件中

ATTRIBUTE      Ruckus-SSID         3000    string

NAS不发送单独的SSID的情况

新增一个名为Called-Station-SSID的属性(略).

增加一个规则用于检查SSID

脚本把NAS会发送单独的SSID和不发送的情况合在一起处理

# vim /etc/raddb/policy.d/filter_ssid
filter_ssid {if (&Ruckus-SSID) { if ("%{sql:select count(*) from `radusergroup` where username='%{User-Name}' AND groupname='%{Ruckus-SSID}'}" >=1) {okupdate control {&Auth-Type := Accept}}else {update request {&Module-Failure-Message += 'Rejected: Not Allow Access Current SSID'}reject}}else {if(Called-Station-Id =~ /^([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:.]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:.]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([-a-z0-9_. ]*)?/i){update request {Called-Station-Id := "%{1}%{2}%{3}%{4}%{5}%{6}"Called-Station-SSID := "%{7}"}if ("%{sql:select count(*) from `radusergroup` where username='%{User-Name}' AND groupname='%{Called-Station-SSID}'}" >=1) {okupdate control {&Auth-Type := Accept}}else {update request {&Module-Failure-Message += 'Rejected: Not Allow Access Current SSID'}reject}}else {noop}}
}
# chgrp radiusd /etc/raddb/policy.d/filter_ssid

在默认配置文件的authorize部分中启用前面的规则

 #vim /etc/raddb/sites-available/default#  need to setup hints for the remote radius server
authorize {
...filter_usernamefilter_ssid #加进来
...

增加一个profile用于匹配SSID

在DaloRADIUS中新增一个profile,名称和SSID一致.

如果不是用数据库,那前面的规则也就不能用,估计要在/etc/raddb/users文件中做限制.

DaloRADIUS的中文界面问题

中文包是有包含在lang目录下,但没有被启用.

# ll lang
总用量 692
-rw-r--r--. 1 apache apache 86229 6月  27 00:16 en.php
-rw-r--r--. 1 apache apache 73569 6月  27 00:16 es_VE.php
-rw-r--r--. 1 apache apache 72519 6月  27 00:16 hu.php
-rw-r--r--. 1 apache apache 63141 6月  27 00:16 it.php
-rw-r--r--. 1 apache apache 99035 6月  27 00:16 ja.php
-rw-r--r--. 1 apache apache  2316 6月  27 00:16 main.php
-rw-r--r--. 1 apache apache 75448 6月  27 00:16 pt_br.php
-rw-r--r--. 1 apache apache 77909 6月  27 00:16 ro.php
-rw-r--r--. 1 apache apache 54316 6月  27 00:16 ru.php
-rw-r--r--. 1 apache apache 81491 6月  27 00:16 zh.php

先启用,让可选择到.

# vim config-lang.php

在选择器中加入中文选项

 <select name="config_lang" class='form'><option value="zh"> 简体中文 </option>

再回去你会发现可以选,但不起作用,进一步发现,这里的语言你选哪个都是白搭…

检查后发现是取可用语言清单的部分错误了,不知道是不是故意的.

[root@ksyoradius daloradius]# vim lang/main.php*      Liran Tal <liran@enginx.com>*********************************************************************************/
$langDir = dirname(__FILE__);
$langList = array_filter(scandir($langDir), function($fileName) {global $langDir;$skipList = array(".", "..", "main.php","ro.php" // FIXME ro.php is currently broken and needs a fix...);if (in_array($fileName, $skipList)) {return false;}$ext = strtolower(pathinfo($fileName, PATHINFO_EXTENSION));return !($ext == "php" and is_file("$langDir/$fileName")); //就是这儿,拿掉!
});

基本中文了,除了一些菜单

如果有兴趣,可以自己去改相应文件,把要翻译的文字用字典里的替代就行…

<li><a href="mng-users.php"><em>U</em>sers</a></li>
<li><a href="mng-users.php"><?php echo t('menu','Users'); ?></li>
lang/zh.php
$l['menu']['Users'] = "用户</a>";

CentOS 8 中安装配置FreeRADIUSDaloRADIUS以及为不同SSID验证MAC等相关推荐

  1. 阿里云 centos mysql_在阿里云的CentOS环境中安装配置MySQL的教程

    1 常规错误的yum安装方法: 在前文中记述了CentOS 6.5系统中通过yum方式快速地搭建了LNMP环境,那么是否也能在CentOS 7或CentOS 7.1系统中依葫芦画瓢安装MySql5.6 ...

  2. centos snmp配置_如何在CentOS系统中安装配置SNMP服务

    配置snmpd.conf文件需要更改五个地方(默认配置基础上): 1.配置snmp团体名(默认是public): com2sec notConfigUser default public 建议更改pu ...

  3. 在CentOS 7中安装与配置Tomcat-8方法

    安装前提 在CentOS 7中安装与配置JDK8 安装tomcat  apache-tomcat-8.0.14.tar.gz文件上传到/usr/local中执行以下操作: [root@localhos ...

  4. RHEL/CentOS 7中安装并配置 PowerDNS 和 PowerAdmin

    PowerDNS是一个运行在许多Linux/Unix衍生版上的DNS服务器,它可以使用不同的后端进行配置,包括BIND类型的区域文件.关系型数据库,或者负载均衡/失效转移算法.它也可以被配置成一台DN ...

  5. linux为mysql创建gpower_系统运维|RHEL/CentOS 7中安装并配置 PowerDNS 和 PowerAdmin

    PowerDNS是一个运行在许多Linux/Unix衍生版上的DNS服务器,它可以使用不同的后端进行配置,包括BIND类型的区域文件.关系型数据库,或者负载均衡/失效转移算法.它也可以被配置成一台DN ...

  6. centos中安装配置tftp服务器

    --------------------------------------- 主机操作系统:Centos 6.7 安装配置:tftp服务器 邮箱:leiyuxing205@gmail.com --- ...

  7. 如何在 CentOS 7 中安装或升级最新的内核

    转 原创 2017-03-19 译者:geekpi Linux中国 随着新的设备和技术定期出来,如果我们想充分利用它们,保持最新的内核就很重要.此外,更新内核将帮助我们利用新的内核函数,并保护自己免受 ...

  8. centos 7 中安装 docker和创建 tomcat容器并部署web应用

    在 CentOS 7 中安装 Docker 和创建 Tomcat 容器并部署Web应用 一般部署Web应用都需要安装数据库,比如 MySQL 和 Redis,MySQL 和 Redis 属于多个Web ...

  9. CentOS 7.x安装配置

    简述 VMware可以创建多个虚拟机,每个虚拟机上都可以安装各种类型的操作系统.安装方法也有很多种.下面,主要以ISO镜像安装为例,介绍CentOS 7.x的安装过程及相关的参数设置. 简述 创建虚拟 ...

最新文章

  1. R语言使用integrate函数进行函数积分计算实战
  2. dnsmasq搭建简易DNS服务器
  3. 类脑芯片怎么搞?三星哈佛:直接复制粘贴神经元 | Nature子刊
  4. js 得到select所有option里的值
  5. android gridview滑动卡,Android RecyclerView的卡顿问题
  6. cp文件服务器,docker容器与物理机的文件传输—docker cp命令
  7. 【C#学习笔记】使用C#中的Dispatcher
  8. LeetCode-234. 回文链表(C语言)
  9. Linux基础(1)---top命令
  10. 如何设置ubuntu的PATH环境变量
  11. 智能硬件设计开发流程
  12. 北京3月去哪玩 赏花踏青登山六大推荐
  13. 网站SEO优化高质量内容怎么写
  14. Webots学习笔记—距离传感器的介绍和四轮小车的避障
  15. 实验吧-杯酒人生(凯撒解密,维基利亚密码)
  16. 英雄算法联盟 - 六月集训排行榜 (截止今日第31天)
  17. 反函数 (逆映射) 存在定理
  18. python实现酷狗音乐下载,以及利用tk界面可视化
  19. EF 计算时期/时间差
  20. [转]第三届标致汽车设计国际邀请赛部分获奖作品展示

热门文章

  1. 打造Android的中文Siri语音助手(一)——小I机器人的接口
  2. BUG的优先级(Priority)和严重程度(Severity)Blocker, Critical, Major, Minor/Trivial
  3. c语言写一个进出货管理,[源码和文档分享]基于C语言实现的超市管理系统
  4. 区块链上市公司半年报: 41家进入实际应用及研究 5家瞄准供应链金融
  5. FFmpeg开发XPlay2.0播放器-01 qt环境和ffmpeg环境
  6. CSS在浏览器不能加载出来的解决方案
  7. 泊松分布的矩母函数与特征函数
  8. XDOJ--P177累加和校验
  9. 一月笔记-JAVA-超市管理系统
  10. 【测试】28.禅道的使用