Radius服务器搭建---基于CentOS-7.9

发布时间 2023-04-24 20:39:27作者: jianmuzi

1. 关闭防火墙

systemctl stop firewalld //关闭防火墙
systemctl disable firewalld //关闭防火墙自启

注:firewalld有必要时,可以重新开启,这里关闭

2. 关闭selinux

sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config //永久关闭Selinux,重启生效

setenforce 0 //临时关闭Selinux,立即生效

注:selinux这里关闭,开启需要修改很多配置和权限,有需要时再开启。

3. 安装基础软件和库

yum install -y net-tools bash-completion lrzsz wget unzip epel-release

也可以分步安装:

1 yum install -y net-tools //安装Ifconfig工具
2 yum install bash-completion -y //安装命令补全工具
3 yum -y install lrzsz //安装文件管理工具
4 yum install -y wget unzip //安装unzip
5 yum install -y epel-release //安装EPEL软件库

yum makecache fast //重置软件库缓存信息

yum -y update && yum -y upgrade //升级系统和软件,可以不升级,有需要时再升

4. 安装和配置MySQL

yum install -y mariadb-server mariadb
systemctl start mariadb && systemctl enable mariadb
mysql_secure_installation //SQL自动配置(除设置密码,其余都回车)

mysql -u root -p //登录数据库

MariaDB [(none)]> create database radius; 创建数据库radius
MariaDB [(none)]> grant all on radius.* to radius@'%' identified by 'radpass'; //设置radius用户名密码及权限
MariaDB [(none)]> flush privileges; //刷新权限
MariaDB [(none)]> exit //退出

5. 安装web相关软件和服务

yum install -y httpd //安装httpd服务
systemctl enable httpd && systemctl start httpd && systemctl status httpd

yum install -y php php-mysql php-pear php-devel php-common php-gd php-mbstring php-mcrypt php-xml php-pear-DB //安装PHP及软件包
systemctl restart httpd //安装完成后重启Apache Web服务以使PHP生效

6. radius安装和数据库相关配置

yum install -y freeradius freeradius-utils freeradius-mysql //安装FreeRadius及组件
systemctl start radiusd && systemctl enable radiusd && systemctl status radiusd

## firewall-cmd --permanent --add-service=radius //设置防火墙允许radius服务(本文前面已禁止防火墙自启动,可不运行此命令)
## firewall-cmd --reload //重启防火墙

mysql -u root -p radius < /etc/raddb/mods-config/sql/main/mysql/schema.sql //创建FreeRadius在数据库中的数据表

#配置SQL模块,更改数据库连接参数,以适合环境
vi /etc/raddb/mods-available/sql //使用VI编辑器修改配置文件

driver = “rlm_sql_mysql”
dialect = “mysql”
server = “localhost”
port = 3306
login = “radius”
password = “radpass”
radius_db = “radius”

#创建软连接,使能SQL模块
ln -s /etc/raddb/mods-available/sql /etc/raddb/mods-enabled/

chgrp -h radiusd /etc/raddb/mods-enabled/sql //配置sql文件权限

systemctl restart radiusd.service //重启radius服务

7. 安装和配置daloradius(用于管理radius的前端平台)

wget https://github.com/lirantal/daloradius/archive/master.zip //从Github上获取并下载源代码
unzip master.zip //解压
rm -f master.zip
mv daloradius-master/ /var/www/html/daloradius //移动文件夹

#修改所属用户和权限
cp /var/www/html/daloradius/library/daloradius.conf.php.sample /var/www/html/daloradius/library/daloradius.conf.php
chmod -R 664 /var/www/html/daloradius/library/daloradius.conf.php
chown -R apache:apache /var/www/html/daloradius

## firewall-cmd --permanent --add-service=http //打开防火墙http服务(本文中已关闭防火墙,不必运行此命令)
## firewall-cmd --reload //重启防火墙

