Ubuntu20.04安装FreeRADIUS
!!!注意
参考: https://lishiwen4.github.io/tool/setup-freeradius-for-eap-auth
已经好久不搞了,本文仅供参考,不提供帮助,勿扰
0.Ubuntu20.04修改国内源
# 备份源
cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 替换源地址为阿里云的地址
sed -i "s/archive.ubuntu.com/mirrors.aliyun.com/g" /etc/apt/sources.list
# 或
sed -i "s/cn.archive.ubuntu.com/mirrors.aliyun.com/g" /etc/apt/sources.list
1.安装MariaDB
# 刷新源
sudo apt update && sudo apt upgrade
sudo apt -y install software-properties-common
apt install -y gnupg gnupg1 gnupg2
# 导入证书
# apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8
sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
# 添加mariadb源
sudo add-apt-repository 'deb [arch=amd64] http://mariadb.mirror.globo.tech/repo/10.5/ubuntu focal main'
# 安装MariaDB 10.5
sudo apt update
sudo apt install mariadb-server mariadb-client
# 初始化数据库
sudo mysql_secure_installation
## Enter current password for root (enter for none): 输入管理员原始密码,默认为空值,直接回车即可
没有默认密码,直接回车
## Switch to unix_socket authentication [Y/n]: 切换到 unix_socket 身份验证,输入N
输入N
## Set root password? [Y/n] y(设置管理员密码)
输入两次要设置的数据库root密码
## Remove anonymous users? [Y/n] y(是否删除匿名账户)
输入y,回车
## Disallow root login remotely? [Y/n] y(是否禁止管理员从远程登录)
输入y
## Remove test database and access to it? [Y/n] y(删除测试数据库及其访问权限)
输入y
## Reload privilege tables now? [Y/n] y(刷新授权表,让初始化后的设定立即生效)
输入y
# 设置开机自启且现在启动
systemctl enable --now mariadb
2.为FreeRADIUS/daloRADIUS创建数据库和用户。
# 登录数据库
mysql -u root -p
# 检查数据库版本
MariaDB [(none)]> SELECT VERSION();
# 创建数据库和用户
数据库名称:radius
## 创建数据库radius
CREATE database radius;
# 创建数据库用户:radius/yourpassword
## 先用root登陆数据库
mysql -u root -p
# 创建数据库用户radius,设置密码为radius123
MariaDB [(none)]> CREATE USER radius@localhost IDENTIFIED BY 'radius123';
# 查看用户radius是否创建成功
## 进入mysql库
MariaDB [(none)]> use mysql;
## 查看radius用户
SELECT HOST,USER,PASSWORD FROM user WHERE USER="radius";
## radius用户已经创建完成了,但是没有任何的数据库权限
# 为radius用户授权
# 登陆root
mysql -u root -p
# 进入mysql库
use radius;
# 对数据库进行授权
## 授予radius用户权限 select查询,update修改,delete删除,insert插入,@localhost 仅允许从本地登陆
GRANT SELECT,UPDATE,DELETE,INSERT ON radius.* TO radius@localhost identified by 'radius123';
## 刷新权限
flush privileges;
# 查看aliyun的权限
show GRANT FOR 'radius'@'localhost';
3.安装freeradius
# 安装
apt install -y freeradius freeradius-mysql freeradius-utils
# 设置服务开机自启动
systemctl enable --now freeradius
# 导入freeradius MySQL数据库方案:
mysql -u root -p radius < /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql
# 输入schema.sql的密码
# 输入密码shgbit123
# 输入数据库密码
# 检查创建的表
mysql -u root -p -e "use radius;show tables;"
# 在/etc/freeradius/3.0/mods-enabled/下为sql模块创建一个软链接:
ln -s /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-enabled/
freeradius-utils中的测试工具
freeradius-utils
软件包包含一系列的测试工具用于测试不同的认证方式
解释 | |
---|---|
radclient | 用于向radius server发送radius packet并接收回复 |
raddebug | 用于显示radius server的debug信息 |
radeapclient | 用于向radius server发送EAP packet |
radlast | 从wtmp 文件中获取最后的accounting log并显示 |
radmin | freeradius demo的管理工具 |
radsniff | wrapp libpcap, 用于dump radius协议消息 |
radsqlrelay | 传递SQL查询到一个集中的数据库服务器 |
radtest | radclient的前端, 用于向radius server发送访问请求并接收回复 |
radwatch | 用于启动和监控radius server, 当radius server退出时, 负责重启 |
radwho | 显示当前在线的user radwho从数据库或者文件中获取当前在线的user的信息, 有时候这些信息没有同步 |
radzap | radzap 用于同步这些信息 |
4.配置SQL模块并更改数据库连接参数
# 备份原文件
mkdir -p /etc/freeradius/3.0/mods-enabled/bak
mv /etc/freeradius/3.0/mods-enabled/sql /etc/freeradius/3.0/mods-enabled/bak/sql.bak
配置SQL模块并更改数据库连接参数以适合你的环境:
清空原文件,写入新配置
vi /etc/freeradius/3.0/mods-enabled/sql
# 你的sql部分应该类似于下面的部分:
sql {
# 指定使用MySQL数据库驱动程序
driver = "rlm_sql_mysql"
# 设置使用的SQL方言为MySQL
dialect = "mysql"
# 指定MySQL服务器地址
server = "localhost"
# 指定数据库服务器端口
port = 3306
# 用于连接数据库的用户名和密码
login = "radius"
password = "你的数据库密码"
# 指定了存储Radius相关数据的数据库名称
radius_db = "radius"
}
# 允许FreeRADIUS从数据库中读取客户端(NAS,Network Access Server)的信息。
read_clients = yes
# 指定存储客户端信息的数据表名为 "nas
client_table = "nas"
然后更改/etc/freeradius/3.0/mods-enabled/sql
的组权限:
chgrp -h freerad /etc/freeradius/3.0/mods-available/sql
chown -R freerad:freerad /etc/freeradius/3.0/mods-enabled/sql
# 重启freeradius服务:
systemctl restart freeradius.service
5.安装apache(非必须执行)
apahce是daloradius的依赖项
apt install -y apache2
apt install -y php libapache2-mod-php php-{gd,common,mail,mail-mime,mysql,pear,mbstring,xml,curl}
pear install DB
6.安装配置daloradius(非必须执行)
daloradius是FreeRADIUS的webui管理平台
以来apache2
# 下载daloradius
wget https://github.com/lirantal/daloradius/archive/master.zip
# 或
git clone https://github.com/lirantal/daloradius.git
unzip master.zip
mv daloradius-master/ daloradius
# 更改配置目录:
cd daloradius
# 配置daloradius,现在导入Daloradius mysql表:
mysql -u root -p radius < contrib/db/fr2-mysql-daloradius-and-freeradius.sql
mysql -u root -p radius < contrib/db/mysql-daloradius.sql
# 配置daloRADIUS数据库连接详细信息:
cd ..
mv daloradius /var/www/html/
# 然后更改http文件夹的权限并为daloradius配置文件设置正确的权限:
cp /var/www/html/daloradius/library/daloradius.conf.php.sample /var/www/html/daloradius/library/daloradius.conf.php
chown -R www-data:www-data /var/www/html/daloradius/
chmod 664 /var/www/html/daloradius/library/daloradius.conf.php
# 你现在应该修改filedaloradius.conf.php以调整MySQL数据库信息,打开daloradius.conf.php并添加数据库用户名,密码和数据库名称:
vi /var/www/html/daloradius/library/daloradius.conf.php
$configValues['CONFIG_DB_HOST'] = 'localhost';
$configValues['CONFIG_DB_PORT'] = '3306';
$configValues['CONFIG_DB_USER'] = 'radius';
$configValues['CONFIG_DB_PASS'] = 'yourpassword';
$configValues['CONFIG_DB_NAME'] = 'radius';
# 为确保一切正常,请重新启动freeradius和apache2:
systemctl restart freeradius.service apache2
# 使用你的系统IP地址或域名打开管理员链接,地址如http://ip-address/daloradius,然后会出现下图的页面:
默认登录详细信息是:
用户名:administrator
密码:radius
至此,FreeRADIUS和Daloradius安装完成。
7.Daloradius设置中文(非必须执行)
GitHub上的1.3版本的lang目录下是有zh.php这个文件的.手动添加zh菜单即可
# 进入Daloradius 文件目录
cd /var/www/html/daloradius
# 修改config-lang.php,添加中文选项
vim config-lang.php
# 添加中文菜单选项
<option value="zh"> Simplified Chinese </option>
重启服务,使配置生效
# 重启freeradius服务
systemctl restart freeradius
# 重启apache2服务
systemctl restart apache2
在配置菜单中选择中文,应用
8.配置EAP认证
还未完成