草庐IT

HCIE-Security Day46:AC准入控制Dot1x

小梁L同学 2024-04-27 原文

 

简介

802.1X协议是一种基于端口的网络接入控制协议(Port based networkaccess control protocol)。“基于端口的网络接入控制”是指在局域网接入设备的端口这一级验证用户身份并控制其访问权限。

二层协议:802.1x为2层协议,不需要到达三层,对接入设备的整体性能要求不高,即可以使用二层交换机作为接入设备,有效降低建网成本。

安全性:认证报文和数据报文通过裸机接口分离,提高安全性。

C/S架构:包含三个实体,客户端、接入设备、认证服务器。

客户端是位于局域网段一端的一个实体,由该链路另一端的设备端对其进行认证。客户端一般为一个用户终端设备,用户可以通过启动客户端软件发起802.1X认证。客户端必须支持局域网上的可扩展认证协议EAPOL(Extensible Authentication Protocol over LAN)。

设备端是位于局域网段一端的另一个实体,对所连接的客户端进行认证。设备端通常为支持802.1X协议的网络设备,它为客户端提供接入局域网的端口,该端口可以是物理端口,也可以是逻辑端口。

认证服务器是为设备端提供认证服务的实体。认证服务器用于实现对用户进行认证、授权和计费,通常为RADIUS服务器。

基于EAP:802.1x使用EAP(扩展认证协议)作为其核心,实现客户端、设备端、认证服务器之间的信息交互。不是直接使用radius协议。

EAP和radius相比:

适配性高:可以基于各种底层,包括数据链路层、UDP层、TCP层。而radius只能基于UDP。

免IP:不需要IP地址。而radius必然要求IP地址啊。

客户端和接入设备之间:EAP使用EAPoL(EAP over LAN)封装格式

接入设备和服务器之间:根据实际情况可以选用EAP终结方式或中继方式。42

802.1X认证安全性较高,但是却需要客户终端安装802.1X客户端,网络部署不灵活。

MAC认证方式不需要安装客户端,但是需要在认证服务器上登记MAC地址,管理复杂

Portal认证方式同样不需要客户端并且部署灵活,但是安全性不高。

所以,802.1X认证一般适用于新建网络、用户集中并且信息安全要求严格的场景。

802.1x系统为典型的C/S结构,包括三个实体:客户端,认证服务器,设备端

认证方式

EAP透传

常用。

  1. 当用户需要访问外部网络时打开802.1X客户端程序,输入已经申请、登记过的用户名和密码,发起连接请求。此时,客户端程序将向设备端发出认证请求帧(EAPOL-Start),开始启动一次认证过程。
  2. 设备端收到认证请求帧后,将发出一个Identity类型的请求帧(EAP-Request/Identity)要求用户的客户端程序发送输入的用户名。
  3. 客户端程序响应设备端发出的请求,将用户名信息通过Identity类型的响应帧(EAP-Response/Identity)发送给设备端。
  4. 设备端将客户端发送的响应帧中的EAP报文封装在RADIUS报文(RADIUS Access-Request)中发送给认证服务器进行处理。
  5. RADIUS服务器收到设备端转发的用户名信息后,将该信息与数据库中的用户名列表中对比,找到该用户名对应的密码信息,用随机生成的一个MD5 Challenge对密码进行加密处理,同时将此MD5 Challenge通过RADIUS Access-Challenge报文发送给设备端。
  6. 设备端将RADIUS服务器发送的MD5 Challenge转发给客户端。
  7. 客户端收到由设备端传来的MD5 Challenge后,用该Challenge对密码部分进行加密处理,生成EAP-Response/MD5 Challenge报文,并发送给设备端。
  8. 设备端将此EAP-Response/MD5 Challenge报文封装在RADIUS报文(RADIUS Access-Request)中发送给RADIUS服务器。
  9. RADIUS服务器将收到的已加密的密码信息和本地经过加密运算后的密码信息进行对比,如果相同,则认为该用户为合法用户,并向设备端发送认证通过报文(RADIUS Access-Accept)。
  10. 设备收到认证通过报文后向客户端发送认证成功帧(EAP-Success),并将端口改为授权状态,允许用户通过端口访问网络。
  11. 用户在线期间,设备端会通过向客户端定期发送握手报文的方法,对用户的在线情况进行监测。
  12. 客户端收到握手报文后,向设备发送应答报文,表示用户仍然在线。缺省情况下,若设备端发送的两次握手请求报文都未得到客户端应答,设备端就会让用户下线,防止用户因为异常原因下线而设备无法感知。
  13. 客户端可以发送EAPOL-Logoff帧给设备端,主动要求下线。
  14. 设备端把端口状态从授权状态改变成未授权状态,并向客户端发送EAP-Failure报文。

