您的位置:首页 > 运维架构 > Apache

linux+FreeRadius+mysql+Apache安装搭建过程

2015-10-20 15:13 579 查看
linux系统:centos6.5

FreeRadius:2.2.8版本源码

mysql : Ver 14.14 Distrib 5.1.73

Apache :2.2.15

好了,由于项目需要,本人搭建了Radius服务器,网上的资料坑太多,经过几天努力,已经搭建成功,现总结一下搭建的过程,方便大家一起学习。

一、安装

1、安装环境openssl

Yum -y install openssl

2、解压freeradius-server-2.2.8.tar.gz

Tar zxvf freeradius-server-2.2.8.tar.gz

3、进入freeradius-server-2.2.8目录

./configure

Make

Make install

4、安装成功后freeradius的配置文件的路径是:/usr/local/etc/raddb/

日志文件的路径是:/usr/local/var/log

二、测试

1、进入路径 /usr/local/etc/raddb

2、打开users文件,在第一行插入

testing Cleartext-Password := "testing"

(这行的意思是创建一个名为testing的用户,密码为testing)

保存退出

3、以root身份运行 radiusd -X (-X调试模式启动,注意是大写的X。-f 不运行在
deamon状态下,无参数 是正常模式下启动)

.... adding new socket proxy address * port 59867

Listening on authentication address * port 1812

Listening on accounting address * port 1813

Listening on command file /usr/local/var/run/radiusd/radiusd.sock

Listening on authentication address 127.0.0.1 port 18120 as server inner-tunnel

Listening on proxy address * port 1814

Ready to process requests.

证明服务器启动成功,等待客户端发送消息

4、另启动一个终端,进入目录/usr/local/etc/raddb中执行

radtest testing testing 127.0.0.1 0 testing123

(注释:radtest [账号] [密码] [认证位址] [NAS端口] [秘钥]

“testing123”是FreeRADIUS和NAS的共享密钥,client.conf中有定义)

5、在打印出的信息最后一行中

rad_recv: Access-Accept 那就说明本地测试认证成功;

rad_recv: Access-Reject那就表示本地测试认证失败了。

只要在/user/local/etc/raddb/users文件中添加了测试用户,那失败的原因一般都是用户名或者密码不正确。

三、添加新用户测试

1、添加用户

编辑文件users

#vi users

在文件末尾添加用户,格式如下:

steve Cleartext-Password := "testing"

……

admin Cleartext-Password := "testing"

binbin Cleartext-Password := "binbin"

2、

FreeRadius安装完后默认只允许本机的client客户端访问radius服务器

添加代理主机,编辑文件clients.conf

#vi clinets.conf

在文件末尾添加客户端,格式如下

# 添加一个子网 192.168.2.0/24 的网段可访问

client 192.168.2.0/24 {

secret = 111111

shortname = binbin

}

3、关闭防火墙

Iptables -F

4、在另外一台不同IP的终端上测试

radtest binbin binbin 192.168.2.100 0 111111

(192.168.2.100 是我的运行radius服务的虚拟机的IP)

测试成功

四、FreeRadius+mysql集成

(1)建立数据库

进入mysql后,执行:

create database radius;

来创建名为radius的数据库

(2)导入数据表

进入/usr/local/etc/raddb/sql/mysql下导入和建立表结构

mysql -u root -p radius < /usr/local/etc/raddb/sql/mysql/schema.sql

mysql -u root -p radius < /usr/local/etc/raddb/sql/mysql/nas.sql

(注 意,2.1.12版本的数据库文件是scheme.sql ,这跟其他版本不同,1.1.7版本之前的数据库文件是mysql.sql ,或者rlm_mysql.sql,而且存放路径不同,2.x以上的版本是放在/usr/local/etc/raddb/sql/mysql里面)

(3)导入完成后,可以在用命令

use radius;

show tables;

MySQL中表结构的定义

针对FreeRadius2,数据表的设计和结构定义在下面的文件中:

/etc/raddb/sql/mysql/schema.sql 主数据库定义,7个表,包括

radcheck 用户检查信息表

radreply 用户回复信息表

radgroupcheck 用户组检查信息表

radgroupreply 用户组检查信息表

radusergroup 用户和组关系表

radacct 计费情况表

radpostauth 认证后处理信息,可以包括认证请求成功和拒绝的记录。

/etc/raddb/sql/mysql/nas.sql 网络设备定义,只有一个表:

nas 网络设备表

下面的表用于一些扩展功能,可以按需导入。

ippool.sql ip池

wimax.sql wimax设备支持

cui.sql cui 支持

(4)配置

1、Vim /usr/local/etc/raddb/radiusd.conf

将$INCLUDE sql.conf 前的#去掉

2、vim /etc/raddb/sql.conf

取消readclients = yes 前的注释

3、vim /usr/local/etc/raddb/site_enabled/default

把authorize{} 、accounting {}中的sql前面的#去掉,并把authorize{} 中的files前加#;文件部分如下:

authorize {

chap

mschap

suffix

eap

#files

sql

pap

}

accounting {

detail

unix

radutmp

sql

}

4、vim /etc/raddb/sites-enabled/inner-tunnel

authorize{}模块中的

files前加注释

取消sql前的注释

5、修改与mysql数据库连接的配置文件

Vim /usr/local/etc/raddb/sql.conf,

server = "localhost"

login = "root"

password = "数据库root的登陆密码"

radius_db = "radius" //radius为数据库名

6、在数据库中加入测试帐号

mysql> use radius;

建立组信息:(这些命令不用做任何修改,直接ctrl+c→ctrl+v就好了)