mysql -u root -p radius < /var/www/html/daloradius/contrib/db/fr2-mysql-daloradius-and-freeradius.sql //导入SQL脚本
mysql -u root -p radius < /var/www/html/daloradius/contrib/db/mysql-daloradius.sql //导入SQL脚本

vi /var/www/html/daloradius/library/daloradius.conf.php //使用VI编辑器修改DaloRadius配置文件

(28-33行)
configValues['CONFIG_DB_ENGINE'] = 'mysqli';
configValues[‘CONFIG_DB_HOST’] = 'localhost';
configValues['CONFIG_DB_PORT'] = '3306'; #连接mysql数据库的端口
configValues[‘CONFIG_DB_USER’] = ‘radius’; #连接mysql数据库的账户
configValues['CONFIG_DB_PASS'] = 'radpass'; #连接mysql数据库账号的密码
configValues[‘CONFIG_DB_NAME’] = 'radius'; #连接mysql的radius数据库
$configValues['CONFIG_FILE_RADIUS_PROXY'] = '/etc/raddb/proxy.conf';
$configValues[‘CONFIG_MAINT_TEST_USER_RADIUSSECRET’] = ‘testing123’; (88行) #注意这条,要和 /etc/raddb/clients.conf 文件设置的secret = xxxxxxxxxx 值一样。

配置完成后保存退出

8. 重启Radius和MySQL等服务

添加启动服务,调整FreeRadius与MariaDB的启动顺序,FreeRadius必须在MariaDB启动之后启动,在[Unit]部分,增加After=mariadb.service,如下所示:

vi /etc/systemd/system/multi-user.target.wants/radiusd.service

[Unit]
Description=FreeRADIUS high performance RADIUS server.
After=syslog.target network.target ipa.service dirsrv.target krb5kdc.service
After=mariadb.service

systemctl daemon-reload #重新加载守护进程
systemctl restart radiusd.service
systemctl restart mariadb.service
systemctl restart httpd

9. 访问daloradius平台

http://192.168.0.238/daloradius

添加中文语言选项

vi /var/www/html/daloradius/config-lang.php
添加

10. 测试,验证是否搭建成功

【本地文件认证测试】
测试前,先去掉 /etc/raddb/users 文件中bob用户的注释,其他用户也可以

说明:实际应用时,需要修改/etc/raddb/clients.conf配置文件的IP限制,将自己radius客户端的IP加到白名单。

1)radiusd.service服务开启时,systemctl restart radiusd 重启服务,
然后,使用 radtest bob hello 127.0.0.1 0 testing123 测试。

2)使用 radiusd -X 测试,前提是先把radiusd.service服务停掉,
systemctl stop radiusd , 因为radiusd.service会占用1812端口。
然后输入 radtest bob hello 127.0.0.1 0 testing123
测试完,systemctl start radiusd,把radiusd.service服务重新开起来。

【数据库认证测试】
登录mysql
mysql -uradius -p

使用radius数据库
use radius;

建立radgroupreply组信息(仅作测试用,对应回复信息)
insert into radgroupreply (groupname,attribute,op,value) values ('user','Auth-Type',':=','Local');
insert into radgroupreply (groupname,attribute,op,value) values ('user','Service-Type',':=','Framed-User');
insert into radgroupreply (groupname,attribute,op,value) values ('user','Framed-IP-Address',':=','255.255.255.255');
insert into radgroupreply (groupname,attribute,op,value) values ('user','Framed-IP-Netmask',':=','255.255.255.0');

建立用户信息:(在此新建用户名为test,密码为testpwd)
insert into radcheck (username,attribute,op,value) values ('test','Cleartext-Password',':=','testpwd');

将用户加入组中
insert into radusergroup (username,groupname) values ('test','user');

重启radius测试
systemctl restart radiusd

测试
radtest test testpwd 127.0.0.1 0 testing123

尾注:freeradius可以本地文件配置认证,也可以数据库配置认证,还可以对接第三方web,这三点都是独立的。