草庐IT

HCIE-Security Day47:AC准入控制MAC

小梁L同学 2023-07-17 原文

MAC认证是一种基于接口和终端MAC地址对用户的访问权限进行控制的认证方法。

特点

免安装:用户终端不需要安装任何客户端软件。

免输入:认证过程中,不需要手动输入用户名和口令。

哑终端友好:能够对不具备802.1x认证能力的终端进行认证,比如打印机和传真机等哑终端。

C/S架构:终端、接入设备、认证服务器

用户名形式

进行mac认证时使用的用户名和密码需要在接入设备上预先配置。

缺省情况下,终端进行mac认证时使用的用户名和密码均为终端的mac地址。

MAC认证时使用的用户名

密码

适用场景

终端的MAC地址

两种形式:

  1. 终端的MAC地址
  2. 指定的密码

客户端少量部署且MAC地址容易获取的场景,例如对少量接入网络的打印机进行认证。

指定的用户名

指定的密码

由于同一个接口下可以存在多个终端,此时所有终端均使用指定的用户名和密码进行MAC认证,服务器端仅需要配置一个账户即可满足所有终端的认证需求,适用于终端比较可信的网络环境。

DHCP选项,有三种形式:

  • circuit-id子选项
  • remote-id子选项
  • circuit-id子选项和remote-id子选项的组合

指定的密码

该场景下终端需通过DHCP方式获取IP地址,且需保证DHCP报文能够触发MAC认证。

认证流程

对于MAC认证用户密码的处理,有PAP和CHAP两种方式:

PAP:设备将MAC地址、共享密钥、随机值依次排列后,经过HASH处理后封装在属性“user-password”中。

CHAP:设备将CHAP ID、MAC地址、随机值依次排列后,经过HASH处理后封装在属性“CHAP-Password”和“CHAP-Challenge”中。

pap方式

1、接入设备收到终端发送的arp/dhcp/dhcpv6/nd报文,触发MAC认证。

2、设备随机生成一个随机值,并对MAC认证用户的MAC地址、共享密钥、随机值依次排列后经过MD5算法进行HASH处理,然后将用户名、HASH处理结果以及随机值封装在RADIUS认证请求报文中发送给RADIUS服务器,请求RADIUS服务器对该终端进行MAC认证。

3、RADIUS服务器使用收到的随机值对本地数据库中对应mac认证用户进行mac地址、共享密钥、随机值依次排列后经过md5算法进行HASH处理,如果与设备发来的值相同,则向设备发送认证接受报文,表示终端mac认证成功,允许该终端访问网络。

chap方式

认证授权

认证用于确认尝试接入网络的用户身份是否合法,而授权则用于指定身份合法的用户所能拥有的网络访问权限,即用户能够访问哪些资源。授权最基础也是最常使用的授权参数是VLAN、ACL和UCL组。

vlan

为了将受限的网络资源与未认证用户隔离,通常将受限的网络资源和未认证的用户划分到不同的VLAN。用户认证成功后,认证服务器将指定VLAN授权给用户。此时,设备会将用户所属的VLAN修改为授权的VLAN,授权的VLAN并不改变接口的配置。但是,授权的VLAN优先级高于用户配置的VLAN,即用户认证成功后生效的VLAN是授权的VLAN,用户配置的VLAN在用户下线后生效。RADIUS服务器授权VLAN时,必须同时使用以下RADIUS标准属性:

  • Tunnel-Type:必须配置为“VLAN”或“13”
  • Tunnel-Medium-Type:必须配置为“802”或“6”
  • Tunnel-Private-Group-ID:可以是VLAN ID、VLAN描述

ACL

用户认证成功后,认证服务器将指定ACL授权给用户,则设备会根据该ACL对用户报文进行控制。

  • 如果用户报文匹配到该ACL中动作为permit的规则,则允许其通过。
  • 如果用户报文匹配到该ACL中动作为deny的规则,则将其丢弃。