mysql>insert into radgroupreply (groupname,attribute,op,value) values ('user','Auth-Type',':=','Local');

mysql> insert into radgroupreply (groupname,attribute,op,value) values ('user','Service-Type',':=','Framed-User');

mysql> insert into radgroupreply (groupname,attribute,op,value) values ('user','Framed-IP-Address',':=','255.255.255.255');

mysql> insert into radgroupreply (groupname,attribute,op,value) values ('user','Framed-IP-Netmask',':=','255.255.255.0');

建立用户信息:

mysql> insert into radcheck (username,attribute,op,value) values ('test','User-Password',':=','test');

将用户加入组中:

mysql> insert into radusergroup (username,groupname) values ('test','user');

添加用户回复信息:

mysql> insert into radreply(username,attribute,op,value) values('test','Reply-Message','=','Yes,Good!');

以上命令已添加了一个user组和一个用户,用户名密码都是“test”

5、测试radius

终端运行radiusd -X,开启radius服务器

重新开一个shell终端来执行下面的命令

radtest test test localhost 0 testing123

若显示如下信息,则说明radius server安装与基本配置正常

Sending Access-Request of id 222 to 127.0.0.1 port 1812

User-Name = "test"

User-Password = "test"

NAS-IP-Address = 127.0.0.1

NAS-Port = 0

rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=222, length=38

Service-Type = Framed-User

Reply-Message=Yes,Good!

Framed-IP-Address = 255.255.255.255

Framed-IP-Netmask = 255.255.255.0

五、FreeRadius的web配置

WEB管理的安装与配置

服务器搭建成功后如果需要web管理,freeradius自带了一个web管理程序dialup_admin。

1、首先测试Apache与PHP安装的正确性。

Apache的WEB目录在 /var/www/html下

首先测试Apache,在浏览器输入 Http://127.0.0.1下看到Apache界面表示正常。
编辑一个PHP测试文件,保存为 phpinfo.php。在浏览器输入Http://127.0.0.1/phpinfo.php看到php相关信息页面,表示php运作正常。

2、直接将freeradius-2.2.8/dialup_admin/文件夹全部拷贝到Apache网页目录下/var/www/html下。

修改dialup_admin/conf/下的admin.conf文件中的如下参数:

sql_type:mysql

sql_server:localhost //sql地址

sql_port:3306 //默认端口

sql_username:root

sql_password:123456 //密码

sql_database:radius //数据库名

general_charset: UTF-8 //避免浏览器乱码

general_base_dir: /var/www/html/dialup_admin //dialup_admin主目录

general_domain: company.com //这个可改也可不改,没什么影响,改了还看点而已

general_radius_server_auth_proto: chap //将pap改成chap

general_encryption_method: clear //将crypt改成clear 说明一下,general_encryption_method: clear是必须得改的,否则用

web管理界面添加用户后会出现密码被加密后无法识别导致认证失败,clear方式是以明文存储密码,freeradius默认是用明文存储密码,两者要对应,所以这里要用clear方式。

修改dialup_admin/conf/下的naslist.conf文件如下

nas1_name: nas1.%{general_domain}

nas1_model: Computer //NAS服务器的类型

nas1_ip: 192.168.2.1 //NAS服务器的IP地址

nas1_port_num: 15

nas1_community: public

其他的通通删掉或用#号注释掉,这样修改的目的是方便在web管理界面中直观的看到每个NAS服务器连接用户的情况。

3、导入相关数据库表

cd /var/www/html/dialup_admin/sql

mysql -uroot –p radius < userinfo.sql

mysql -uroot –p radius < totacct.sql

mysql -uroot –p radius < mtotacct.sql

mysql -uroot –p radius < badusers.sql

dialup_admin用的是php3格式的文件,需要web服务器支持这种格式, 修改/etc/httpd/conf/httpd.conf文件,

在此文件最后添加 AddType application/x-httpd-php .php .html .htm .php3

(备注:本人在/etc/httpd/conf/httpd.conf添加上面的语句后,通过Firefox连接失败,注释掉这句话后,就能连接成功,貌似没有什么影响,)

4、保存后重启httpd服务

service httpd restart

访问:http://localhost/dialup_admin/htdocs/index.html

能正常打开各页面就ok了。默认是打开的sql调试模式。可以在admin.conf中找到sql_debug.把true改为false即可关闭。

至此,整个Radius服务器搭建完成。

(php图形界面参考http://freeradius.org/dialupadmin.html)

六、常见错误

1、错误信息:Refusing to start with libssl version OpenSSL 1.0.1e-fips 11 Feb 2013 (in range 1.0.1 - 1.0.1f). Security advisory CVE-2014-0160 (Heartbleed)

For more information see http://heartbleed.com
解决:

将radiusd.conf中的allow_vulnerable_openssl = no 改为:

allow_vulnerable_openssl = yes

2、error while loading shared libraries: libfreera....

解决的方法是在/etc/ld.so.conf文件中添加一行/usr/local/lib,然后在root用户下运行命令ldconfig即可

3、Failed binding to authentication address *port 1812:Address already in use

用命令lsof -i:1812查看占用进程,应该就是freeradius本身,kill该进程,然后重新# radiusd -X便可以运行服务程序了

4、/usr/local/etc/raddb/sql.conf[22]: Instantiation failed for module "sql"

重新编译安装一下数据库模块,sql的目录是在安装目录在FreeRadius代码的目录/src/modules/rlm_sql/drivers/rlm_sql_mysql。

后者重启一下吗mysql服务,service mysqld restart
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: