如何搭建一个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

相关推荐

  1. 华纳云:如何一个简易的文件服务器?

    2024-07-18 12:42:02       46 阅读
  2. 如何一个nginx的web服务器

    2024-07-18 12:42:02       38 阅读
  3. 如何使用EMQX一个私有的MQTT服务器

    2024-07-18 12:42:02       32 阅读
  4. 如何利用 NAS 网站服务器

    2024-07-18 12:42:02       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 12:42:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 12:42:02       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 12:42:02       58 阅读
  4. Python语言-面向对象

    2024-07-18 12:42:02       69 阅读

热门阅读

  1. 存储ODS数据的时候为什么在Hive中建立Iceberg表

    2024-07-18 12:42:02       19 阅读
  2. 基于 Gunicorn、Flask 和 Docker 的高并发部署模型

    2024-07-18 12:42:02       21 阅读
  3. 残月之肃-C++

    2024-07-18 12:42:02       18 阅读
  4. 升本1.0.5-规划-英语-207天

    2024-07-18 12:42:02       22 阅读
  5. CmakeLists

    2024-07-18 12:42:02       25 阅读
  6. C语言:进程间通信

    2024-07-18 12:42:02       19 阅读
  7. OPenCV批量实现直方图均衡化----20240718

    2024-07-18 12:42:02       17 阅读
  8. vue中:class、watch、v-show使用

    2024-07-18 12:42:02       20 阅读