(一交互机配置)
当Radius服务器不可用的时候,需要在交换机本地有一个备用认证方案,用户名和密码设置在交换机上替换Radius Server完成对交换机端口的认证和授权。可以在Radius Serer认证失败后转本地认证,避免Radius服务器宕机后网络无法接入。
# 开启全局802.1x特性。
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
注:交换机默认不验证版本号,这个功能不能打开(默认关闭)
#先设定交换机IP Vlan 1 打开端口 默认分配到Vlan1
#交换机端口默认VLAN是VLAN1,工作在access模式。
#交换机必须要有 IP地址,否则 未配置,0.0.0.0 交换机无法发出 Radius报文给 Freeradius 提示 src-ip-address not found
# 开启全局802.1x特性。
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客户端,由于不支持握手功能,在握手周期内交换机不会收到握手回应报文。因此需要将在线用户握手功能关闭,以防止错误地认为用户下线。(我们的客户端做了握手回应包)
[H3C]reset saved-configuration
The saved configuration file will be erased. Are you sure? [Y/N]:Y
[H3C]Save
The current configuration will be written to the device. Are you sure? [Y/N]:Y
(二服务器配置) FreeRadius +mysql
Linux防火墙信任radius服务:
iptables -A INPUT -p udp --dport 1812 -j ACCEPT
iptables -A INPUT -p udp --dport 1813 -j ACCEPT
虚拟机Windows主机防火墙:
2.2.1 User配置文件管理用户
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
#配置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
本地默认用户配置方法:/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模块支持
# 查找"sql.conf”(683行),去掉#号
vim /usr/local/etc/raddb/radiusd.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"
}
Service mysqld start 启动成功会显示绿色/失败红色
2.2.2.2.增加数据库
# 123456是你mysql的root密码
mysqladmin -uroot -p123456 create radius;
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表插入值、nasname为localhost、shortname为localhost、type为other、secret为迩设置迩的客户端密钥。
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添加表和用户信息
#限制同时登陆人数,注意是在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
radius日志目录:/usr/local/var/log/radius
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 ]
数据库,表管理
进入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