什么是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服务器;
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匹配之后认证通过。
目的:搭建freeradius服务器 实现用户上网的Mac地址认证
环境:centos+freeradius+mysql
安装:
一、安装openssl
二、安装mysql
1 2 3 4 5 | [root@zhinan~] yun groupinstall "MySQL Database" /#安装MySQL数据库 [root@zhinan~] service mysqld start /#启动数据库 [root@zhinan~] netstat -nax /#查看3306端口是否在使用,从而确定安装是否成功 [root@zhinan~] mysqladmin -u root password '123' /#修改root的密码为123 [root@zhinan~] mysql -u root -p123 /#进入mysql,查看数据库是正常使用。正常使用则退出 |
三,安装freeradius
最新的freeradius的版本是2.2.0。
1 2 3 4 5 | [root@zhinan~] tar -xzvf freeradius-server-2.2.0.tar.gz /#解压缩 [root@zhinan~] cd freeradius-server-2.2.0 /#进入解压缩后的目录: [root@zhinan~] ./config /#检测安装环境 [root@zhinan~] make /#编译 [root@zhinan~] make install /#安装 |
安装完后,可以使用命令
1 | [root@zhinan~] radiusd -x /#进入radiusd服务器的调试模式,如果能进入则安装成功。 |
安装成功后freeradius的配置文件的路径是:usr/local/etc/raddb/
日志文件的路径是:usr/local/var/log
日志文件的路径是:usr/local/var/log
一般以上过程不会出问题,主要的问题在于配置。
radius 服务器几个配置文件
f 服务器端配置
f 存储radius客户端(NAS,ROUTER)的验证信息,主要是配KEY
./modules/ 主要是针对LDAP,MYSQL、数字证书等的配置
f 存储radius客户端(NAS,ROUTER)的验证信息,主要是配KEY
./modules/ 主要是针对LDAP,MYSQL、数字证书等的配置
四、配置过程
1 2 3 4 5 | [root@zhinan~] mysql -u root -p123 /#登陆mysql mysql> creat database radius; /#创建数据库 mysql> exit /#退出数据库。 [root@zhinan~] cd usr/local/etc/raddb/sql/mysql /#进入usr/local/etc/raddb/sql/mysql下 [root@zhinan~] mysql -u root -p radius < schema.sql /#把表导入到数据库中 |
(注意,2.1.1版本的数据库文件是scheme.sql ,这跟其他版本不同,1.1.7版本之前的数据库文件是mysql.sql ,或者rlm_mysql.sql,而且存放路径不同)
导入后,可以在用命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | mysql> use radius; mysql> show tabels; /#看到以下数据库表: +------------------+ | Tables_in_radius | +------------------+ | radacct | | radcheck | | radgroupcheck | | radgroupreply | | radpostauth | | radreply | | radusergroup | +------------------+ |
修改usr/local/etc/raddb/site_enabled下的defoult文件(2.1.1与1.1.7不同,f被分成了几个部分,authorize 被放在了defoult文件下,请注意),把authorize{} 、accounting {}中的sql前面的#去掉,并把authorize{} 中的files前加#;如下示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | authorize { chap mschap suffix eap #files sql pap } accounting { detail unix radutmp sql } |
修改与mysql数据库连接的配置文件/usr/local/etc/f,
1 2 3 4 | server = "localhost" login = "root" password = "数据库root的登陆密码" radius_db = "radius" /#radius为数据库名 |
修改客户端信息配置文件:/usr/local/etc/f
1 2 3 4 5 6 7 8 9 10 11 | client 127.0.0.1 { secret = testing123 shortname = localhost nastype = other } client 10.1.1.5 { ipaddr = 10.1.1.5 secret = testing123 /#Secret:Radius aaa与NAS之间的key传送是密文,而不是口令,是MD5计算结果 shortname = nas01 nastype =other |
在数据库中加入测试帐号
1 2 | [root@zhinan~] mysql -u root -p123 mysql> use radius; |
建立组信息:
insert into radgroupreply (groupname,attribute,op,value) values ('user','Auth-Type',':=','Local');
insert into radgroupreply (groupname,attribute,op,value) values ('user','Service-Type',':=','Framed-User');
insert into radgroupreply (groupname,attribute,op,value) values ('user','Framed-IP-Address',':=','255.255.255.255′);
insert into radgroupreply (groupname,attribute,op,value) values ('user','Framed-IP-Netmask',':=','255.255.255.0′);
建立用户信息:
insert into radcheck (username,attribute,op,value) values ('test','User-Password',':=','test');
配置集中式MAC认证的时,只需往radcheck表中添加MAC地址作为用户名和密码就可以了。
INSERT INTO radcheck (UserName, Attribute, Value) VALUES ('geng', 'Password', 'peng');
INSERT INTO radcheck (UserName, Attribute, Value) VALUES ('5cff350d01d8', 'Password', '5cff350d01d8');
将用户加入组中:
insert into radusergroup (username,groupname) values ('test','user');
mysql> exit; /#退出数据库
测试radius
1 2 3 4 5 6 7 8 9 10 11 12 13 | [root@zhinan~] radiusd -X 然后另外打开一个终端输入一下信息 [root@zhinan~] radtest test test localhost 0 testing123radius软件 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 如果显示如上信息,则恭喜,freeradius安装配置成功。 |
排错:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论