什么是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匹配之后认证通过。

目的:搭建freeradius服务器 实现用户上网的Mac地址认证

环境:centos+freeradius+mysql

安装:

一、安装openssl

二、安装mysql

[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。

[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 /#安装

安装完后,可以使用命令

[root@zhinan~] radiusd -x /#进入radiusd服务器的调试模式,如果能进入则安装成功。

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

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

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

radius 服务器几个配置文件

radiusd.conf 服务器端配置

clients.conf 存储radius客户端(NAS,ROUTER)的验证信息,主要是配KEY

./modules/ 主要是针对LDAP,MYSQL、数字证书等的配置

四、配置过程

[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,而且存放路径不同)

导入后,可以在用命令

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不

同,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 10.1.1.5 {

ipaddr = 10.1.1.5

secret = testing123 /#Secret:Radius aaa与NAS之间的key传送是密文,而不是口令,是MD5计算结果

shortname = nas01

nastype =other

在数据库中加入测试帐号

[root@zhinan~] mysql -u root -p123

mysql> use radius;

建立组信息:

mysql> insert into radgroupreply (groupname,attribute,op,value) values (‘user’,'Auth-Type’,':=’,'Local’);

Query OK, 1 row affected (0.01 sec)

mysql> insert into radgroupreply (groupname,attribute,op,value) values (‘user’,'Service-Type’,':=’,'Framed-User’);

Query OK, 1 row affected (0.00 sec)

mysql> insert into radgroupreply (groupname,attribute,op,value) values (‘user’,'Framed-IP-Address’,':=’,’255.255.255.255′);

Query OK, 1 row affected (0.00 sec)

mysql> insert into radgroupreply (groupname,attribute,op,value) values (‘user’,'Framed-IP-Netmask’,':=’,’255.255.255.0′);

Query OK, 1 row affected (0.01 sec)

建立用户信息:

mysql> insert into radcheck (username,attribute,op,value) values (‘test’,'User-Password’,':=’,'test’);

Query OK, 1 row affected (0.00 sec)

配置集中式MAC认证的时,只需往radcheck表中添加MAC地址作为用户名和密码就可以了。

INSERT INTO radcheck (UserName, Attribute, Value) VALUES (‘geng’, ‘Password’, ‘peng’);

将用户加入组中:

mysql> insert into radusergroup (username,groupname) values (‘test’,'user’);

Query OK, 1 row affected (0.01 sec)

mysql> exit; /#退出数据库

测试radius

[root@zhinan~] radiusd -X

然后另外打开一个终端输入一下信息

[root@zhinan~] radtest test test localhost 0 testing123

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安装配置成功。

排错:

【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

【2】radiusd -X

调试提示 Failed binding to authentication address * port 1812: Address

already in use /usr/local/etc/raddb/radiusd.conf[240]: Error binding to

port for 0.0.0.0 port 1812

1812端口被占用

[root@zhinan~] lsof -i:1812   /#显示占用1812端口的进程

radiusd 5507 root   10u  IPv4  17199      0t0  UDP *:radius

[root@zhinan~]kill 5507 /#杀掉pid为5507的进程,pid根据lsof命令输出得。

交换机中的配置

MAC-authentication

MAC-authentication domain test

#

radius scheme freeradius

server-type standard

primary authentication 10.1.5.100

accounting optiona

key authentication testing123

user-name-format without-domain

nas-ip 10.1.1.5

#

domain jiubang

scheme radius-scheme freeradius

#

interface ethernet 1/0/22

port access vlan 5

MAC-authentication

测试

[root@zhinan~] radiusd -X /#开启radius服务

当有用户认证时,信息如下:

Ready to process requests.

rad_recv: Access-Request packet from host 10.1.1.5 port 5001, id=10, length=117

User-Name = “7845c40a786a@test”

User-Password = “7845c40a786a”

NAS-IP-Address = 10.1.1.5

NAS-Identifier = “3822d6bc438f”

NAS-Port = 16871429

NAS-Port-Type = Ethernet

Service-Type = Framed-User

Framed-Protocol = PPP

Calling-Station-Id = “7845-c40a-786a”

# Executing section authorize from file /usr/local/etc/raddb/sites-enabled/default

+- entering group authorize {…}

++[preprocess] returns ok

++[chap] returns noop

++[mschap] returns noop

++[digest] returns noop

[suffix] Looking up realm “test” for User-Name = “7845c40a786a@test”

[suffix] No such realm “test”

++[suffix] returns noop

[eap] No EAP-Message, not doing EAP

++[eap] returns noop

[sql] expand: %{User-Name} -> 7845c40a786a@test

[sql] sql_set_user escaped user –> ’7845c40a786a@test’

rlm_sql (sql): Reserving sql socket id: 4

[sql] expand: SELECT id, username, attribute, value, op FROM

radcheck WHERE username = ‘%{SQL-User-Name}’ ORDER

BY id -> SELECT id, username, attribute, value, op FROM

radcheck WHERE username = ’7845c40a786a@test’ ORDER

BY id

[sql] expand: SELECT groupname FROM radusergroup

WHERE username = ‘%{SQL-User-Name}’ ORDER BY priority ->

SELECT groupname FROM radusergroup WHERE username =

’7845c40a786a@test’ ORDER BY priority

rlm_sql (sql): Released sql socket id: 4

[sql] User 7845c40a786a@test not found

++[sql] returns notfound

++[expiration] returns noop

++[logintime] returns noop

[pap] WARNING! No “known good” password found for the user. Authentication may fail because of this.

++[pap] returns noop

ERROR: No authenticate method (Auth-Type) found for the request: Rejecting the user

Failed to authenticate the user.

Using Post-Auth-Type REJECT

# Executing group from file /usr/local/etc/raddb/sites-enabled/default

+- entering group REJECT {…}

[attr_filter.access_reject] expand: %{User-Name} -> 7845c40a786a@test

attr_filter: Matched entry DEFAULT at line 11

++[attr_filter.access_reject] returns updated

Delaying reject of request 0 for 1 seconds

Going to the next request

Waking up in 0.9 seconds.

Sending delayed reject for request 0

Sending Access-Reject of id 10 to 10.1.1.5 port 5001

Waking up in 4.9 seconds.

Cleaning up request 0 ID 10 with timestamp +61

Ready to process requests.

radius mysql md5_Radius认证相关推荐

  1. radius mysql md5_请教两个问题:关于无线局域网和Radius+MD5认证

    请教两个问题:关于无线局域网和Radius+MD5认证 (2012-06-05 06:00:06) 标签: 认证 无线 局域网 杂谈 请教两个问题:关于无线局域网和Radius+MD5认证1,要完成一 ...

  2. 华为H3C交换机+Radius+mysql Radius认证认证方案,嵌入式客户端代码,配置(上:认证方案)

    最近做的一个嵌入式Radius认证方案,分上中下,上:认证方案,中:嵌入式客户端代码 下:交换机和Radius配置 技术交流:1532709892@qq.com (一)Radius认证方案说明: 当交 ...

  3. 华为H3C交换机+Radius+mysql Radius认证认证方案,嵌入式客户端代码,配置(上:认证方案)

    转载 EZcast (一)Radius认证方案说明: 当交换机设置成需要认证模式,交换机只允许认证协议包通过交换机,其他网络数据包不允许通过,直到认证通过,交换机开放端口. Radius认证方案是一个 ...

  4. RADIUS协议:认证与计费的鼻祖

    RADIUS(Remote Authentication Dial In User Service)协议最初是由Livingston公司提出的,原先的目的是为拨号用户进行认证和计费.后来经过多次改进, ...

  5. centos pptp+l2tp+radius+mysql+tc限速,安装配置

      参考文档:http://logicmd.net/2010/12/setup-pptp-and-l2tp-over-ipsec-on-centos/  一.PPTP安装 软件包     dkms   ...

  6. freeradius+mysql+交换机认证

    一.关闭防火墙和Selinux [root@master raddb]# service iptables stop [root@master raddb]# vim /etc/selinux/con ...

  7. 实战部署MySQL用户认证的Postfix邮件系统(3)

    实战部署Postfix+MySQL+Dovecot+Postfixadmin+Extmail邮件系统(3) -----构建开源邮件系统系列 如果您对本系列文章感兴趣,可以通过点击以下链接查看全文: 点 ...

  8. saslauthd mysql_open***使用MySQL进行认证

    紧接上一篇,Open×××使用用户名密码登录之后,觉得可能本地文件的安全性不是很好,毕竟密码还是明文显示的嘛,所以这次鼓捣Open×××使用MySQL进行认证.部署环境什么的,依然参考上一篇中的配置, ...

  9. server2012 AD域 radius 802.1x认证

    server2012 AD域 radius 802.1x认证 原创泠泠七弦2020-11-25 17:40:06 保姆级教程:WINserver2012 AD域 radius 802.1x认证. 觉得 ...

  10. Linux 系统 pptpd+radius+mysql 安装攻略

    分类: 原文地址:Linux 系统 pptpd+radius+mysql 安装攻略 作者:wfeng .你所需要的软件  内核最好能升级到2.6  如果你是centos的用户,可以通过yum upda ...

最新文章

  1. JS实现HTML上用button打开文件对话框
  2. C语言 整型变量的输入和输出
  3. ngx_lua模块API说明
  4. linux c之用fputc和fgetc复制文件并且打印在终端
  5. C语言选择结构和循环结构的汇总
  6. 大批量安装系统的解决方案(集锦)
  7. k-近邻算法 ---sklearn
  8. c语言:数组插入处理
  9. Git使用的奇技淫巧,看这篇就够了!
  10. abap获取日期_ABAP 日期时间函数
  11. 忘记服务器root用户密码
  12. DM达梦数据库集群之分布式集群(MPP)主备
  13. C++软件开发经典面试题目
  14. 建土赛事——力学架构 下篇
  15. 测试下网站收录的问题
  16. 【新年祝福】散去2009分,祝大家新年快乐,祝所有朋友新的一年里万事如意。
  17. ie11浏览器不支持java插件_JRE / JDK / Java 9的64位插件与IE 11 64位不兼容
  18. BandZip cmd调用参数
  19. 2021-4-21二分搜索
  20. 【北风的第二次任务】

热门文章

  1. 攻防世界Web新手区题解(超详细)
  2. python爬取链家_通过Python爬取链家所有房源和小区信息
  3. 计算机二级C语言-B程序修改题
  4. 怎么样去学习平面设计,学ps就是平面设计了吗?
  5. 计算机基础西南大学,西南大学计算机基础.docx
  6. 【串讲总结】涵盖ML/DL/NLP/推荐/风控/数学等知识点汇总列表
  7. GitHub | 面试官的DL/NLP/推荐系统/ML/算法基础面试必看知识点总结
  8. 《第三节》解读Logback的配置文件
  9. OEE(设备综合效率)
  10. MES系统是什么?如何提高设备的使用效率和使用寿命