EAP终结

华为私有。EAP终结方式与EAP中继方式的认证流程相比,不同之处在于步骤(4)中用来对用户密码信息进行加密处理的MD5 challenge由设备端生成,之后设备端会把用户名、MD5 challenge和客户端加密后的密码信息一起送给RADIUS服务器,进行相关的认证处理。

EAP中继方式的优点是设备端处理更简单,支持更多的认证方法,缺点则是认证服务器必须支持EAP,且处理能力要足够强。对于常用的EAP-TLS、EAP-TTLS、EAP-PEAP三种认证方式,EAP-TLS需要在客户端和服务器上加载证书,安全性最高,EAP-TTLS、EAP-PEAP需要在服务器上加载证书,但不需要在客户端加载证书,部署相对灵活,安全性较EAP-TLS低。

EAP终结方式的优点是现有的RADIUS服务器基本均支持PAP和CHAP认证,无需升级服务器,但设备端的工作比较繁重,因为在这种认证方式中,设备端不仅要从来自客户端的EAP报文中提取客户端认证信息,还要通过标准的RADIUS协议对这些信息进行封装,且不能支持除MD5-Challenge之外的其它EAP认证方法。PAP与CHAP的主要区别是CHAP密码通过密文方式传输,而PAP密码通过明文的方式传输。因而PAP方式认证的安全性较低,实际应用通常采用CHAP方式认证。

配置流程

1、配置802.1x接入模板

dot1x-access-profile name profile1 #创建802.1X接入模板并进入802.1X接入模板视图。 缺省情况下,设备自带1个名称为dot1x_access_profile的802.1X接入模板。
dot1x authentication-method { chap | pap | eap } #配置802.1X用户的认证方式。
#缺省情况下,802.1X用户认证方式为eap,即采用可扩展的认证协议EAP中继认证方式。

采用AAA本地认证时,802.1X用户的认证方式只能配置为EAP终结方式。

只有采用RADIUS认证时,才可以配置为EAP中继方式。

如果RADIUS服务器的处理能力比较强,能够解析大量用户的EAP报文后再进行认证,可以采用EAP中继方式;

如果RADIUS服务器处理能力不强,不能同时解析大量EAP报文并完成认证,建议采用EAP终结方式,由设备帮助RADIUS服务器完成前期的EAP解析工作。

2、配置802.1x认证模板

NAC能够实现对用户进行接入控制,为便于管理员配置NAC的相关功能,设备使用认证模板统一管理NAC的配置信息。通过配置认证模板下的参数(例如:配置认证模板下绑定的接入模板,确定认证模板的认证方式;之后应用该认证模板的接口或VAP模板采用以上认证方式对用户做认证),实现对不同的用户进行不同的接入控制。

authentication-profile name profile1 
#创建认证模板并进入认证模板视图。
配置认证模板
dot1x-access-profile profile1 # 配置认证模板绑定的802.1X接入模板。
# 缺省情况下,认证模板没有绑定802.1X接入模板。

3、接口下使能NAC

认证模板用来统一管理NAC的相关配置。通过将认证模板绑定到接口或VAP模板视图下来使能NAC,实现对接口或VAP模板下的用户进行接入控制。接口或VAP模板下用户的认证类型由认证模板下绑定的接入模板决定。

interface g0/0/1#进入接口视图。
authentication-profile profile1 #接口下应用认证模板。
#缺省情况下,接口下没有应用认证模板。

802.1x准入配置案例

实验拓扑

配置思路

1、底层网络互通

2、交换机802.1x认证配置

3、ac配置

3.1、添加认证控制设备

3.2、创建账号信息

3.3、配置认证规则

3.4、配置授权结果

3.5、配置授权规则

3.6、验证结果

