华为H3C交换机+Radius+mysql Radius认证认证方案,嵌入式客户端代码,配置(下:交换机和Radius服务器配置)

(一交互机配置)

1 802.1x本地认证方案配置

当Radius服务器不可用的时候,需要在交换机本地有一个备用认证方案,用户名和密码设置在交换机上替换Radius Server完成对交换机端口的认证和授权。可以在Radius Serer认证失败后转本地认证,避免Radius服务器宕机后网络无法接入。

 

   

开启全局802.1x特性。

system-view

System View: return to User View with Ctrl+Z.

[H3C] dot1x

开启指定端口GigabitEthernet 1/0/1的802.1x特性。

[H3C] dot1x interface GigabitEthernet 1/0/1

设置接入控制方式(该命令可以不配置,因为端口的接入控制在缺省情况下就是基于MAC地址的)。

[H3C] dot1x port-method macbased interface GigabitEthernet 1/0/1

#增加默认用户

[H3C]local-user test

[H3C] password simple test

#认证方式,本地认证

[H3C]service-type  lan-access

[H3C] state active

#NCU 连接进程  /radiusclient eth0 test test   (使用本地认证域)

交换机接入网络,监控接在交换机端口上,此时监控可访问网络

#dis cu查看最终配置

domain system

 access-limit disable

 state active  

 idle-cut disable

 self-service-url disable

#              

user-group system

 group-attribute allow-guest

#              

local-user test

 password cipher $c$3$fYHR8x8vhmtmh1T2fe3pnt3vHlT432w=

 service-type lan-access

#              

interface NULL0

#              

interface GigabitEthernet1/0/1

 dot1x 

2 Radius认证方案配置

注:交换机默认不验证版本号,这个功能不能打开(默认关闭)

#设定交换机IP   Vlan 1 打开端口 默认分配到Vlan1

#交换机端口默认VLAN是VLAN1,工作在access模式。

int vlan 1

ip add 10.169.86.2 255.255.255.0

#交换机必须要有 IP地址,否则 未配置,0.0.0.0  交换机无法发出 Radius报文给  Freeradius  提示 src-ip-address   not found

开启全局802.1x特性。

system-view

System View: return to User View with Ctrl+Z.

[H3C] dot1x

开启指定端口GigabitEthernet 1/0/1的802.1x特性。

[H3C] dot1x interface GigabitEthernet 1/0/1

设置接入控制方式(该命令可以不配置,因为端口的接入控制在缺省情况下就是基于MAC地址的)。

[H3C] dot1x port-method macbased interface GigabitEthernet 1/0/1

# Chap:质询握手验证协议,

{

#[H3C]dot1x authentication-method eap     //chap

#采用EAP认证方式,则RADIUS方案下的user-name-format配置无效,#user-name-format的介绍请参见“安全命令参考”中的“AAA”

}

 

创建RADIUS方案radius1并进入其视图。

[H3C] radius scheme radius1

设置主认证/计费RADIUS服务器的IP地址。

[H3C-radius-radius1] primary authentication 10.169.86.19

#[H3C-radius-radius1] primary accounting 10.169.86.19设置#备份认证/计费RADIUS服务器的IP地址。 这里不计费,不设置

 

#设置备用服务器,无备用服务器无需设置                                                                                         

#[H3C-radius-radius1] secondary authentication 10.11.1.2

#[H3C-radius-radius1] secondary accounting 10.11.1.1

#设置设备发送Radius报文使用的源IP地址

#指定定NSP IP

 

#[H3C-radius-radius1]    nas-ip 10.169.86.2

 

 

设置系统与认证RADIUS服务器交互报文时的加密密码。

[H3C -radius-radius1] key authentication testing123

设置系统与计费RADIUS服务器交互报文时的加密密码。

#[H3C-radius-radius1] key accounting testing123

设置系统向RADIUS服务器重发报文的时间间隔与次数。【 可选】

[H3C-radius-radius1] timer 5

[H3C-radius-radius1] retry 5

设置系统向RADIUS服务器发送实时计费报文的时间间隔。

#[H3C-radius-radius1] timer realtime-accounting 15

指示系统从用户名中去除用户域名后再将之传给RADIUS服务器。

