freeradius与mySQL联用的最简单例程失败,不知原因出在哪里

freeradius与mySQL联用的最简单例程失败,不知原因出在哪里,第1张

1. 创建数据库

mysql -u root -p

CREATE DATABASE radius

GRANT ALL ON radius.* TO radius@localhost IDENTIFIED BY "radpass"

exit

上述命令创建了一个名为radius的数据库,并且创建了一个名为radius@localhost,密码为radpass的数据库用户,并赋予相应权限。

2. 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 支持

详细的表定义参见: http://wiki.freeradius.org/MySQL_DDL_script

3. 导入和建立表结构

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

上述命令执行schema.sql和nas.sql的sql语句,建立相应的数据库结构。

4.FreeRadius2配置,重要!!

- radius主配置文件包括sql部分: /etc/raddb/radiusd.conf$INCLUDE sql.conf

否则会出现错误:

Failed to load module "sql".

同时还会影响freeradius其他模块的安装,出现错误:

E: Sub-process /usr/bin/dpkg returned an error code (1)

- 数据库设置 /etc/raddb/sql.conf,和数据库定义相符(数据库服务器、用户密码、表名称等等):

database = "mysql"

login = "radius"

password = "radpass"

- 数据库功能性定义文件: /etc/raddb/sites-available/default

实现相关模块对数据库的支持

authorize(认证),accounting(审计),session(会话,用于监测同时连接),post_auth(记录) 子段加入sql关键字,如:authorize {

preprocess

chap

mschap

suffix

eap

sql

pap

}

--配置数据库记录所有(包括拒绝reject)认证请求默认情况下,SQL模块仅记录认证成功的请求(可能是基于防止数据库快速增加和ddos攻击的考虑),如果我们基于统计的考虑需要开启这个功能的话,非常简单,还是在 /etc/raddb/sites-available/default 中的 post_auth区段中,找到或增加Post_Auth_Type REJECT 子类型,增加sql 关键字就可以了,它的原理是,在认证后,如果失败,就进入Post-Auth-Type REJECT子类型,如果定义了sql,系统会调用 /sql/mysql/dialup.conf 文件中的 postauth_query= 定义的sql语句进行处理。 post-auth { .... sql .... Post-Auth-Type REJECT {

# Login failed: log to SQL database.

sql

}} 5. 测试添加测试用帐号:mysql -u root -puse radiusinsert into radcheck (username,attribute,value,op) values ('userdbtest','Cleartext-Password','password123',':=')使用测试帐号进行测试:启动服务器或者使用调试模式:service radiusd restart测试客户端:radtest userdb password123 localhost 10 testing123

Freeradius是一套开源并且完全兼容radius协议的服务器/客户端软件,可以用它对有户的接入和访问特定的网络进行有效的认证、授权、计费功能,它支持多种验证方式,包括文件、LDAP、以及主流的支持 SQL 的数据库(ORACLE、MYSQL、DB2等 )。

Radius的基本工作原理如下:

用户接入NAS(网络接入服务器,做为Radius的客户端),NAS向RADIUS服务器使用Access-Require数据包提交用户信息,包括用户名、密码等相关信息,其中用户密码是经过MD5加密的,双方使用共享密钥,这个密钥不经过网络传播;RADIUS服务器对用户名和密码的合法性进行检验,必要时可以提出一个Challenge,要求进一步对用户认证,也可以对NAS进行类似的认证;如果合法,给NAS返回Access-Accept数据包,允许用户进行下一步工作,否则返回Access-Reject数据包,拒绝用户访问;如果允许访问,NAS向RADIUS服务器提出计费请求Account-Require,RADIUS服务器响应Account-Accept,对用户的计费开始,同时用户可以进行自己的相关 *** 作。

更多关于freeradius的信息,请参考官方网站:http://www.freeradius.org/


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6839713.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-29
下一篇 2023-03-29

发表评论

登录后才能评论

评论列表(0条)

保存