具体配置

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、接入交换机配置802.1x认证

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、在认证模板下绑定dot1x模板并在接入接口下调用认证模板

#配置802.1x认证

#统一模式  
#第一步:配置dot1x模板 
dot1x-access-profile name DOT1X-ACC-PROFILE  
dot1x  authentication-method  eap  #默认方式 (可以不敲)

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

interface GigabitEthernet0/0/9
 authentication-profile AUTH-PROFILE   #调用认证模板

4、ac配置

4.1、AC添加认证控制设备

资源---设备--设备管理

创建设备组

 

添加交换机设备

在所有设备下点击添加设备。IP地址写靠ac侧的地址

 

移动设备到新创建的设备组

 

4.2、AC创建用户账号

资源--用户--用户管理

创建部门

 

创建用户

账号user1,密码Huawei@123

注意:如果使用客户端认证,必须勾选agent选项

 

4.3、配置认证规则

策略--认证授权--认证规则

创建认证规则

 

关联用户组

用户组和账号两个选一个就可以。

 

关联接入设备组

 

关联允许的协议

默认的认证协议选择:EAP-PEAP-MSCHAPv2协议,勾选CHAP、EAP-MD5、EAP-PEAP-MSCHAPv2协议

 

4.4、配置授权结果

创建动态acl

策略元素--动态acl

 

配置授权结果

 

4.5、配置授权规则

创建授权规则

 

关联用户组

 

 

关联接入设备组

 

关联授权结果

 

5、验证结果

5.1、接入成功前连网关都不可达

 

5.2、使用easyaccess做测试,启用802.1x

 

5.3、输入账号密码(user1,Huawei@123)

 

 

5.4、查看在线用户

 

5.5、查看在线用户详细信息

 

5.6、检查防火墙安全策略

dis fire se ta

2022-07-20 15:21:59.350 +08:00

Current Total Sessions : 9

radius-accounting VPN: public --> public 10.1.1.254:53473 --> 192.168.1.100:1813

radius VPN: public --> public 10.1.1.254:51884 --> 192.168.1.100:1812

tcp VPN: public --> public 10.1.2.1:49323 --> 192.168.1.100:17889

tcp VPN: public --> public 10.1.2.1:49325 --> 192.168.1.100:17889

http VPN: public --> public 10.1.2.1:49327 --> 123.151.176.26:80

tcp VPN: public --> public 10.1.2.1:49326 --> 192.168.1.100:17889

tcp VPN: public --> public 10.1.2.1:49324 --> 192.168.1.100:17889

802.1x准入控制故障排查步骤

查看aaa配置是否正确

 

查看设备上802.1x端口是否正确启用

 

在NAC设备上test-aaa测试与radius server的通信情况

 

检查客户端配置

检查AC设备配置

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

  1. 神州数码无线产品(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配

  2. ruby-on-rails - 名称为 "dot"的 Rails 强参数 - 2

    我需要在Rails4中允许一个名称中有一个点的参数:我的params散列如下所示:{"dictionary_objects.id"=>["102","110","106"]}我可以获得参数值:>>params['dictionary_objects.id']=>[[0]"102",[1]"110",[2]"106"]但是当我尝试允许它时,它返回一个空散列:>>params.permit('dictionary_objects.id')Unpermittedparameters:dictionary_objects.id=>{}有人知道我怎样才能允许名称中带有点的参数吗?谢谢。

  3. ruby-on-rails - 保存图表失败!验证 Graphviz 是否已安装并位于您的路径中,或使用 filetype=dot - 2

    当我运行rakedb:migrate时出现这个错误rakeaborted!Savingdiagramfailed!VerifythatGraphvizisinstalledandinyourpath,orusefiletype=dot.完整日志:rakedb:migrateLoadingapplicationenvironment...LoadingcodeinsearchofActiveRecordmodels...GeneratingEntity-RelationshipDiagramfor20models...rakeaborted!Savingdiagramfailed!Ver

  4. ruby-on-rails - Rails — 带有 "dot"的参数(例如/google.com) - 2

    如何强制Rails将值中带点的参数视为google.com(例如/some_action/google.com)单个参数而不是"id"=>"google","format"=>"com"?参数值应该是"id"=>"google.com" 最佳答案 默认情况下,动态段不接受点-这是因为点用作格式化路由的分隔符。但是,您可以向路由参数添加一些正则表达式要求。在这里,您要在参数中允许点。match'some_action/:id'=>'controller#action',:constraints=>{:id=>/[0-z\.]+/}在r

  5. 【蓝桥系列】——十三届蓝桥杯PythonB组第五题E题蜂巢(AC代码) - 2

    大家好,我是普通小明,初入学习博客,一起加油! 首先,感谢小蓝刷题对我的鼓励,我也希望加入学习算法这个大家庭。第一篇文章,有些不完美,还请多多指教。目录(好像我并不会用锚点T-T)省赛心得蜂巢题解-思路点拨蜂巢题解-AC代码蜂巢题解-刷题总结未来展望省赛心得遗憾落幕十三届蓝桥PyB省赛,破灭了大一自学算法拿下国奖的传奇神话究其原因1、对算法过多理论而缺少实践,缺少刷题量。2、对算法的理解不够全面。3、对数论算法有所欠缺。立志1、一年时间完成蓝桥刷题系统过半题量。2、全面掌握各种算法,并且形成模板记忆。3、多看数学难题,提升思维转换能力。一、蜂巢题解-思路点拨个人主页有另一个更简单的解法读完题没

  6. javascript - JS : Recognize dot or delete in keypress - 2

    如果用户按下点(在标准键盘或数字block上),我想执行一些代码。但是如果我把它接过来Keycode(110),这就和删除按钮一样了。我如何识别它们?感谢您的帮助! 最佳答案 删除键(通常在箭头上方)为46,数字小数点为110,键盘周期为190。这是一个非常好的页面,可以了解什么是键码:http://www.cambiaresearch.com/c4/702b8cd1-e5b0-42e6-83ac-25f0306e3e25/Javascript-Char-Codes-Key-Codes.aspx如果这不能回答您的问题,请重新措辞,因

  7. javascript - dot.js 遍历对象 - 2

    使用dot.js模板引擎,您如何遍历对象?在下面的示例数据中,您如何遍历“msg”对象?{"msg":{"1":{"a":"a1"},"2":{"b":"b2"}}} 最佳答案 来自thewebsite上的示例,看起来你应该能够做到:{{for(varpropinit){}}{{=prop}}{{for(varmsgPropinit[prop]){}}{{=msgProp}}{{for(varnumPropinit[prop][msgProp]){}}{{=prop}}:{{=it[prop][msgProp][numProp]}}

  8. javascript - doT.js 每 3 次迭代做一些事情 - 2

    我有一个看起来像这样的doT.js模板:{{?it.books.length}}{{~it.books:value}}{{=value.title}}//thisshouldonlyberenderedevery3rdtime{{~}}{{?}}最后的br-Tag只应该每三次渲染一次。我该怎么做? 最佳答案 试试这个:{{?it.books.length}}{{~it.books:value:index}}{{=value.title}}{{?index%3==2}}{{?}}{{~}}{{?}}如果你想避免在列表的末尾添加元素(当

  9. k8s API Server 中的认证、鉴权、准入、限流总结分享 - 2

    文章目录概述认证认证插件基于静态token的认证服务实践基于X509证书认证实践基于webhook认证实践鉴权k8s中RBAC的使用授权实践准入场景配额管理实践插件插件开发限流APIPriorityandFairnessAPF中的排队FlowSchema与PriorityLevelConfiguration(队列权重配置)调试命令概述kube-apiserver是k8s最重要的控制组件之一,主要提供以下功能:提供集群管理的RESTAPI接口,包括认证授权、数据校验以及集群状态变更等k8s中所有模块与etcd的数据交互都需要走APIServer,禁止直接和etcd通信APIServer请求流程概

  10. 正则表达式 : replacing the last dot for a comma - 2

    我有以下代码:varx="100.007"x=String(parseFloat(x).toFixed(2));returnx=>100.01这非常棒,正是我想要的效果。我只想要一个小小的补充,就像这样:varx="100,007"x.replace(",",".")x.replacex=String(parseFloat(x).toFixed(2));x.replace(".",",")returnx=>100,01但是,此代码将替换第一次出现的“,”,我想在其中捕获最后一个。任何帮助将不胜感激。 最佳答案 您可以使用正则表达式来

随机推荐