RADIUS服务器授权ACL有两种方法:

  • 授权静态ACL:RADIUS服务器通过RADIUS标准属性Filter-Id将ACL ID授权给用户。为使授权的ACL生效,需要提前在设备上配置相应的ACL及规则。
  • 授权动态ACL:RADIUS服务器通过华为RADIUS扩展属性HW-Data-Filter将ACL ID及其ACL规则授权给用户。ACL ID及其ACL规则需要在RADIUS服务器上配置,设备上不需要配置。

UCL

用户控制列表UCL组(User Control List)是网络成员的集合。UCL组里面的成员,可以是PC、手机等网络终端设备。借助UCL组,管理员可以将具有相同网络访问策略的一类用户划分为同一个组,然后为其部署一组网络访问策略,满足该类别所有用户的网络访问需求。相对于为每个用户部署网络访问策略,基于UCL组的网络控制方案能够极大的减少管理员的工作量。RADIUS服务器授权UCL组有两种方式:

  • 授权UCL组名称:RADIUS服务器通过RADIUS标准属性Filter-Id将UCL组名称授权给指定用户。
  • 授权UCL组ID:RADIUS服务器通过华为RADIUS扩展属性HW-UCL-Group将UCL组ID授权给指定用户。无论是哪一种授权UCL组方式,都必须提前在设备上配置相应的UCL组及UCL组的网络访问策略。

free-rule

用户认证成功之前,为满足用户基本的网络访问需求,需要用户认证成功前就能获取部分网络访问权限。可在free-rule模板中配置free-rule规则,满足用户的认证成功前的网络访问需求。

用户的free-rule可以通过普通的free-rule定义,也可以通过ACL定义。普通的free-rule由IP地址、MAC地址、接口、VLAN等参数确定;通过ACL定义的free-rule由ACL规则确定。两种方式定义的free-rule都能够指定用户无需认证就可以访问的目的IP地址。除此之外,ACL定义的free-rule还能够指定用户认证成功前就可以访问的目的域名。

基于域名定义用户的free-rule有时要比基于IP地址简单方便。例如,某些认证用户由于没有认证账号,必须首先在运营商提供的官方网站上注册申请会员账号;或者通过微博、微信等第三方账号进行登录。这就要求用户认证通过前,能够访问特定的网站。由于用户记忆网站的域名要比记忆其IP地址容易的多,所以,此时可以通过ACL定义的free-rule,指定用户认证成功前即可访问以上网站域名。

实验案例

实验拓扑

配置思路

1、底层网络互通配置

2、交换机mac认证配置

3、ac配置

3.1、添加mac认证设备

3.2、配置认证规则

3.3、配置授权结果

3.4、配置授权规则

3.5、验证结果

具体配置

1、防火墙基础配置

#接口配置
sys fw1
int g0/0/0
ip add 192.168.0.10 24
int g0/0/1
ip add 10.1.1.10 24
int g0/0/3
ip add 192.168.1.10 24
int g0/0/2
ip add 202.100.1.10 24
#配置安全区域
fire zone trust 
add int g0/0/1
fire zone dmz
add int g0/0/3
fire zone untrust
add int g0/0/2
quit
ip route-static 0.0.0.0 0 202.100.1.254
ip route-static 10.1.2.0 24 10.1.1.254

user-interface con 0
id 0

2、路由器配置

sys ISP
undo int vlanif1

acl 2000
rule permit

int g0/0/0
undo portswitch
nat outbound 2000
ip add dhcp-alloc

int g0/0/1
undo portswitch
ip add 202.100.1.254 24
quit

ip route-static 10.1.0.0 16  202.100.1.10

user-interface con 0
id 0

3、接入交换机配置MAC认证

3.1、创建并配置radius服务器模板

#配置radius
radius-server template RADIUS-POLICY
    radius-server shared-key cipher Huawei@123
    radius-server authentication 192.168.1.100 1812
    radius-server accounting 192.168.1.100 1813
    quit
radius-server auththorization 192.168.1.100 shared-key cipher Huawei@123

3.2、创建并配置AAA认证、计费方案

