分类: 网络与安全
2011-11-23 17:28:48
什么是FreeRADIUS?
RADIUS是Remote Access Dial In User Service的简称。
RADIUS主要用来提供认证(Authentication)机制,用来辨认使用者的身份与密码 –> 确认通过之后,经由授权
(Authorization)使用者登入网域使用相关资源 –> 并可提供计费(Accounting)机制,保存使用者的网络使用记录。
FreeRADIUS是一款OpenSource软件,基于RADIUS协议,实现RADIUS AAA(Authentication、Authorization、Accounting)功能。
Radius认证的过程:
1,supplicant向NAS发起802.1X的EAP0L-START;
2,NAS收到EAP0L-START之后发给supplicant一个eap/identity;
3,supplicant收到这个eap/identity之后将username作为response发回给NAS;
4,NAS将包含有username的eap包封装入RADIUS包的的eap_message属性中,并作为access request包(包ID假定为1)发给RADIUS服务器;
5,RADIUS服务器收到这个含有eap_message属性的RADIUS包之后,发回一个带有eap_message(其内部的EAP包为md5 challenge)给NAS;
6,NAS收到这个RADIUS包之后将eap_message属性中的EAP包提取出来,然后封装在EAPOL中发给supplicant;
7,supplicant收到这个EAP/MD5 CHALLENGE之后将passwd放入EAP包中发给NAS,然后NAS再次打包发给RADIUS
8,RADIUS进行认证,如果username和passwd匹配之后认证通过。
1、安装openssl
2、安装mysql
安装完成后执行
启动mysql。
安装过程中一般会提示输入mysql的root密码,若没有的话,则直接mysql -p即可进入
然后执行
正确执行后退出检验一下密码
3、安装freeradius server
最新的freeradius的版本是2.1.12,下载地址:
下载后解压缩,进入解压缩后的目录:
安装完后,可以使用命令
进入radiusd服务器的调试模式,如果能进入则安装成功。一次不行可以尝试两次。
安装成功后freeradius的配置文件的路径是:usr/local/etc/raddb/
日志文件的路径是:usr/local/var/log
一般以上过程不会出问题,主要的问题在于配置。
4、配置过程
进入mysql后,执行:
来创建名为radius的数据库
exit退出数据库。
再进入usr/local/etc/raddb/sql/mysql下导入和建立表结构
建议不用单独给radius设置一个mysql账号跟密码,麻烦的要死,碰到权限问题神马的你就完蛋了
(注
意,2.1.12版本的数据库文件是scheme.sql ,这跟其他版本不同,1.1.7版本之前的数据库文件是mysql.sql
,或者rlm_mysql.sql,而且存放路径不同,2以上的版本是放在/usr/local/etc/raddb/sql/mysql里面)
导入完成后,可以在用命令
可以看到如下的表结构
+------------------+
| Tables_in_radius |
+------------------+
| radacct |
| radcheck |
| radgroupcheck |
| radgroupreply |
| radpostauth |
| radreply |
| radusergroup |
+------------------+
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 支持
详细的表定义参见:
修改usr/local/etc/raddb/site_enabled下的defoult文件(2.1.1与1.1.7不同,radius.conf被
分成了几个部分,authorize 被放在了defoult文件下,请注意),把authorize{} 、accounting
{}中的sql前面的#去掉,并把authorize{} 中的files前加#;文件部分如下:
修改与mysql数据库连接的配置文件/usr/local/etc/raddb/sql.conf,
修改客户端信息配置文件:/usr/local/etc/raddb/clients.conf
127.0.0.1是本机,可以测试用用;192.168.1.5是你的radius client的ip
修改radius的配置文件,在目录/usr/local/etc/raddb/radiusd.conf中
否则在radiusd -X总会报错加载模块
Failed to load module "sql".
错误,靠,堵了老子一天,网上几乎都没说,只有这位大哥说了
http://hi.baidu.com/yan__jh/blog/item/47b0341c0593ea71f724e4c3.html
同理,要是在debug时出现load module的任何相关错误,都要取消radiusd.conf中的那一行module的注释,否则不会加载。
还有别忘了,在对应模块那,要去编译安装一下,sql的目录是在安装目录/src/modules/rlm_sql/drivers/rlm_sql_mysql。其他模块也在差不多这个目录的一层中,注意找找。
在数据库中加入测试帐号
创建了一个用户,用户名密码都是“test”
若希望一个账号只允许一个用户登陆,需添加这行;不添加则一个账号可以多个用户同时登陆
5、 测试radius
要重新开一个shell终端来执行下面的命令
若显示如下信息,则说明radius server安装没有问题
shuiyuantao2015-07-08 11:22:42
lz,按照你的步骤做了,但是还是出现错误。我测试的时候提示我:rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=44, length=20。按照你说的方法改了还是不行,能否给指点一下是怎么回事吗?谢谢