赞
踩
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。