aaa
authentication-scheme AUTH
authentication-mode radius
accounting-scheme ACCOUNT
accounting-mode radius
accounting realtime 3

3.3、配置认证域,并在其上绑定aaa认证、计费方案、radius服务器模板

aaa
domain default
authentication-scheme AUTH
accounting-scheme ACCOUNT
radius-server RADIUS-POLICY

3.4、在认证模板下绑定MAC模板并在接入接口下调用认证模板

#配置MAC认证

 #统一模式  
#第一步:配置接入模板 
mac-access-profile name MAC-ACC-PROFILE


#第二步:配置认证模板
authentication-profile name AUTH-RPOFILE
 mac-access-profile MAC-ACC-PROFILE  #调用MAC模板

#第三步:接口下应用认证模板
interface GigabitEthernet0/0/9
 authentication-profile AUTH-RPOFILE   #调用认证模

4、ac配置

4.1、增加接入设备

资源---设备--设备管理---所有设备----添加

新增设备组--接入设备,并将刚刚增加的设备接入设备移动到接入设备组

4.2、添加终端设备

资源--终端---终端列表--增加设备组

在设备组内增加设备,注意提前获知设备mac地址00-50-56-9E-CE-30

4.3、配置认证规则

创建认证规则

选择mac旁路认证业务

关联接入设备组

关联终端设备组

注意和dot1x的区别是不需要关联认证协议。

4.4、配置动态acl

4.5、配置授权结果

新增授权结果

关联动态acl

4.6、配置授权规则

新增授权规则

关联接入设备组

关联终端设备组

关联授权结果

5、验证结果

0、在终端pc上访问公网

1、在sw上检查在线用户

[sw1]dis access-user
UserID  Username               IP address                               MAC            Status
19      0050569ece30           10.1.2.1                                 0050-569e-ce30 Success
Total: 1, printed: 1

2、检查在线用户详细信息

[sw1]dis access-user user-id 19

Basic:
  User ID                         : 19
  User name                       : 0050569ece30
  Domain-name                     : default                         
  User MAC                        : 0050-569e-ce30
  User IP address                 : 10.1.2.1
  User vpn-instance               : -
  User IPv6 address               : -
  User access Interface           : GigabitEthernet0/0/9
  User vlan event                 : Success        
  QinQVlan/UserVlan               : 0/11
  User vlan source                : user request                  
  User access time                : 2021/02/10 09:53:31
  User accounting session ID      : sw100009000000011ac****0000013
  Option82 information            : -
  User access type                : MAC
  Terminal Device Type            : Data Terminal  
  Service Scheme Priority         : 0

AAA:
  User authentication type        : MAC authentication
  Current authentication method   : RADIUS
  Current authorization method    : -
  Current accounting method       : RADIUS

3、ac检查日志

