CentOS 8 中安装配置FreeRADIUSDaloRADIUS以及为不同SSID验证MAC等
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等相关推荐
- 阿里云 centos mysql_在阿里云的CentOS环境中安装配置MySQL的教程
1 常规错误的yum安装方法: 在前文中记述了CentOS 6.5系统中通过yum方式快速地搭建了LNMP环境,那么是否也能在CentOS 7或CentOS 7.1系统中依葫芦画瓢安装MySql5.6 ...
- centos snmp配置_如何在CentOS系统中安装配置SNMP服务
配置snmpd.conf文件需要更改五个地方(默认配置基础上): 1.配置snmp团体名(默认是public): com2sec notConfigUser default public 建议更改pu ...
- 在CentOS 7中安装与配置Tomcat-8方法
安装前提 在CentOS 7中安装与配置JDK8 安装tomcat apache-tomcat-8.0.14.tar.gz文件上传到/usr/local中执行以下操作: [root@localhos ...
- RHEL/CentOS 7中安装并配置 PowerDNS 和 PowerAdmin
PowerDNS是一个运行在许多Linux/Unix衍生版上的DNS服务器,它可以使用不同的后端进行配置,包括BIND类型的区域文件.关系型数据库,或者负载均衡/失效转移算法.它也可以被配置成一台DN ...
- linux为mysql创建gpower_系统运维|RHEL/CentOS 7中安装并配置 PowerDNS 和 PowerAdmin
PowerDNS是一个运行在许多Linux/Unix衍生版上的DNS服务器,它可以使用不同的后端进行配置,包括BIND类型的区域文件.关系型数据库,或者负载均衡/失效转移算法.它也可以被配置成一台DN ...
- centos中安装配置tftp服务器
--------------------------------------- 主机操作系统:Centos 6.7 安装配置:tftp服务器 邮箱:leiyuxing205@gmail.com --- ...
- 如何在 CentOS 7 中安装或升级最新的内核
转 原创 2017-03-19 译者:geekpi Linux中国 随着新的设备和技术定期出来,如果我们想充分利用它们,保持最新的内核就很重要.此外,更新内核将帮助我们利用新的内核函数,并保护自己免受 ...
- centos 7 中安装 docker和创建 tomcat容器并部署web应用
在 CentOS 7 中安装 Docker 和创建 Tomcat 容器并部署Web应用 一般部署Web应用都需要安装数据库,比如 MySQL 和 Redis,MySQL 和 Redis 属于多个Web ...
- CentOS 7.x安装配置
简述 VMware可以创建多个虚拟机,每个虚拟机上都可以安装各种类型的操作系统.安装方法也有很多种.下面,主要以ISO镜像安装为例,介绍CentOS 7.x的安装过程及相关的参数设置. 简述 创建虚拟 ...
最新文章
- R语言使用integrate函数进行函数积分计算实战
- dnsmasq搭建简易DNS服务器
- 类脑芯片怎么搞?三星哈佛:直接复制粘贴神经元 | Nature子刊
- js 得到select所有option里的值
- android gridview滑动卡,Android RecyclerView的卡顿问题
- cp文件服务器,docker容器与物理机的文件传输—docker cp命令
- 【C#学习笔记】使用C#中的Dispatcher
- LeetCode-234. 回文链表(C语言)
- Linux基础(1)---top命令
- 如何设置ubuntu的PATH环境变量
- 智能硬件设计开发流程
- 北京3月去哪玩 赏花踏青登山六大推荐
- 网站SEO优化高质量内容怎么写
- Webots学习笔记—距离传感器的介绍和四轮小车的避障
- 实验吧-杯酒人生(凯撒解密,维基利亚密码)
- 英雄算法联盟 - 六月集训排行榜 (截止今日第31天)
- 反函数 (逆映射) 存在定理
- python实现酷狗音乐下载,以及利用tk界面可视化
- EF 计算时期/时间差
- [转]第三届标致汽车设计国际邀请赛部分获奖作品展示
热门文章
- 打造Android的中文Siri语音助手(一)——小I机器人的接口
- BUG的优先级(Priority)和严重程度(Severity)Blocker, Critical, Major, Minor/Trivial
- c语言写一个进出货管理,[源码和文档分享]基于C语言实现的超市管理系统
- 区块链上市公司半年报: 41家进入实际应用及研究 5家瞄准供应链金融
- FFmpeg开发XPlay2.0播放器-01 qt环境和ffmpeg环境
- CSS在浏览器不能加载出来的解决方案
- 泊松分布的矩母函数与特征函数
- XDOJ--P177累加和校验
- 一月笔记-JAVA-超市管理系统
- 【测试】28.禅道的使用