[H3C-radius-radius1] user-name-format without-domain

#服务器类型  standard  标准的  ,extended  华为私有的扩展

#[H3C-radius-radius1] server-type standard   //extended 

[H3C-radius-radius1] quit

创建域aabbcc.net并进入其视图。

[H3C] domain aabbcc.net

指定radius1为该域用户的RADIUS方案,若RADIUS服务器无效,则使用本地认证方案。

  # 配置802.1X用户使用RADIUS方案radius1进行认证、授权方法。

[H3C-isp-aabbcc.net] authentication lan-access radius-scheme radius1

[H3C-isp-aabbcc.net] authorization lan-access radius-scheme radius1

 

[H3C-isp-aabbcc.net] scheme radius-scheme radius1 local

设置该域最多可容纳30个用户。【可选】

[H3C-isp-aabbcc.net] access-limit enable 30

启动闲置切断功能并设置相关参数。【可选】

#[H3C-isp-aabbcc.net] idle-cut enable 20 2000

#[H3C-isp-aabbcc.net] quit

配置域aabbcc.net为缺省用户域。

[H3C] domain default enable aabbcc.net

添加本地接入用户。

[H3C] local-user localuser

[H3C-luser-localuser] service-type lan-access

[H3C-luser-localuser] password simple localpass

/radiusclient eth0 test@system test

(system为本地用户默认的域)

#dis cu查看最终配置

#

radius scheme radius1

 primary authentication 10.169.86.27

 key authentication cipher $c$3$cNeQqnvnkIr+qo2QHEXDPivo5LsUe1xjsx0ct5U=

 user-name-format without-domain

(QT不支持输入带其他字符用户名,所以目前只允许设置成user-name-format without-domain)

 nas-ip 10.169.86.100

#              

domain aabbcc.net

 authentication lan-access radius-scheme radius1

 authorization lan-access radius-scheme radius1

 access-limit disable

 state active  

 idle-cut disable

 self-service-url disable

domain system  

 access-limit disable

 state active  

 idle-cut disable

 self-service-url disable

#               

对于非H3C客户端,由于不支持握手功能,在握手周期内交换机不会收到握手回应报文。因此需要将在线用户握手功能关闭,以防止错误地认为用户下线。(我们的客户端做了握手回应包)

3.附录

3.1 H3C Console口设置

3.2 H3C交换机恢复默认配置

 

[H3C]reset saved-configuration

The saved configuration file will be erased. Are you sure? [Y/N]:Y

3.3 H3C交换机保存配置

[H3C]Save

The current configuration will be written to the device. Are you sure? [Y/N]:Y

 

(二服务器配置) FreeRadius +mysql

 

.FreeRadius配置

2.1防火墙设置

Linux防火墙信任radius服务:

iptables -A INPUT -p udp --dport 1812 -j ACCEPT
iptables -A INPUT -p udp --dport 1813 -j ACCEPT

虚拟机Windows主机防火墙:

2.2配置Radius

        

2.2.1 User配置文件管理用户

  • Radius基本配置radiusd.conf 

Radius配置选择支持的认证方式【默认】

//server配置 监听端口信息配置; 选择监听内容

{

Type= auth    //认证监听

选择日志记载内容

log_auth = yes

log_auth_badpass = yes

log_auth_goodpass = yes

}

Freeradius配置文件radiusd.conf详解

https://blog.csdn.net/libinbin_1014/article/details/49508929

 

  • Radius监听配置client.conf

#配置steve用户

Client 10.169.86.0/24

{

         Secret = testing123      //交换机和Radius服务器交互加密码

        Shortname      = steve

}

#配置本机用户

Client localhost

{

         Secret = testing123    //交换机和Radius服务器交互加密码

         ……………………

}

 

IP subnet将NAS分组

192.168.0.0/24就代表了192.168.0.0至192.168.0.255
一直分下去有          192.168.1.0至192.168.1.255
                      192.168.2.0至192.168.2.255等等
再说说这24是怎么得到255.255.255.0
每个IP地址的长度为32位(bit),分4段,每段8位(1个字节)。简单的说24代表从前往后有24个1,就是11111111.11111111.11111111.00000000

配置详解:https://zhidao.baidu.com/question/2139279656375616028.html

 

  • Radius用户配置Users