有关HCIE-Security Day47:AC准入控制MAC的更多相关文章

  1. Ruby Readline 在向上箭头上使控制台崩溃 - 2

    当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby​​安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少

  2. ruby-on-rails - 带 Spring 锁的 Rails 4 控制台 - 2

    我正在使用Ruby2.1.1和Rails4.1.0.rc1。当执行railsc时,它被锁定了。使用Ctrl-C停止,我得到以下错误日志:~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`gets':Interruptfrom~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`verify_server_version'from~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.

  3. ruby-on-rails - openshift 上的 rails 控制台 - 2

    我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新ruby​​gems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems

  4. ruby-on-rails - 如何在 mac os snow leopard 中升级 ruby​​ 和 rails - 2

    我想将我的MacSnowLeopardruby​​从1.8.7升级到1.9.1版本,有人知道轻松且最好的升级方法吗?因为我读了一些论坛/帖子/博客/讨论说覆盖苹果发布的ruby不好将Rails从版本2.2.2升级到2.3.8的最佳方法是什么?因为我找到的所有信息都仅适用于豹/老虎,而且很少有关于雪豹的复杂文章。他们还说覆盖apple提供的rails不好吗。谁能帮帮我?谢谢。 最佳答案 DanBenjamin有一些greatinstructionsforcompilingandinstallingRuby,RubyGemsandRai

  5. ruby - 在不使用 RVM 的情况下在 Mac 上卸载和升级 Ruby - 2

    我最近决定从我的系统中卸载RVM。在thispage提出的一些论点说服我:实际上,我的决定是,我根本不想担心Ruby的多个版本。我只想使用1.9.2-p290版本而不用担心其他任何事情。但是,当我在我的Mac上运行ruby--version时,它告诉我我的版本是1.8.7。我四处寻找如何简单地从我的Mac上卸载这个Ruby,但奇怪的是我没有找到任何东西。似乎唯一想卸载Ruby的人运行linux,而使用Mac的每个人都推荐RVM。如何从我的Mac上卸载Ruby1.8.7?我想升级到1.9.2-p290版本,并且我希望我的系统上只有一个版本。 最佳答案

  6. C51单片机——实现用独立按键控制LED亮灭(调用函数篇) - 2

    说在前面这部分我本来是合为一篇来写的,因为目的是一样的,都是通过独立按键来控制LED闪灭本质上是起到开关的作用,即调用函数和中断函数。但是写一篇太累了,我还是决定分为两篇写,这篇是调用函数篇。在本篇中你主要看到这些东西!!!1.调用函数的方法(主要讲语法和格式)2.独立按键如何控制LED亮灭3.程序中的一些细节(软件消抖等)1.调用函数的方法思路还是比较清晰地,就是通过按下按键来控制LED闪灭,即每按下一次,LED取反一次。重要的是,把按键与LED联系在一起。我打算用K1来作为开关,看了一下开发板原理图,K1连接的是单片机的P31口,当按下K1时,P31是与GND相连的,也就是说,当我按下去时

  7. 神州数码无线产品(AC+AP)配置 - 2

    注意:本文主要掌握DCN自研无线产品的基本配置方法和注意事项,能够进行一般的项目实施、调试与运维AP基本配置命令AP登录用户名和密码均为:adminAP默认IP地址为:192.168.1.10AP默认情况下DHCP开启AP静态地址配置:setmanagementstatic-ip192.168.10.1AP开启/关闭DHCP功能:setmanagementdhcp-statusup/downAP设置默认网关:setstatic-ip-routegeteway192.168.10.254查看AP基本信息:getsystemgetmanagementgetmanaged-apgetrouteAP配

  8. ruby-on-rails - 在 Rails 控制台中使用 asset_path - 2

    在我的Character模型中,我添加了:字符.rbbefore_savedoself.profile_picture_url=asset_path('icon.png')end但是,对于数据库中已存在的所有角色,它们的profile_picture_url为nil。因此,我想进入控制台并遍历所有这些并进行设置。在我试过的控制台中:Character.find_eachdo|c|c.profile_picture_url=asset_path('icon.png')end但这给出了错误:NoMethodError:undefinedmethod`asset_path'formain:O

  9. ruby-on-rails - 带有 Pry 的 Rails 控制台 - 2

    当我进入Rails控制台时,我已将pry设置为加载代替irb。我找不到该页面或不记得如何将其恢复为默认行为,因为它似乎干扰了我的Rubymine调试器。有什么建议吗? 最佳答案 我刚发现问题,pry-railsgem。忘记了它的目的是让“railsconsole”打开pry。 关于ruby-on-rails-带有Pry的Rails控制台,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/question

  10. ruby - 将全局 $stdout 重新分配给控制台 - ruby - 2

    我正在尝试将$stdout设置为临时写入一个文件,然后返回到一个文件。test.rb:old_stdout=$stdout$stdout.reopen("mytestfile.out",'w+')puts"thisgoesinmytestfile"$stdout=old_stdoutputs"thisshouldbeontheconsole"$stdout.reopen("mytestfile1.out",'w+')puts"thisgoesinmytestfile1:"$stdout=old_stdoutputs"thisshouldbebackontheconsole"这是输出。r

随机推荐