当前位置: 首页 > news >正文

如何搭建一个RADIUS服务器?

1. 系统环境

1.1.操作系统

  • Ubuntu-20.04.1 (kernel: 5.15.0-58-generic)

1.2.所需软件

  • FreeRADIUS

  • MariaDB

1.3.注意事项

  • 本文提到的所有操作,都是以root 身份执行;

2. FreeRADIUS的安装

2.1. 安装FreeRADIUS服务器程序

以root身份登录到终端,执行如下命令:

  • apt install freeradius

安装FreeRADIUS工具包,以root身份登录到终端,执行如下命令:

  • apt install freeradius-utils
    • 注:该工具包用于测试freeradius。

2.2 修改用户管理配置文件

2.2.1 FreeRADIUS的测试

打开/etc/freeradius/3.0/users文件,查找"steve    Cleartext-Password := "testing"(73-81)", 取消该段内容的注释。

2.2.2 修改防火墙配置

修改防火墙配置,允许freeradius所使用的端口1812和1813。命令如下所示:

  • iptables -A INPUT -p udp --dport 1812 -j ACCEPT
  • iptables -A INPUT -p udp --dport 1813 -j ACCEPT

2.3 以调试方式启动freeradius

执行如下命令:

  • freeradius -X

正常情况下,终端会输出如下信息:

2.4.使用测试工具测试

打开一个新的终端,以root 身份登录,执行如下命令:

  • radtest steve testing localhost 0 testing123

正常情况下,终端会输出如下信息:

输出"Access-Accept"表示成功,"Access-Reject"表示失败。

3. MariaDB的安装

3.1. 安装MariaDB服务器程序

以root 身份登录到终端,执行如下命令:

  • apt install mariadb-server

安装成功后,使用systemctl命令可以查看到mariadb服务是否已经开启。

3.2. 安装MariaDB客户端程序

以root 身份登录到终端,执行如下命令:

  • apt-get installmariadb-client

3.3 MariaDB的测试

3.3.1 创建数据库

以root身份登录到终端,执行如下命令:

  • mysql -u root -p

要求输入密码时,直接回车即可。

mysql> create databaseradius;

mysql> grant all on radius.* to radius@localhost identified by“radpass”; 

mysql> exit;

3.3.2 导入表结构

以root身份登录到终端,执行如下命令:

  • mysql -u root radius < /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql

上面的指令,共导入8个表,分别是:

  • nas,网络设备表
  • radacct,计费情况表
  • radcheck,用户检查信息表
  • radgroupcheck,用户组检查信息表
  • radgroupreply,用户组回复信息表
  • radpostautch,认证后处理信息,可以包括认证请求成功和拒绝的记录radreply 用户回复信息表
  • radusergroup,用户和组关系表

可以进入radius 数据库,查看导入的表结构,执行如下命令:

mysql -u root radius

mysql> show tables;

3.3.3 建立组信息和用户信息

在终端输入”mysql -u root radius“,打开数据库,执行如下命令:

1. 新建'user'组

mysql> insert into radgroupcheck (groupname,attribute,op,value) values  ('usr','Auth- Type',':=','Local');

mysql> insert into radgroupcheck (groupname,attribute,op,value) values ('usr','Service-Type',':=','Framed-User');

mysql> insert into radgroupcheck (groupname,attribute,op,value) values ('usr','Framed-IP-Address',':=','255.255.255.255');

mysql> insert into radgroupcheck (groupname,attribute,op,value) values ('usr','Framed-IP-Netmask',':=','255.255.255.0');

2. 查看新建组

3. 新建'test'用户

mysql> insert into radcheck (username,attribute,op,value) values ('test','CleartextPassword',':=','testpwd');

4. 查看新建用户

5. 将用户加入组中

mysql> insert into radusergroup (username,groupname) values ('test','user');

6. 查看用户和组信息

4. FreeRADIUS与MariaDB的对接

4.1 安装freeradius-mysql组件

以root身份登录到终端,执行如下命令:

  • apt installfreeradius-mysql

4.2. 重启MariaDB服务

以root身份登录到终端,执行如下命令:

  • systemctl restart mariadb

4.3 使能FreeRADIUS中的mysql认证配置

默认mods-enabled目录下没有该配置,需要创建一个软链接到mods-available目录下的sql文件,执行如下命令:

  • cd /etc/freeradius/3.0/mods-enabled
  • ln -s ../mods-available/sql

4.4. 修改FreeRADIUS中的mysql认证配置

直接修改/etc/freeradius/3.0/mods-available/sql文件,将dialect = "sqlite"这一行,修改为dialect = "mysql"。

将driver = "rlm_sql_null"这一行,修改为driver = "rlm_sql_mysql"。

将tsl相关的内容屏蔽,具体如下:

同时需要取消"Connection info"部分注释,具体如下:

4.5. 测试通过数据库做用户认证

1. 重新以调试方式运行freeradius,执行如下命令:

  • systemctl stop freeradius
  • freeradius -X

正常情况下,终端会输出如下信息:

2. 打开一个新的终端,以root 身份登录,执行如下命令:

  • radtest test testpwd localhost 1812 testing123

正常情况下,终端会输出如下信息:

5. 常见错误

1. Failed binding to auth address * port 1812 bound to serverdefault: Address already in use /usr/local/etc/raddb/sites-enabled/default[59]:Error binding to port for 0.0.0.0 port 1812

原因:已经有一个FreeRADIUS 实例在运行了

解决:systemctl stop freeradius.service

2. 安装mariadb-server 报错

Job for mariadb.service failed because thecontrol process exited with error code.

See "systemctl status mariadb.service"and "journalctl -xe" for details.

原因:查看/var/log/mysql/error.log 文件,提示:

[ERROR] Unknown/unsupported storage engine: InnoDB

解决:sudo apt remove --purgemysql-server mysql-client sudo rm -rf /var/run/mysql*

sudo apt autoremovesudo apt autoclean

3. 安装mariadb-server报错

Job for mariadb.service failed because atimeout was exceeded.

See "systemctl status mariadb.service" and"journalctl -xe" for details.

原因:系统之前安装了mysql,它会激活一个与mariadb不兼容的apparmor配置文件,apt  remove –purge操作只能删除配置文件,但不会停用/卸载它。只有手动卸载它,mariadb才能不受apparmor的阻碍,正常工作。

解决:echo "/usr/sbin/mysqld{ }" >> /etc/apparmor.d/usr.sbin.mysqld

apparmor_parser -v -R/etc/apparmor.d/usr.sbin.mysqld

相关文章:

如何搭建一个RADIUS服务器?

1. 系统环境 1.1.操作系统 Ubuntu-20.04.1 &#xff08;kernel: 5.15.0-58-generic&#xff09; 1.2.所需软件 FreeRADIUS MariaDB 1.3.注意事项 本文提到的所有操作&#xff0c;都是以root 身份执行&#xff1b; 2. FreeRADIUS的安装 2.1. 安装FreeRADIUS服务器程序 以…...

双机热备综合实验

1&#xff0c;对现有网络进行改造升级&#xff0c;将当个防火墙组网改成双机热备的组网形式&#xff0c;做负载分担模式&#xff0c;游客区和DMZ区走FW3&#xff0c;生产区和办公区的流量走FW1 2&#xff0c;办公区上网用户限制流量不超过100M&#xff0c;其中销售部人员在其基…...

Java和Python的图结构如何实现图的深度优先搜索算法

Java和Python的图结构如何实现图的深度优先搜索算法&#xff1f; 在Java和Python中&#xff0c;实现深度优先搜索&#xff08;DFS&#xff09;算法的基本思路都是通过递归或栈来探索图的各个节点。 Java实现DFS&#xff1a;Java import java.util.ArrayList; import java.uti…...

Web学习day05

html&css 目录 html&css 文章目录 一、web开发 1.1工作流程 1.2开发技术 二、HTML 2.1HTML规范 2.2基础标签 2.2.1标题 2.2.2水平线 2.2.3段落和换行 2.2.4文字效果 2.2.5超链接 2.2.6图像 2.2.7音频和视频 三、布局标签 3.1列表 3.2容器 3.3表格 3…...

LINUX客户端client(socket、connect)实现客户端发送,服务器接收

SERVICE端见前一篇文章 5. 客户端连接函数 connect()&#xff08;与前面的bind一样&#xff09; int connect (int sockfd, struct sockaddr * serv_addr, int addrlen) 参数&#xff1a; sockfd: 通过 socket() 函数拿到的 fd addr:struct sockaddr 的结构体变量地址 addr…...

【网络安全科普】勒索病毒 防护指南

勒索病毒简介 勒索病毒是一种恶意软件&#xff0c;也称为勒索软件&#xff08;Ransomware&#xff09;&#xff0c;其主要目的是在感染计算机后加密用户文件&#xff0c;并要求用户支付赎金以获取解密密钥。这种类型的恶意软件通常通过电子邮件附件、恶意链接、下载的软件或漏洞…...

TFHE库,fftw和googletest库安装

点个关注吧&#xff01;本文主要关注于TFHE的安装与常见的问题 1.TFHE的git链接&#xff1a; https://github.com/tfhe/tfhe git clone --recurse-submodules --branchmaster https://github.com/tfhe/tfhe.git 2.安装 mkdir build cd build cmake ../src -DENABLE_TESTSon -D…...

关于Spring Boot IOCDC,看这一篇就够了

