将FreeRADIUS 3.0与MySQL结合起来,以便用户使用RADIUS认证时读取MySQL数据库中的数据,涉及几个步骤。以下是详细步骤:
1. 安装FreeRADIUS和MySQL
你已经完成了这一步。如果还没有,可以使用以下命令:
sudo apt-get update
sudo apt-get install freeradius freeradius-mysql mysql-server
2. 配置MySQL数据库
2.1 创建数据库和用户
登录MySQL并创建一个数据库和用户用于FreeRADIUS:
sudo mysql -u root -p
在MySQL命令行中执行以下命令:
CREATE DATABASE radius;
GRANT ALL PRIVILEGES ON radius.* TO 'radius'@'localhost' IDENTIFIED BY 'radpass';
FLUSH PRIVILEGES;
EXIT;
2.2 导入FreeRADIUS SQL模式
FreeRADIUS提供了一个SQL模式文件,用于创建必要的表结构。找到这个文件并导入:
sudo su
mysql -u root -p radius < /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql
3. 配置FreeRADIUS
3.1 启用SQL模块
编辑/etc/freeradius/3.0/mods-enabled/sql
文件:
sudo nano /etc/freeradius/3.0/mods-enabled/sql
确保包含以下内容:
sql {
driver = "rlm_sql_mysql"
dialect = "mysql"
# Connection info:
server = "localhost"
port = 3306
login = "radius"
password = "radpass"
# Database table configuration for everything except Oracle
radius_db = "radius"
# Uncomment to read radius clients from the database ('nas' table)
read_clients = yes
}
3.2 配置SQL模块与默认虚拟服务器
编辑/etc/freeradius/3.0/sites-enabled/default
文件:
sudo nano /etc/freeradius/3.0/sites-enabled/default
找到authorize
部分,确保包含:
authorize {
...
sql
...
}
accounting {
...
sql
...
}
session {
...
sql
...
}
post-auth {
...
sql
...
}
3.3 配置客户端
编辑/etc/freeradius/3.0/clients.conf
文件,添加你的客户端:
sudo nano /etc/freeradius/3.0/clients.conf
添加类似以下内容:
client localhost {
ipaddr = 127.0.0.1
secret = testing123
require_message_authenticator = no
nas_type = other
}
4. 添加测试用户到MySQL
登录MySQL并添加测试用户:
sudo mysql -u root -p
在MySQL命令行中执行以下命令:
USE radius;
INSERT INTO radcheck (username, attribute, op, value) VALUES ('testuser', 'Cleartext-Password', ':=', 'password');
INSERT INTO radusergroup (username, groupname, priority) VALUES ('testuser', 'user', 1);
5. 测试FreeRADIUS配置
重启FreeRADIUS服务器:
sudo systemctl restart freeradius
使用radtest
工具进行测试:
radtest testuser password 127.0.0.1 0 testing123
你应该看到类似以下的输出,表示认证成功:
Sent Access-Request Id 226 from 0.0.0.0:33159 to 127.0.0.1:1812 length 73
User-Name = "testuser"
User-Password = "password"
NAS-IP-Address = 127.0.1.1
NAS-Port = 0
Message-Authenticator = 0x00
Cleartext-Password = "password"
Received Access-Accept Id 226 from 127.0.0.1:1812 to 127.0.0.1:33159 length 20