安装freeradius

  安装freeradius 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

写道
yum install openssl openssl-devel

 


2、安装mysql 

写道
yum install mysql-server

 

安装完成后执行

写道
service mysqld start

 

启动mysql。


安装过程中一般会提示输入mysql的root密码,若没有的话,则直接mysql -p即可进入

然后执行

写道
set password for root@localhost=password('yourpassword');

 正确执行后退出检验一下密码



3、安装freeradius server


最新的freeradius的版本是2.1.12,下载地址:ftp://ftp.freeradius.org/pub/freeradius/freeradius-server-2.1.12.tar.gz
下载后解压缩,进入解压缩后的目录:

写道
./configure
make
make install



安装完后,可以使用命令

写道
radiusd -X

 

进入radiusd服务器的调试模式,如果能进入则安装成功。一次不行可以尝试两次。

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


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

一般以上过程不会出问题,主要的问题在于配置。

4、配置过程 

进入mysql后,执行:

写道
create database radius;

来创建名为radius的数据库

exit退出数据库。

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

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

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

 

建议不用单独给radius设置一个mysql账号跟密码,麻烦的要死,碰到权限问题神马的你就完蛋了

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

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

写道
use radius;
show tables;

可以看到如下的表结构


    +------------------+

    | 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 支持
详细的表定义参见: http://wiki.freeradius.org/MySQL_DDL_script

修改usr/local/etc/raddb/site_enabled下的defoult文件(2.1.1与1.1.7不同,radius.conf被 分成了几个部分,authorize 被放在了defoult文件下,请注意),把authorize{} 、accounting {}中的sql前面的#去掉,并把authorize{} 中的files前加#;文件部分如下:

写道

authorize {

chap

mschap

suffix

eap

#files

sql

pap

}

accounting {

detail

unix

radutmp

sql

}


修改与mysql数据库连接的配置文件/usr/local/etc/raddb/sql.conf,

写道
server = "localhost"

login = "root"

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

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

 

修改客户端信息配置文件:/usr/local/etc/raddb/clients.conf

写道
client 127.0.0.1 {

secret = testing123
shortname = localhost
nastype = other

}

client 192.168.1.5 {

secret = testing123
shortname = radiusclient
nastype = other

}

 127.0.0.1是本机,可以测试用用;192.168.1.5是你的radius client的ip


修改radius的配置文件,在目录/usr/local/etc/raddb/radiusd.conf中

写道
modules {}

一定要取消这一行的注释: $INCLUDE sql.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。其他模块也在差不多这个目录的一层中,注意找找。

在数据库中加入测试帐号

写道
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>exit;退出数据库

 创建了一个用户,用户名密码都是“test”

写道
INSERT INTO radgroupcheck (groupname,attribute,op,VALUE) VALUES ('user','Simultaneous-Use',':=','1');

 若希望一个账号只允许一个用户登陆,需添加这行;不添加则一个账号可以多个用户同时登陆



5、 测试radius 

写道
radiusd -X


要重新开一个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

Framed-IP-Address = 255.255.255.255

Framed-IP-Netmask = 255.255.255.0

 


6、排错 

      如果接收到类似于这样的信息:rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=222, length=38。

      可以到usr/local/var/log去查看freeradius的日志。在安装过程我就接收到这样的信息,百思不得其解,以为是安装出了问题,后来是查看日志,发现如下信息:

     141 WARNING: Found User-Password == "...".

    142 WARNING: Are you sure you don't mean Cleartext-Password?

    143 WARNING: See "man rlm_pap" for more information.

    144 rlm_sql: Failed to create the pair: Invalid octet string "Yes,Good!" for attribute name "Repley-Message"

    145 rlm_sql (sql): Error getting data from database

    146 [sql] SQL query error; rejecting user

    147 rlm_sql (sql): Released sql socket id: 1

     从而发现我在表radrepley中的数据记录内容是错误的,删除这条记录后,问题得到解决

出错

1、如果出现“rlm_sql (sql): Could not link driver rlm_sql_mysql: rlm_sql_mysql.so: cannot open shared object file: No such file or directory

”找不到驱动包的错误,就要

 a:先安装mysql-devel

 b:然后进入到freeradius的安装文件目录下的src/modules/rlm_sql/drivers/rlm_sql_mysql  运行命令:./configure --with-mysql-dir=/usr/share/mysql/ --with-mysql-lib-dir=/usr/lib/mysql/

 c:make;make intall  这时候会把rlm_sql_mysql的驱动安装到/usr/local/lib目录下,但是必须把这些驱动copy到/usr/lib 目录下才能正常运行:#cp -a /usr/local/lib/rlm_sql_mysql* /usr/lib 

还有可能出现关于eap的错误,说什么server.pem证书读取失败,实际上server.pem证书根本没有.进到/usr/local/etc /raddb/certs/目录下.运行里面的bootstrap文件#./bootstrap 会自动创建证书.实在不明白,里面还有个README文件可做参考.

你可能感兴趣的:(radius)