一&#xff0c;Spring是什么及常用注解 先说什么是spring&#xff0c;在前面的博客中已经知道了&#xff0c;spring是一个开源框架&#xff0c;为了让我们开发更加简单&#xff0c;那关于ioc呢&#xff0c;一句话概况一下&#xff1a;Spring就是包含了众多工具方法的Ioc容器 …...

Model Import Settings

前言 在可视化3D世界中&#xff0c;模型是3D世界的核心&#xff0c;你可以没有贴图&#xff0c;可以没有特效&#xff0c;甚至可以没有用户交互界面&#xff0c;但必须得有模型来描述世界的基本样貌。 在3D世界中&#xff0c;由点线面构成了模型的轮廓&#xff1b;由UV和纹理&a…...

腾讯云COS托管静态网站,以及如何解决访问出现了下载网页的情况

腾讯云对象存储&#xff08;Cloud Object Storage&#xff0c;简称COS&#xff09;&#xff0c;与其他云厂商所提供的云对象存储都是面向非结构化数据&#xff0c;只是每个云厂商的叫法有别于他家&#xff0c;或许是更能彰显厂商的品牌吧&#xff01; 但不管云厂商怎么给云对象…...

软件设计模式: 抽象工厂

抽象工厂 一、解决的问题 抽象工厂模式主要解决了在具有多个产品族的情况下&#xff0c;如何统一管理创建相关产品对象的问题。 当系统需要创建一系列相互关联或相互依赖的对象&#xff0c;并且这些对象可以形成多个不同的产品族时&#xff0c;如果直接由客户端去分别创建这…...

使用Vuepress搭建个人网站

网站地址&#xff1a;bloggo.chat...

lua 写一个 不同时区之间转换日期和时间 函数

这个函数用于调整时间戳以适应不同的时区。它接受五个参数&#xff1a;format、timeStamp、dontFixForTimeOffset、currentServerTimeZone和showLog。返回 os.date&#xff0c;可以转化成指定格式的年月日时间 ### 功能 该函数的主要功能是根据给定的时区偏移量调整时间戳&am…...

谷粒商城——session共享

问题1 一个系统中不同微服务的session共享。 问题1的解决办法 1. session复制的方法&#xff1a;微服务的副本之间通过通信共享session。这样每一个微服务的副本都会保存所有的session。&#xff08;缺点&#xff1a;造成大量的通信&#xff0c;多处额外的通信开销。&#x…...

Java 语言及其常用集合类的操作,以及反射机制与注解

目录 一、Java 语言概述 二、Java 集合框架 ArrayList 操作示例&#xff1a; HashMap 操作示例&#xff1a; 三、反射机制 1. 反射的示例 五、总结 Java 是一种广泛使用的高级编程语言&#xff0c;因其平台独立性、简洁性及丰富的 API 而备受开发者青睐。 一、Java 语言…...

《系统架构设计师教程(第2版)》第12章-信息系统架构设计理论与实践-02-信息系统架构

文章目录 1. 概述1.1 信息系统架构&#xff08;ISA&#xff09;1.2 架构风格 2. 信息系统架构分类2.1 信息系统物理结构2.1.1 集中式结构2.1.2 分布式结构 2.2 信息系统的逻辑结构1&#xff09;横向综合2&#xff09;纵向综合3&#xff09;纵横综合 3. 信息系统架构的一般原理4…...

用html做python教程01

用html做python教程01 前言开肝构思实操额外修饰更换字体自适应 最后 前言 今天打开csdn的时候&#xff0c;看见csdn给我推荐了一个python技能书。 说实话&#xff0c;做得真不错。再看看我自己&#xff0c;有亿点差距&#x1f61f;。 开肝 先创建一个文件&#xff0c;后缀…...

PHP接口与性状的优雅应用

本文由 ChatMoney团队出品 在PHP编程中&#xff0c;接口是一种定义对象之间交互契约的强大工具。其核心目的不是让一个对象紧耦合地依赖另一个对象的特定身份&#xff0c;而是基于另一对象的能力进行交互。通过接口&#xff0c;我们的代码可以实现与依赖的解耦&#xff0c;从而…...

R语言模型评估网格搜索

### 网格搜索 ### install.packages("gbm") set.seed(1234) library(caret) library(gbm) fitControl <- trainControl(method = repeatedcv,number = 10,repeats = 5) # 设置网格搜索的参数池 gbmGrid <- expand.grid(interaction.depth = c(3,5,9),n.trees =…...

Haproxy服务

目录 一.haproxy介绍 1.主要特点和功能 2.haproxy 调度算法 3.haproxy 与nginx 和lvs的区别 二.安装 haproxy 服务 1. yum安装 2.第三方rpm 安装 3.编译安装haproxy 三.配置文件详解 1.官方地址配置文件官方帮助文档 2.HAProxy 的配置文件haproxy.cfg由两大部分组成&…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...