搭建freeradius+daloradius作为认证服务器
CENTOS
Note: CentOS and RedHat link their LDAP libraries against NSS. FreeRADIUS uses OpenSSL. NSS and OpenSSL cannot be used in the same application, as they will cause it to crash. FreeRADIUS therefore must use libldap from the LDAP Toolbox Project, which uses OpenSSL
To use these packages, create a Yum / DNF repository file
echo ‘[ltb-project]
name=LTB project packages
baseurl=https://ltb-project.org/rpm/$releasever/$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-LTB-project’ > /etc/yum.repos.d/ltb-project.repo
Create a Yum / DNF repository file for NetworkRADIUS
echo ‘[networkradius]
name=NetworkRADIUS-$releasever
baseurl=http://packages.networkradius.com/centos/$releasever/repo/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/packages.networkradius.com.gpg’ > /etc/yum.repos.d/networkradius.repo
——————————-安装FreeRADIUS 3.0 服务器程序
yum install -y freeradius.x86_64
3.2.安装FreeRADIUS工具包(freeradius-utils)
yum install freeradius-utils
3.3.FreeRADIUS 3.0的测试
3.3.1.修改用户管理配置文件
该文件是/etc/raddb/users,使用vi工具打开,命令如下:
vi /etc/raddb/users
打开文件后,查找 steve Cleartext-Password :="testing" (76-84行), 取消该段内容的注释。
[root@HK-OPS-SER-RADIUS-001 lang]# cat /etc/raddb/users |egrep -v "^#|^$"
steve Cleartext-Password := "testing"
Service-Type = Framed-User,
Framed-Protocol = PPP,
Framed-IP-Address = 172.16.3.33,
Framed-IP-Netmask = 255.255.255.0,
Framed-Routing = Broadcast-Listen,
Framed-Filter-Id = "std.ppp",
Framed-MTU = 1500,
Framed-Compression = Van-Jacobsen-TCP-IP
[root@HK-OPS-SER-RADIUS-001 lang]#
3.3.2.关闭防火墙及selinux
Systemctl stop firewall
Systemctl disable firewall
setenforce 0
3.3.3.以调试方式启动freeradius
radiusd –X
再打开一个新的终端,以root身份登录,执行如下命令:
radtest steve testing localhost 0 testing123
[root@HK-OPS-SER-RADIUS-001 lang]# radtest steve testing localhost 0 testing123
Sent Access-Request Id 198 from 0.0.0.0:46416 to 127.0.0.1:1812 length 75
User-Name = "steve"
User-Password = "testing"
NAS-IP-Address = 10.21.2.4
NAS-Port = 0
Message-Authenticator = 0x00
Cleartext-Password = "testing"
Received
Access-Accept———–出现即为正常
Id 198 from 127.0.0.1:1812 to 0.0.0.0:0 length 71
Service-Type = Framed-User
Framed-Protocol = PPP
Framed-IP-Address = 172.16.3.33
Framed-IP-Netmask = 255.255.255.0
Framed-Routing = Broadcast-Listen
Filter-Id = "std.ppp"
Framed-MTU = 1500
Framed-Compression = Van-Jacobson-TCP-IP
3.4.MariaDB的安装
默认情况下,CengOS 7.0已经安装了mariadb,版本为5.5.35。如果想安装最新版的Mariadb,装方法与FreeRADIUS类似,执行如下命令,系统会升级到最新版本:
yum intsall mariadb
3.5.FreeRADIUS与MariaDB的对接
3.5.1.安装freeradius-mysql组件
yum install freeradius-mysql
3.5.2.激活和启动mariadb服务
默认情况下,mariadb并没有被激活,使用如下命令激活服务:
systemctl enable mariadb
然后,使用如下命令,启动mariadb:
systemctl start mariadb
使用如下命令,查询mariadb服务的状态:
systemctl status mariadb
3.5.3.创建数据库
命令如下:
mysql -u root –p
要求输入密码时,直接回车即可。
mysql>create database radius;
mysql>grant all on radius.* to radius@localhost identified by "radpass";
mysql>exit;
3.5.4.导入表结构
命令如下:
mysql -u root radius < /etc/raddb/mods-config/sql/main/mysql/scheama.sql
上面的指令,共导入了7个表,分别是:
radcheck 用户检查信息表
radreply 用户回复信息表
radgroupcheck 用户组检查信息表
radgroupreply 用户组检查信息表
radusergroup 用户和组关系表
radacct 计费情况表
radpostauth 认证后处理信息,可以包括认证请求成功和拒绝的记录。
建立组信息:(在此新建组名称为user)
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’);
3.5.6.修改 FreeRADIUS中的mysql 认证配置
执行如下命令:
cd /etc/raddb/mods-enabled
ln -s ../mods-available/sql —-改变认证为SQL认证,而非本地认证
3.5.7.修改 FreeRADIUS中的mysql 配置文件
该配置文件位于/etc/raddb/mods-available目录,名称为sql
可以通过vi来修改,命令如下:
vi /etc/raddb/mods-available/sql
找到driver = “rlm_sql_null”这一行,修改为driver = “rlm_sql_mysql”。保持并退出。
同时修改配置为正确配置,不然会报错
vim /etc/raddb/mods-enabled/sql
server = "localhost"
port = 3306
login = "radius"
password = "radpass"
3.5.8.测试通过数据库做用户认证
重新以调试方式运行freeradius:
radiusd -X
再打开一个新的终端,运行测试工具命令:
radtest test testpwd localhost 1812 testing123
完毕。
—————————安装FreeRADIUS管理界面Daloradius
wget http://nchc.dl.sourceforge.net/project/daloradius/daloradius/daloradius0.9-9/daloradius-0.9-9.tar.gz
#解压
tar xf daloradius-0.9-9.tar.gz
cd daloradius-0.9-9
#查看安装说明
more INSTALL
2、解决依赖
在INSTALL中我们可以看到程序的需求,需要满足这些需求,否则不能正常运行。
Apache 1/2
PHP 4/5
PHP GD
PHP DB Abstraction Layer (may require PHP Pear)
PHP Mail
MySQL 4/5
#安装httpd
yum install httpd -y
#安装php及组件
yum install php php-mysql php-gd -y
# 安装
yum install php-pear-DB -y
#转移php文件
cp -a daloradius-0.9-9 /var/www/daloradius
3、导入数据库
第一种情况:radius数据库已经存在了。
就是说已经在MySQL中创建了radius数据库,并且创建了相应的表,这个在安装FreeRADIUS服务的时候已经完成了,这种情况操作就比较简单了。
cd /var/www/html/daloradius/contrib/db
mysql -uradius -pradpass radius < ./mysql-daloradius.sql
第二种情况:radius数据库不存在。
这种情况下先要创建radius,然后在导入数据表。
#创建数据库
mysqladmin create radius
#使用FreeRADIUS 1.x版本,执行下面命令
mysql -uroot -p radius < fr1-mysql-daloradius-and-freeradius.sql
#使用FreeRADIUS 2.x版本,执行下面命令
mysql -uroot -p radius < fr2-mysql-daloradius-and-freeradius.sql
4.4.设置数据库连接
具体操作我们也是查看INSTALL文档。
cd /var/www/html/daloradius/library
vim daloradius.conf.php
设置daloradius目录用户组和用户,设置daloradius.conf.php权限
# chown -R apache:apache /var/www/html/daloradius/
# chmod 664 /var/www/html/daloradius/library/daloradius.conf.php
设置daloradius数据库连接信息,打开daloradius.conf.php文件,修改CONFIG_DB_USER,CONFIG_DB_PASS,CONFIG_DB_NAME。
# vim /var/www/html/daloradius/library/daloradius.conf.php
#具体根据自己的参数设定
$configValues[‘CONFIG_DB_ENGINE’] = ‘mysql’;
$configValues[‘CONFIG_DB_HOST’] = ‘localhost’;
$configValues[‘CONFIG_DB_PORT’] = ‘3306’;
$configValues[‘CONFIG_DB_USER’] = ‘radius’;
$configValues[‘CONFIG_DB_PASS’] = ‘radpass’;
$configValues[‘CONFIG_DB_NAME’] = ‘radius’;
##这个路径和程序放置路径有关系
$configValues[‘CONFIG_PATH_DALO_VARIABLE_DATA’] = ‘/var/www/html/daloradius/var’;
重启服务
# systemctl restart radiusd.service
# systemctl restart mariadb.service
# systemctl restart httpd
登录web界面
默认用户名: administrator
密码: radius
http://ip-address/daloradius/login.php
Daloradius 中文版设置
进入Daloradius 文件目录,修改config-lang.php,添加中文选项:
# cd /var/www/html/daloradius
# vim config-lang.php
<option value="zh"> Simplified Chinese </option>
进入lang目录,修改main.php,增加简体中文文件:
# cd lang/
# vim main.php
case "zh":
include (dirname(__FILE__)."/zh.php");
break;
下载地址:http://www.voidcn.com/article/p-zdwbbrrt-rz.html
– 返回lang目录,将下载的zh.php文件放入lang目录,重启radius服务;
# cd /var/www/html/daloradius/lang
将下载的zh.php上传至此目录。
# systemctl restart radiusd.service
# systemctl restart httpd
设置Config -> Language Settings ->Simplified Chinese
———————-排错1
rlm_sql (sql): Opening additional connection (0), 1 of 32 pending slots used
rlm_sql_mysql: Starting connect to MySQL server
rlm_sql_mysql: Couldn’t connect to MySQL server @:radius
rlm_sql_mysql: MySQL error: Access denied for user ”@’localhost’ to database ‘radius’
rlm_sql_mysql: Socket destructor called, closing socket
rlm_sql (sql): Opening connection failed (0)
rlm_sql (sql): Removing connection pool
/etc/raddb/mods-enabled/sql[20]: Instantiation failed for module "sql"
解决:取消注释
vim /etc/raddb/mods-enabled/sql
server = "localhost"
port = 3306
login = "radius"
password = "radpass"
——————-daloradius报错
Could not open the file for writing: /var/www/html/daloradius/library/daloradius.conf.php
Check file permissions. The file should be writable by the webserver’s user/group
解决:修改权限
chown apache:apache /var/www/html/daloradius/library/daloradius.conf.php
——————-daloradius报错 :密码加密后显示明文
暂时还木有人评论,坐等沙发!