本地默认用户配置方法:/usr/local/etc/raddb/users

打开配置文件目录:/usr/local/etc/raddb ,编辑其中的users文件

这个文件就是定义radiusd用户的文件、其实正式使用验证服务器的话应该是使用数据库如mysql来管理这些用户数据的、不过现在开发测试阶段就先把用户信息使用这个users的文本方式来简单记录一下,

找到如下代码段,取消注释并保存退出:

{

steve   Cleartext-Password := "testing"

    Service-Type = Framed-User,

   # Framed-Protocol = PPP,    指定为ppp协议

  #  Framed-IP-Address = 10.169.86.217, (如果终端获取到了IP,用于计费)

    Framed-IP-Netmask = 255.255.255.0,

    Framed-Routing = Broadcast-Listen,

   # Framed-Filter-Id = "std.ppp",

    Framed-MTU = 1500,

Framed-Compression = Van-Jacobsen-TCP-IP

}

这时,多了个steve 用户,

 先用docker——enter 分裂出一个窗口,再执行

radtest steve testing localhost 1812 testing123

出现以下字样表示安装成功

Access-Accept 收到接受字样

2.2.2 mysql数据库管理用户

2.2.2.1启用MySQL模块支持

  • radiusd.conf配置

# 查找"sql.conf”(683行),去掉#号
vim /usr/local/etc/raddb/radiusd.conf

  • sql.conf配置

配置数据库的名称

登录的用户名和密码

配置 dialup.conf路径

配置  数据库的动态库  rlm_sql_mysql.so路径

{

        database = "mysql"    //数据库名称

 

        #

        #  Which FreeRADIUS driver to use.

        #

        driver = "rlm_sql_${database}"  //数据库client Driver路径 用来插入,查询等操作

 

        # Connection info:

        server = "localhost"    //数据库ip  本机

        #port = 3306

        login = "root"          //登录用户名和密码

        password = "123456"

 

}

  • 启动sql

Service mysqld start     启动成功会显示绿色/失败红色

 

2.2.2.2.增加数据库

  • 创建 radius 数据库及表

# 123456是你mysql的root密码
mysqladmin -uroot -p123456 create radius;

  • 修改策略表radius帐号的密码
    cd /usr/local/etc/raddb/sql/mysql
    sed -i 's/radpass/123456/g' admin.sql
    sed -i 's/radpass/123456/g' /usr/local/etc/raddb/sql.conf

mysql -uroot -p123456 < admin.sql
mysql -uroot -p123456 radius < ippool.sql
mysql -uroot -p123456 radius < schema.sql
mysql -uroot -p123456 radius < wimax.sql
mysql -uroot -p123456 radius < cui.sql
mysql -uroot -p123456 radius < nas.sql

  • 使用nas代替clients.conf
    client配置默认从 "/usr/local/etc/raddb/clients.conf" 文件读取(#include clients.conf),开启后可从数据库nas表读取client配置信息。
    sed -i 's/\#readclients/readclients/g' /usr/local/etc/raddb/sql.conf

nas表插入值、nasname为localhost、shortname为localhost、type为other、secret为迩设置迩的客户端密钥。

  • 打开默认功能模块对sql的支持

   vim /usr/local/etc/raddb/sites-enabled/default

找到authorize {}模块,注释掉files(159行),去掉sql前的#号(166行)
找到accounting {}模块,注释掉radutmp(385行),注释掉去掉sql前面的#号(395行)。
找到session {}模块,注释掉radutmp(439行),去掉sql前面的#号(443行)。
找到post-auth {}模块,去掉sql前的#号(464行),去掉sql前的#号(552行)。

 vim /usr/local/etc/raddb/sites-enabled/inner-tunnel

找到authorize {}模块,注释掉files(124行),去掉sql前的#号(131行)。
找到session {}模块,注释掉radutmp(251行),去掉sql前面的#号(255行)。
找到post-auth {}模块,去掉sql前的#号(277行),去掉sql前的#号(301行)

 

2.2.2.3添加表和用户信息

  • 连接 MySQL 数据库
    mysql -uroot -p123456;
     
    #
    使用 radius 数据库
    USE radius;
  • 添加用户组和用户组的属性

#限制同时登陆人数,注意是在radgroupcheck表【可选】
INSERT INTO radgroupcheck (groupname,attribute,op,VALUE) VALUES ('normal','Simultaneous-Use',':=','1');
 
#
增加认证 类型【可选】
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('TIV','Auth-Type',':=','Local');

# 增加服务类型
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('TIV','Service-Type',':=','Framed-User');


# 报文长度限制 【可选】
 

INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('TIV','Framed-MTU',':=','1500');

# TCP IP
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('TIV','Framed-Compression',':=','Van-Jacobson-TCP-IP');

 

  • 在组下新增一个认证用户

 #添加用户demo,密码demo,注意是在radchec表
INSERT INTO radcheck (username,attribute,op,VALUE) VALUES ('demo','Cleartext-Password',':=','demo');
 
#
将用户demo加入VERTIV用户组
INSERT INTO radusergroup (username,groupname) VALUES ('demo','TIV');
 

参考配置:https://www.cnblogs.com/chulia20002001/p/6971916.html

https://blog.csdn.net/cluniquecui/article/details/42490423

1.

  • 测试新增的用户名和密码是否有效

radtest demo demo localhost 1812 testing123

 

2.3 启动Radius

  1. Linux终端下执行命令:  radiusd –X  (启动服务)

 

radius日志目录:/usr/local/var/log/radius

3.附录

3.1 mysql恢复root用户密码方法

1.将所有连接到数据库的进程和网络断掉

2.修改MySQL的登录设置: 
# vi /etc/my.cnf 
在[mysqld]的段中加上一句:skip-grant-tables 
例如: 
[mysqld] 
datadir=/var/lib/mysql 
socket=/var/lib/mysql/mysql.sock 
skip-grant-tables 

保存并且退出vi。 
3.重新启动mysqld 
# /etc/init.d/mysqld restart 
Stopping MySQL: [ OK ] 
Starting MySQL: [ OK ] 
4
.登录并修改MySQL的root密码 
# /usr/bin/mysql 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 3 to server version: 3.23.56 
Type 'help;' or '\h' for help. Type '\c' to clear the buffer. 
mysql> USE mysql ; 
Reading table information for completion of table and column names 
You can turn off this feature to get a quicker startup with -A 
Database changed 
mysql> UPDATE user SET Password = password ( 'new-password' ) WHERE User = 'root' ; 
Query OK, 0 rows affected (0.00 sec) 
Rows matched: 2 Changed: 0 Warnings: 0 
mysql> flush privileges ; 
Query OK, 0 rows affected (0.01 sec) 
mysql> quit 
Bye 
5
.将MySQL的登录设置修改回来 
# vi /etc/my.cnf 
将刚才在[mysqld]的段中加上的skip-grant-tables删除 
保存并且退出vi。 
6.重新启动mysqld 
# /etc/init.d/mysqld restart 
Stopping MySQL: [ OK ] 
Starting MySQL: [ OK ]

3.2 mysql基本操作语法

数据库,表管理     
进入mysql     mysql -h hostname -uroot -p
创建数据库     mysql> create database location
导入数据结构     mysql -uroot -p location <./location.sql
查看数据库     mysql> show databases;
进入某个库     mysql> use location;
查看表信息     mysql> show tables;
查看表结构     mysql> desc Contact;
改表名     mysql> rename table Contact to Contact_new
删除库     mysql> drop database location
删除表     mysql> drop table Contact
 
授权部分     
建立用户并授权     mysql> grant all on location.* to gk1020@'10.1.11.71' identified by 'gk1020'
取消授权     mysql> revoke all on location.* from gk1020@'10.1.11.71'
刷新权限     mysql> flush privileges
 
操作语句     
查询     mysql> select * from Contact
mysql> select count(*) from Contact
修改     mysql> update Contact set RegTime=‘2008-01-01 00:00:00’ where id=1
mysql> update Contact set RegTime=‘2008-01-01 00:00:00’,CID=1 where id=1
插入     mysql> insert into Contact values('',''…)
mysql> insert into Contact(ID,CID,Contact) values('',''…)
删除     mysql> delete from Contact

你可能感兴趣的:(网络,嵌入式)