准入控制,全称网络准入控制(NAC),旨在仅让合法的用法接入网络并根据接入用户的权限允许其访问特定的资源。
这个目的可以分为两个部分来看
让合法的用户接入网络:通过准入认证实现
根据接入用户的权限允许其访问特定资源:通过权限控制实现(只能在存在Radius服务器的场景做)
而用户能否访问网络资源、用户具体的权限控制,实际都是通过下发acl
进行包过滤来实现
在网络准入控制NAC中,设备的有三种身份:
用户终端:各种接入网络的终端设备,比如手机、电脑、打印机等
网络准入设备:终端访问网络时的认证接入点,是准入策略的实施者,一般为交换机、路由器或者AP、AC、VPN网关等
准入服务器:通常分为认证服务器(Radius)和用户数据源服务器(存储用户身份信息)两类,如果是准入设备本地认证,则准入设备既是准入设备又是准入服务器
NAC系统策略授权根据终端的认证状态,将网络分为三个域:
认证前域:认证前域具有终端认证前、认证失败后需要具有的网络权限
主要有访问准入控制服务器、DHCP、DNS、Portal Web服务器的权限等。
认证前域配置不当会导致用户无法进行认证操作
隔离域:认证成功但是没有通过安全校验的用户,应该具有的网络权限
主要有访问病毒库、补丁库等有关安全软件、补丁安装升级的操作权限
用户修复不安全项并且安全校验通过后,应该给予认证后域的权限
认证后域:认证成功并且安全校验通过的用户可以访问的网络资源
准入认证
准入认证有三种:802.1x、mac、portal
802.1x:简称1x认证,是最安全的准入认证方法,通过EAP协议完成认证信息的交互。
用户终端需要安装客户端软件,华三802.1x客户端软件为iNode
Portal认证:简称Portal,是基于Web界面的认证方法。
要求认证前域放通终端到Portal Web服务器网页的访问,用户在网页输入账号密码,由Portal Web服务器和认证服务器交互或Portal Web服务器告知认证服务器主动和终端交互完成认证(看Portal Web服务器是否支持交互Radius报文)
Portal认证是准入认证中安全性最弱的方式,但由于其无需下载客户端软件的特点,被广泛用于访客网络认证。
MAC认证:MAC是802.1x的青春版。
网络中需要准入认证的终端往往不止可以下载客户端软件或者访问Web界面的手机电脑,还有类似打印机这样不能下载特定软件,不能访问Web界面甚至不能主动发送认证报文的”哑终端”。
MAC认证就是对于这类”哑终端”的青春(阉割)版,不需要哑终端本身发送认证报文,而是在接入设备主动监测哑终端MAC地址,一旦收到源为哑终端MAC的报文,立即和认证服务器交互进行认证。
本质还是802.1x,但由于MAC认证对于终端本身”无感知”的特性,现在往往也和802.1x或者portal配合使用部署无感知认证方案
802.1x认证
802.1x认证原理
802.1x是一种基于端口(设备接口)的网络接入控制协议,其在接入设备(网络准入设备)的接口处验证用户身份并控制其访问权限
802.1x协议中,客户端(用户终端)和网络接入设备之间必须直连且交互EAP报文传递认证信息
由于EAP报文封装在二层网络(LAN)中,802.1x客户端和接入设备之间运行的EAP协议又称EAPoL(EAP over LAN)
由于终端(手机电脑)本身并不能发送EAPoL报文,所以终端需要安装支持802.1x认证的客户端软件才可以进行802.1x认证
而对于接入设备到认证服务器,根据具体的网络情况,分为EAP中继方式和EAP终结方式两种
EAP中继方式
EAP中继方式指网络接入设备收到终端发送的EAPoL报文后直接将其封装在RADIUS报文中转发给认证服务器
这种方式无需接入设备对EAP内的数据进行处理,所以对接入设备压力小而对认证服务器要求高
由于EAP报文封装在RADIUS报文中,接入设备到认证服务器之间的报文称为EAPoR(EAP over Radius)
EAP终结方式
EAP终结方式指网络接入设备收到终端发送的EAPoL报文后先解析报文,将解析出的认证信息封装到Radius报文中发送给认证服务器
即EAP协议在接入设备终结,后续通过Radius报文交互认证信息
由于接入设备需要解析EAP报文,这种方式对接入设备要求高而对认证服务器压力小
EAP中继方式支持更多的认证方式,如EAP-TLS、EAP-TTLS、EAP-PEAP等。
EAP终结方式使用标准Radius协议,所以不能封装除MD5挑战外的其他EAP认证方法,并且接入设备和认证服务器之间只能通过交互PAP、CHAP协议完成认证。通常采用CHAP。
802.1x认证报文交互
802.1x认证时中继方式和终结方式的报文交互流程不同
本段摘抄华为文档
802.1x中继方式
当用户需要访问外部网络时打开802.1X客户端程序,输入已经申请、登记过的用户名和密码,发起连接请求。此时,客户端程序将向设备端发出认证请求帧(EAPOL-Start),开始启动一次认证过程。
设备端收到认证请求帧后,将发出一个Identity类型的请求帧(EAP-Request/Identity)要求用户的客户端程序发送输入的用户名。
客户端程序响应设备端发出的请求,将用户名信息通过Identity类型的响应帧(EAP-Response/Identity)发送给设备端。
设备端将客户端发送的响应帧中的EAP报文封装在RADIUS报文(RADIUS Access-Request)中发送给认证服务器进行处理。
RADIUS服务器收到设备端转发的用户名信息后,将该信息与数据库中的用户名列表中对比,找到该用户名对应的密码信息,用随机生成的一个MD5 Challenge对密码进行加密处理,同时将此MD5 Challenge通过RADIUS Access-Challenge报文发送给设备端。
设备端将RADIUS服务器发送的MD5 Challenge转发给客户端。
客户端收到由设备端传来的MD5 Challenge后,用该Challenge对密码部分进行加密处理,生成EAP-Response/MD5 Challenge报文,并发送给设备端。
设备端将此EAP-Response/MD5 Challenge报文封装在RADIUS报文(RADIUS Access-Request)中发送给RADIUS服务器。
RADIUS服务器将收到的已加密的密码信息和本地经过加密运算后的密码信息进行对比,如果相同,则认为该用户为合法用户,并向设备端发送认证通过报文(RADIUS Access-Accept)。
设备收到认证通过报文后向客户端发送认证成功帧(EAP-Success),并将端口改为授权状态,允许用户通过端口访问网络。
用户在线期间,设备端会通过向客户端定期发送握手报文的方法,对用户的在线情况进行监测。
客户端收到握手报文后,向设备发送应答报文,表示用户仍然在线。缺省情况下,若设备端发送的两次握手请求报文都未得到客户端应答,设备端就会让用户下线,防止用户因为异常原因下线而设备无法感知。
客户端可以发送EAPOL-Logoff帧给设备端,主动要求下线。
设备端把端口状态从授权状态改变成未授权状态,并向客户端发送EAP-Failure报文。
802.1x终结方式
EAP终结方式与EAP中继方式的认证流程相比,不同之处在于步骤(4)中用来对用户密码信息进行加密处理的MD5 challenge由设备端生成,之后设备端会把用户名、MD5 challenge和客户端加密后的密码信息一起送给RADIUS服务器,进行相关的认证处理。
802.1x认证配置-华为
实验组网:
实验目的:
Cloud桥接物理机,物理机使用192.168.56.0网络访问网络,NAC配置802.1x本地认证,使物理机能通过iNode完成802.1x认证。LSW1以二层交换机的身份透传EAP报文。
由于华为模拟器没有Radius服务器,远程认证只做配置不看现象
实验配置:
LSW1:
由于EAP报文是二层组播报文,所以无法透传二层交换机,所以如果终端和客户端之间存在二层设备,需要配置二层隧道透传EAPoL报文
# 创建二层隧道并透传EAP组播报文
l2protocol-tunnel user-defined-protocol eap protocol-mac 0180-c200-0003 group-mac 0100-0000-0002
-- 创建L2协议用户自定义隧道,名为eap,协议MAC为0180-c200-0003,转换后组播地址为0100-0000-0002(EAP协议这两个值固定不变)
# 放通vlan,并将接口加入自定义二层隧道
vlan batch 10
interface GigabitEthernet0/0/2
port link-type access
port default vlan 10
l2protocol-tunnel user-defined-protocol eap enable
-- 使能用户自定义的L2隧道eap
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10
l2protocol-tunnel user-defined-protocol eap enable
NAC:
NAC作为本地认证的802.1x接入设备,需要使能802.1x功能并配置需要认证的用户
华为的802.1x有两种配置方式:统一模式和传统模式,目前缺省为统一模式,但ensp缺省传统模式
早期都是传统模式,后续为了精简配置,华为新增了统一模式并建议配置统一模式,两者只有配置的区别而没有本质的不同
- 配置用户
# 配置用于802.1x认证的用户
aaa
local-user atmujie password simple atmujie
local-user atmujie service-type 8021x
- 通过统一模式配置802.1x
# 统一模式:配置802.1x认证模板(模拟器不支持)
dot1x-access-profile name dot1x # 创建802.1x认证模板
dot1x authentication-method {chap | pap | eap } # 指定认证方式(chap和pap是终结,eap是中继)本地认证可以不配
# 配置认证模板和认证域
aaa
authentication-scheme 1x # 创建认证模板1x
authentication-mode local radius # 指定认证时先local再radius
-- 认证模板可以配置的认证方式有四种,local radius hwtacacs none,如果同时配置多个,则按顺序执行
-- 只有前面的认证方式认证失败,才会执行后面的认证
domain 1x # 创建认证域1x
authentication-scheme 1x # 域中调用认证模板1x
# 配置认证策略模板
authentication-profile name 1x # 创建认证策略模板1x
dot1x-access-profile d1 # 调用dot1x认证模板(统一模式不需要全局使能dot1x)
authentication mode multi-authen max-user 100 # 认证模式为多播,最大用户数100
access-domain 1x force # 引用1x域并设为强制域
# 在接口调用
interface GigabitEthernet0/0/1
authentication-profile 1x # 接口调用认证策略模板1x
- 通过传统模式配置802.1x
# 配置认证模板和认证域
aaa
authentication-scheme 1x # 创建认证模板1x
authentication-mode local radius # 指定认证时先local再radius
domain 1x # 创建认证域1x
authentication-scheme 1x # 域中调用认证模板1x
domain 1x # 配置全局域名(可选)
-- 用户接入时以`username@domain_name`的形式输入用户名,如果用户没有加域名,则默认通过全局域认证
undo authentication unified-mode # 将NAC配置模式切换成传统模式,只适用于新版交换机
# 使能dot1x
dot1x enable # 全局使能dot1x
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10
dot1x enable # 接口使能dot1x
dot1x authentication-method eap # 指定dot1x认证方式为eap(中继),本地认证无需此配置
使用radius服务器认证
无论是统一还是传统,远端radius认证比之本地认证有四个不同点
本地认证不需要指定dot1x模式(chap、pap、eap),远端认证必须指定
本地认证方式首选local,远端首选radius或者hwtacacs
远端认证需要配置radius服务模板
远端认证需要在domain中添加创建的服务模板
# 创建Radius模板
radius-server template rd1
radius-server authentication 192.168.2.30 1812 # 指定radius服务器ip和端口
radius-server shared-key cipher Huawei@2012 # 指定设备对接radius服务器使用的密钥
# 统一模式:配置802.1x认证模板(模拟器不支持)
dot1x-access-profile name dot1x
dot1x authentication-method {chap | pap | eap } # 指定认证方式(chap和pap是终结,eap是中继)
aaa
authentication-scheme 1x # 创建认证模板1x
authentication-mode radius # 指定认证方式为radius
domain 1x # 创建认证域1x
authentication-scheme 1x # 域中调用认证模板1x
radius-server rd1 # 调用radius模板
# 传统模式:直接在接口指定
aaa
authentication-scheme 1x # 创建认证模板1x
authentication-mode radius # 指定认证方式为radius
domain 1x # 创建认证域1x
authentication-scheme 1x # 域中调用认证模板1x
radius-server rd1 # 调用radius模板
dot1x enable # 全局使能dot1x
interface GigabitEthernet0/0/1
dot1x enable # 接口使能dot1x
dot1x authentication-method eap # 指定dot1x认证方式为eap(中继),
由于ENSP不支持测试,这里不做测试。
802.1x认证配置-华三
华三HCL模拟器支持802.1x本地以及Radius远程认证,可以使用HCL模拟器实验1x认证的效果
Host连接物理机,使用iNode进行1x认证,NAC配置1x本地认证
- 802.1x 本地认证
# 创建用于认证的用户
local-user atmujie class network
password simple atmujie
service-type lan-access
# 设置认证域
domain 1x # 创建认证域1x
authentication lan-access local # 设置接入认证方式为本地
authorization lan-access none # 设置接入授权方式为none
accounting lan-access none # 设置接入计费方式为none
# 使能dot1x认证
dot1x # 全局使能dot1x
interface GigabitEthernet1/0/1
dot1x # 接口使能dot1x
dot1x port-method macbased # 设置本接口认证方式为基于MAC(缺省)
dot1x mandatory-domain 1x # 设置本接口接入的终端强制使用1x认证域进行认证
dot1x port-method macbased
:dot1x在设备的配置实现中分为基于接口和基于MAC两种方式
基于接口模式指接口下只要有一个用户认证成功,本接口所有用户均视为认证成功,同样,这个用户下线,认为所有用户下线
基于MAC模式则必须每个MAC地址独立认证,缺省使用基于MAC模式dot1x mandatory-domain 1x
:认证域是认证的最基本单位,任何用户、无论是AAA登录还是NAC准入认证,报文到达设备必然先根据认证域查询认证方式。认证域有三种:强制域:一旦指定,则上线的用户必须使用该域进行认证,此时可以无需在用户名后加域名
用户域:在没有指定为强制域的情况下,认证用户必须以
username@domain_name
才能匹配到该域缺省域:当没有指定强制域且没有匹配到用户域时,以缺省域规则进行认证。可以使用
domain default
命令指定
使用iNode连接:
查看用户上线情况
display dot1x sessions
# 查看dot1x会话
display dot1x interface GigabitEthernet 1/0/1
# 查看dot1x接口配置
- 802.1x 远程认证(Radius服务器)
# 配置radius服务器
radius scheme 1x # 创建radius模板1x
primary authentication 10.1.12.2 # 指定主认证服务器地址为10.1.12.2
primary accounting 10.1.12.2 # 指定主计费服务器地址为10.1.12.2
key authentication simple 123 # 指定和认证服务器建立连接的密钥为123
key accounting simple 123 # 指定和计费服务器建立连接的密钥为123
user-name-format without-domain # 配置发送给Radius服务器的用户名不携带域名
# 配置认证域
domain 1x # 创建认证域1x
authentication lan-access radius-scheme 1x # 指定认证方式为radius,引用radius 1x服务器
authorization lan-access none
accounting lan-access none
# 使能dot1x
dot1x # 全局使能dot1x
dot1x authentication-method chap # 指定dot1x认证模式为终结模式(缺省为chap)
interface GigabitEthernet1/0/1
dot1x # 接口使能dot1x
dot1x mandatory-domain 1x # 设置本接口强制使用1x域认证
dot1x authentication-method chap
# 指定dot1x认证模式为终结模式(缺省为chap)
1x认证中准入端和服务器端的交互有两种方式,中继和终结,中继主要使用EAP协议认证,终结使用PPP协议认证
所以在配置中,chap、pap认证模式均指终结方式(缺省chap),eap认证为中继方式。
MAC认证
MAC认证是低配版的802.1x认证,专为无法安装认证客户端、访问网页的哑终端进行接入认证使用。或者在一些特殊场景中使用,比如无感知Portal认证,MAC旁路认证等
进行MAC认证时,需要先由管理员将需要认证的MAC地址提前写入认证服务器或网络准入设备。
当哑终端发送ARP/DHCP/DHCPv6/ND报文访问网络到达准入设备时,触发MAC认证,由准入设备以此MAC地址为用户名、密钥向认证服务器发送请求。
缺省情况下,MAC认证的用户名和密钥均为不带分隔符’-‘的MAC的地址,如
0005e00112233
MAC认证中,准入设备和认证服务器之间只能以pppoe协议认证(pap、chap)交互
MAC认证的过程对于终端而言是无感知的
MAC认证配置-华为
实验目的:PC1通过MAC认证后可以和PC2互通
本地认证
# 创建用于MAC认证的用户 aaa # 进入AAA视图 local-user 5489983D6C96 password simple 5489983D6C96 # 创建用户(默认器密码最多16位,不支持配置带分隔符) local-user 5489983d6c96 service-type 8021x # 设置用户用于802.1x认证(MAC就是青春版的1x) # 创建认证域 aaa authentication-scheme mac # 创建认证实体mac authentication-mode local # 设置认证模式为local(缺省) domain mac # 创建认证域MAC authentication-scheme mac # 使能MAC认证 mac-authen # 全局使能MAC认证 mac-authen domain mac # 指定MAC认证使用mac认证域 mac-authen username macaddress format without-hyphen # 指定用户名密码格式为不带分隔符的MAC地址(缺省) mac-authen timer offline-detect 180 # 指定用户最大空闲时间 interface GigabitEthernet0/0/1 mac-authen # 接口使能MAC认证
远程Radius认证
# 创建Radius方案 radius-server template mac # 创建radius模板mac radius-server shared-key simple 123 # 指定终端和服务器连接的预共享密钥为123 radius-server authentication 1.1.1.1 1812 # 指定认证服务器地址和端口 # 配置认证域 aaa # 进入aaa视图 authentication-scheme mac # 创建认证方案 authentication-mode radius # 指定认证模式为radius domain mac # 创建认证域mac authentication-scheme mac # 引用认证方案mac # 使能MAC认证 mac-authen # 全局使能MAC认证 mac-authen domain mac # 指定MAC认证使用mac认证域 mac-authen username macaddress format without-hyphen # 指定用户名密码格式为不带分隔符的MAC地址(缺省) mac-authen timer offline-detect 180 # 指定用户最大空闲时间 interface GigabitEthernet0/0/1 mac-authen # 接口使能MAC认证
MAC认证配置-华三
实验目的:PC通过MAC认证后可以和Server互通
- 本地认证
# 配置用于MAC认证的用户
local-user 96-4d-28-ff-02-00 class network # 用户名为MAC地址
password simple 96-4d-28-ff-02-00 # 密码为MAC地址
service-type lan-access # 设置用户使用在准入控制
# 配置认证域
domain mac
authentication lan-access local
authorization lan-access none
accounting lan-access none
# 配置MAC认证
mac-authentication # 全局使能MAC认证
mac-authentication domain mac # 全局指定认证域为MAC
mac-authentication timer offline-detect 180 # 配置用户空闲180s自动下线
mac-authentication user-name-format mac-address with-hyphen lowercase # 指定MAC地址认证用户名格式
interface GigabitEthernet1/0/1
mac-authentication # 接口使能MAC认证
- 远程认证
# 配置radius服务器
radius scheme mac # 创建radius模板1x
primary authentication 10.1.12.2 # 指定主认证服务器地址为10.1.12.2
primary accounting 10.1.12.2 # 指定主计费服务器地址为10.1.12.2
key authentication simple 123 # 指定和认证服务器建立连接的密钥为123
key accounting simple 123 # 指定和计费服务器建立连接的密钥为123
user-name-format without-domain # 配置发送给Radius服务器的用户名不携带域名
# 配置认证域
domain mac # 创建认证域1x
authentication lan-access radius-scheme mac # 指定认证方式为radius,引用radius 1x服务器
authorization lan-access none
accounting lan-access none
# 配置MAC认证
mac-authentication # 全局使能MAC认证
mac-authentication domain mac # 全局指定认证域为MAC
mac-authentication timer offline-detect 180 # 配置用户空闲180s自动下线
mac-authentication user-name-format mac-address with-hyphen lowercase # 指定MAC地址认证用户名格式
mac-authentication authentication-method chap # 和radius服务器使用chap交互,缺省pap(有的设备不支持此命令)
interface GigabitEthernet1/0/1
mac-authentication # 接口使能MAC认证
mac-authentication domain mac
# 指定认证域为MAC
如果不指定,则使用缺省域
配置位置可以是全局,也可以是接口,如果在接口配置则只对本接口生效
mac-authentication timer
# 配置MAC认证定时器,有三种类型
offline-detect:下线检测定时器。用于配置用户最大空闲时间,如果在此时间内没有该用户的报文就中断连接并通知认证服务器停止计费。缺省300s,取值范围60-65535。
quiet:静默定时器。用于防止爆破攻击,用户认证失败后,需要等待一个静默定时器的时间才能再次认证,静默器间收到用户报文直接丢弃。缺省60s,取值范围1-3600。
server-timeout:服务器超时定时器。用于设置Radius服务器超时时间,认证时,如果到服务器超时时间设备都没有收到Radius服务器应答,则在对应的端口上禁止用户访问网络。缺省100s,取值范围100-300秒。
mac-authentication user-name-format
# 指定MAC认证的用户格式,有两种类型
fixed:固定的用户名密码格式。
不论用户的MAC地址为何值,所有用户均使用设备上指定的一个固定用户名和密码作为身份信息进行认证。
由于同一个端口下可以有多个用户进行认证,因此端口上的所有MAC地址均使用同一个固定用户名进行认证,服务器端仅需要配置一个用户帐户即可满足所有认证用户的认证需求。
适用于接入客户端比较可信的网络环境。mac-address:使用用户的MAC地址作为用户名和密码。
指定用户的MAC地址为用户名,则用户密码也为用户的MAC地址。
这种情况下,每一个MAC地址认证用户都使用唯一的用户名进行认证,安全性高,但要求认证服务器端配置多个MAC形式的用户帐户。
配置时无论明文或密文方式设置的密码,均以密文的方式保存在配置文件中,明文密文只是密码配置方式不同。
查看MAC认证情况display mac-authentication
Portal认证
Portal认证原理
Portal认证和802.1x认证相比就是另外的一个分支认证了,其和802.1x相比主要有两点不同
802.1x认证通过交互EAP协议完成认证,而Portal认证通过交互Portal协议或者Http/Https协议完成认证
802.1x认证准入设置必然是其接入设备(无法跨三层),而Portal认证可以不是,只需要使得流量流经准入设备即可
二层Portal认证时,可以同时根据MAC地址、IP地址认证,更加安全;
三层Portal认证时,只能根据IP地址认证,相比二层Portal认证安全性有所不足;
二、三层认证的区别在于接入设备和认证终端之间是否为同网段
无论是二层还是三层认证,Portal认证前域要求终端和认证服务器、准入设备之间可达
相比802.1x认证需要安装认证客户端,更适合于员工使用。Portal认证需要访问Portal Web服务器认证,更适合访客网络。
由于Portal Web服务器的存在,Portal认证的角色有四种:终端、准入设备、Portal服务器、认证服务器
Portal认证流程如图:
认证终端和准入设备之间建立预连接(仅二层认证执行此操作)
预连接:认证终端在认证成功之前在准入设备上建立用户在线表项
认证终端发起HTTP请求,请求目的可以是任何地址
准入设备拦截HTTP请求,并将请求重定向到Portal Web服务器
认证终端Portal Web页面输入账号密码,发起Portal认证请求
认证终端发起Portal认证后,根据Portal Web服务器响应方式的不同,后续的认证流程分两种
基于Portal协议的Portal认证
一般情况下,Portal认证都基于Portal协议进行
Portal 协议:华为和华三都有各自的实现,可以说是名称相同的私有协议。使用UDP 2000端口
如果准入设备同时也是Portal服务器,那么在设备内,也通过Portal协议交互认证。
Portal服务器收到认证请求,向接入设备发送挑战字请求
从这里往后就可以看做为1x认证的流程
接入设备发送挑战字,Portal服务器根据挑战字封装用户名密码,向接入设备发送认证报文(PAP无需挑战字封装,会直接发送认证报文,默认CHAP)
接入设备收到认证请求,根据本地认证或远程认证决定本地处理或者发往Radius服务器
接入设备处理完毕,向Portal服务器返回认证结果
Portal 服务器通知用户认证结果
相比起802.1x,Portal认证就好像是找了个中介。
1x认证是用户(终端)拿着材料(认证信息)交给相关机构(准入设备),相关机构根据材料比对处理(本地认证或发送Radius服务器远端认证),最后告知用户结果(认证结果)并授予相关权限。
而Portal认证是用户(终端)拿着材料(认证信息)找到相关机构被告知由中介方统一处理(Portal重定向),或者直接找到中介方(直接访问Portal Web),将材料(认证信息)交给中介后,由中介向相关机构进行提交(认证请求),相关机构审核通过中授予用户相关权限,并将结果告知中介,中介再告诉客户。
如果以这个比喻类比,也能很容易想明白为什么1x需要认证客户端而Portal不需要,对于Portal认证,Web服务器就是他的认证客户端。
基于Http/Https协议的Portal认证
一般都是使用Portal协议进行认证,但有时由于Portal Web服务器并不支持Portal 协议,所以无法和准入设备进行认证。此时就要由用户自已提交认证请求。这种方式就是基于Http/Https的Portal认证
Portal服务器收到Portal请求,但由于服务器本身无法进行Portal协议交互,所以发送重定向通知用户直接向接入设备发起认证
接入设备直接解析认证请求,和远端服务器Radius交互并将认证结果直接返回到客户端
配置Portal 认证-华为
根据Portal服务器内置在准入设备中或外置在网络中,以及认证方式为本地认证或远程认证,Portal认证共有4中部署方案,即:
内置Portal服务器本地认证、内置Portal服务器远程认证、外置Portal服务器本地认证、外置Portal服务器远程认证
由于Portal服务器配置和Radius配置实际上是不相关也不会相互干扰的配置,所以这里实验以内置Portal服务器本地认证和外置Portal服务器远程认证为例
内置Portal服务器本地认证
实验组网:
NAC作为准入设备,配置内置Portal服务器的本地认证,终端通过Cloud接入topo并可以访问到Web-Server
实验配置:
# 创建用于本地Portal认证的用户
aaa
local-user atmujie password simple 123
local-user atmujie service-type web # 华为中Portal认证即Web
# 创建用于Portal认证的认证域
aaa
authentication-scheme portal
authentication-mode local
domain portal
authentication-scheme portal
# 配置内置Portal服务器
portal local-server ip 192.168.1.1 # 指定本地Portal服务器ip地址
-- 为避免单点故障,建议使用Loopback口配置
portal local-server http # 开启portal http服务
interface vlanif 10
portal local-server enable # 接口开启Portal服务
portal domain portal # 指定认证域
很遗憾,ensp不支持portal的配置,所以这里只能按官网的配置案例将配置贴上来
外置Portal服务器远程认证
外置Portal服务器和内置的区别不大,对于华为而言,需要多配置一个Portal模板
这里假设Portal 服务器地址为1.1.1.1
,Radius服务器地址为2.2.2.2
# 配置Radius服务器
radius-server template portal
radius-server shared-key simple 123
radius-server authentication 2.2.2.2 1812
# 配置认证域
aaa
authentication-scheme portal
authentication-mode radius
domain portal
authentication-scheme portal
radius-server portal
domain portal # 配置全局默认域为portal
# 配置portal服务器
web-auth-server portal
server-ip 1.1.1.1 # 指定portal服务器地址
port 50100 # 指定portal协议目的端口(缺省50100)
shared-key simple 123 # 指定和portal服务器建立连接的密钥
url http://1.1.1.1:8080/portalweb # 指定portal web url
-- 华为portal认证缺省开启重定向,会将到达准入设备但是没有通过认证的HTTP/HTTPS自动重定向。
portal free-rule 1 destination ip 192.168.200.1 mask 24 # 放通认证前域到必要的访问
-- portal free-rule 免认证规则放通可以细致到传输层协议
# 使能portal(基于三层接口使能)
int vlan 1
web-auth-server portal direct # 使能portal认证,直连(二层)模式,三层模式为layer3
domain portal
配置全局默认域为portal;无论是1x、mac还是portal都基于认证域,当用户认证时,如果携带域名,匹配域名指示的域。否则匹配默认域。而一般在认证时,我们都习惯于不写域名(除了邮箱),所以在组建准入认证时往往要进行认证域的配置。
默认域有三种配置三方式,分别代表三个范围:
全局默认域:全局生效,无论1x、mac、portal,都会使用这个域认证
模块全局默认域:对指定模块全局生效,比如只配置1x的全局域等
接口默认域:对从整个接口上行或接口上某个模块上行的流量进行认证
配置准入认证时需要按需使用
url
指定portal web服务器url在portal服务模板配置中指定url时最好指定IP地址的URL而非域名的URL,域名的URL需要DNS解析,要求设备额外放通到域名的DNS请求。
即域名的URL需要配置免认证规则使终端可以解析指定的域名。
同理,如果终端使用DHCP服务器获取地址,也需要放通到DHCP服务器的访问。
web-auth-server portal direct
# 使能portal认证,直连(二层)模式portal认证有二层和三层两种模式,二层模式要求准入设备使能portal的接口和终端同网段,通过先和终端建立预连接根据MAC和IP共同进行认证
三层模式不要求准入设备使能的接口和终端同网段,但是要求流量经过路由转发后到达端口,只能通过IP认证
web-auth-server portal layer3
使能portal,三层模式(二层模式和三层模式不能共存)
配置Portal认证-华三
华三的Portal认证相比华为略显复杂,但是配置的脉络却比华为清晰。
无论使外置portal服务器或者内置portal服务器,华三都是使用类似华为外置portal服务器的配置方式
并且新版的HCL模拟器支持Portal认证。
内置Portal服务器本地认证
# 创建用于Portal认证的用户
local-user atmujie class network
password simple 123
service-type portal
# 创建认证域
domain portal
authentication portal local # 设置认证方式为portal本地认证
authorization portal none
accounting portal none
# 配置Portal服务器
portal web-server portal # 配置portal web服务器
url http://192.168.56.254:2331/portal # 指定url(重定向默认开启)
portal local-web-server http # 指定Portal web Http访问配置
default-logon-page web.zip # 指定Portal web页面文件(默认名为defaultfile.zip)
tcp-port 2331 # 监听2331端口(端口号要和url一致,默认http使用80,https使用443)
# 使能Portal认证
interface Vlan-interface1 # 进入认证接口
portal enable method direct # 使能portal,模式为直连(二层),三层为layer3
portal domain portal # 指定从vlan1接入的用户portal认证默认域为portal
portal apply web-server portal # 指定portal web服务器为portal
可以清楚的分辨出,华三的配置比华为更加精细了,尤其是使能portal的部分,分为了对portal web服务器的配置,portal认证服务器的配置(本地认证没有体现)以及portal web页面的配置(外置portal不需要此配置)。
也就是说,除本地认证、远程认证的基本配置外,portal认证要在此基础上加上自己的一些配置,具体如下:
内置Portal服务器:配置portal web服务器、portal web页面、接口使能指定、其他基本配置
外置Portal服务器:配置portal web服务器、portal认证服务器、接口使能指定、其他基本配置
由于模拟器没有portal web页面,无法验证。
外置Portal服务器远程认证
# 配置radius模板
radius scheme portal
primary authentication 1.1.1.1 key simple 123 # 指定认证服务器地址,配置与该服务器连接的密钥
primary accounting 1.1.1.1 # 指定计费服务器地址
key accounting simple 123 # 指定此radius模板中与计费服务器连接的密钥
user-name-format without-domain # 使能传输到该服务器的用户名不需要指定域
# 配置认证域
domain portal
authentication portal radius-scheme portal # 配置认证使用radius
authorization portal none
accounting portal none
# 配置Portal服务器
portal server portal # 配置Portal服务器
ip 2.2.2.2 key simple 123 # 指定Portal服务器地址为2.2.2.2,密钥为123
port 50200 # 指定和Portal服务器使用UDP 50200端口交互(缺省50100)
portal web-server portal # 配置Portal web服务器
url http://1.1.1.1:2331/portal # 指定Portal web服务器的url(地址和端口要和真实服务器一致)
# 使能portal认证
interface Vlan-interface1
portal enable method direct # 接口使能portal认证
portal domain portal # 指定该接口Portal认证默认域为portal
portal bas-ip 192.168.56.254 # 指定bas-ip
portal apply web-server portal # 指定portal认证使用的web服务器配置
# 认证前域放通必要的服务器
portal free-rule 1 destination ip 3.3.3.3 24 udp 53 # 放通到目的地址3.3.3.3,目的端口53的访问
准入认证中有两个特殊的IP地址,分别是portal bas-ip
和radius nas-ip
,bas-ip
必须配置而nas-ip
不用。其具体区别如下:
bas-ip
:当使用外置Portal服务器时,bas-ip指定的地址为准入设备向portal服务器发送portal报文的源地址,缺省没有任何指定。所以在外置Portal服务器时,
bas-ip
必须配置且必须为本地存在并且与portal服务器间可达的地址nas-ip
:当使用远程认证时,nas-ip指定的地址为准入设备向radius服务器发送radius报文的源地址,但nas-ip
缺省为发送报文的接口的主IP地址。所以
nas-ip
可以不做配置,不像bas-ip
在外置Portal服务器场景中是必配的。
混合认证
混合认证即字面意思,常规准入认证有802.1x、mac、portal三种,为了部署一切需求特殊的组网,需要对认证进行混合。
三种认证方式排列组合共7种,由于1x适用于员工登入,portal适用于访客登入,两者使用的场景不同,没有混合的必要性,故只剩先1x后mac、先mac后1x、先portal后mac、先mac后portal四种混合认证方式
先1x后mac:用于网络中同时存在用户终端和哑终端需要进行1x认证的情景,华为称为MAC旁路认证。
先mac后1x:同样用于网络同时存在用户终端和哑终端的场景,华为称为MAC旁路认证优先MAC场景。
先mac后portal:用于网络中同时存在用户终端和哑终端需要portal认证接入的情景,也用于需要用户终端一次接入,快速认证的情景。华为华三均称为无感知portal认证。
先portal后mac:没有意义,即做不到无感知,又影响了mac的认证时间,还不如分开独立运行。
所以实际上混合认证只需要关注三个,即先802.1x后mac、先mac后1x和portal无感知认证(先mac后portal)
华为、华三混合认证对比
华为和华三混合认证的目的虽然完全一致,但其所使用的技术栈以及其外在表现完全不同。而思科和锐捷的设备我并没有过多的接触,暂时不了解其机制。
华为混合认证:华为混合认证被完全独立的封装为一个模块,通过一两条命令就可以完成配置,非常的便捷。
华三混合认证:华三将混合认证合并入了端口安全模块,将端口安全分为了控制MAC学习类和认证类两大部分,控制MAC学习类其目的和实现机制与华为一致,认证类的主要作用就是基于端口学习配置混合认证。
从我个人目前对技术的理解角度来看,在混合认证的实现上,华为的实现优于华三。华三基于端口安全的认证类混合认证实现的确功能丰富,但是过于繁琐。而华为看似实现简单功能有限,但是其能同样可以在有需要的时候配合端口安全进行一系列的限制。实际在绝大多数场景中,在混合认证的基础上限制终端接入数量并没有什么意义。
华为MAC旁路认证
无论是先MAC后802.1x,还是先802.1后MAC认证,华为都称为MAC旁路认证。
其实现的原则是:先进行一种认证方式,如果失败再进行后一种。
比如缺省的先802.1x后mac,就是先进行802.1x认证,如果1x认证超时,则根据报文进行MAC认证。
先1x后MAC的MAC旁路认证流程示例:
两者都可以实现802.1x网络中存在哑终端的认证接入场景。
本地MAC旁路认证配置
# 创建用于MAC认证和1x认证的用户
aaa
local-user atmujie password simple atmujie
local-user atmujie service-type 8021x
local-user 5489983b43b7 password simple 5489983B43B7
local-user 5489983b43b7 service-type 8021x
# 创建认证域
aaa
authentication-scheme 1xandmac
authentication-mode local
domain 1xandmac
authentication-scheme 1xandmac
# 使能MAC旁路认证
dot1x mac-bypass interface GigabitEthernet 0/0/1 # 系统视图使能g0/0/1 MAC旁路认证
使能MAC旁路认证的位置有两个,系统视图和接口视图;
默认使能先1x后mac的旁路认证,可以添加参数使能先mac后1x的旁路认证
# 系统视图使能MAC旁路认证
dot1x mac-bypass interface GigabitEthernet 0/0/1 # 先1x后mac
dot1x mac-bypass mac-auth-first interface GigabitEthernet 0/0/1 # 先mac后1x(ensp不支持)
# 接口视图使能MAC旁路认证
interface GigabitEthernet0/0/1
dot1x mac-bypass # 先1x后mac
interface GigabitEthernet0/0/1
dot1x mac-bypass mac-auth-first # 先mac后1x
在使用命令
undo dot1x mac-bypass
去使能接口的MAC旁路认证功能时,将会同时关闭接口的802.1X认证功能。 执行命令dot1x timer mac-bypass-delay 30
,配置MAC认证延迟定时器。缺省情况下,MAC旁路认证延迟时间为30秒。mac优先时不生效
华三也有MAC旁路认证,不过只支持先MAC后1x,只需要配置MAC和1x后在接口开启
mac-authentication parallel-with-dot1x
命令
华三认证类端口安全
端口安全本身的目的是通过限制MAC地址的学习与加表达到限制用户接入的目的,而准入的本质也是通过一些手段限制用户的加表与学习,比如ACL
小知识:
- 准入控制本身会占用设备的ACL资源,如果ACL资源不足,则准入控制不生效或者认证不成功
- 认证类端口安全和传统认证配置互斥
在此基础上,华三将准入和端口安全进行了融合,端口安全被划分为两类,传统端口安全称为 “控制MAC地址学习类”,用户实现混合认证的端口安全被称为”认证类”
为了区分两者之间的界限,华三给端口安全加上了预定义的”模式”,模式共12种,模式之间互斥,每个端只能配置一个模式
缺省情况下,端口处于noRestrictions模式(无限制模式),可供配置的模式有以下11种
11种模式具体的命名规律为前置值表示模式:
autolearn:自动学习模式
macAddress: MAC地址认证
userLogin:802.1x认证
如果前置值后携带
Secure
,表示基于MAC,如userLoginSecure
:基于MAC的802.1x认证如果携带
Ext
,表示允许多个用户认证成功,不带则为只允许一个用户,这个选项只有802.1x生效,mac地址认证默认为允许端口安全指定数量的用户认证成功。基于MAC的802.1x认证默认只允许一个用户认证通过携带
Else
,表示先进行Else之前的认证,失败后再进行Else之后的携带
Or
,表示先进行Or之后的认证,失败后再进行Or之前的携带
With
,表示基于With后的方式认证
参数 | 安全模式 | 说明 |
---|---|---|
autolearn | autoLearn | 端口可通过手工配置或自动学习MAC地址。手工配置或自动学习到的MAC地址被称为安全MAC,并被添加到安全MAC地址表中当端口下的安全MAC地址数超过端口安全允许的最大安全MAC地址数后,端口模式会自动转变为secure模式。之后,该端口停止添加新的安全MAC,只有源MAC地址为安全MAC地址、通过命令mac-address dynamic或mac-address static手工配置的MAC地址的报文,才能通过该端口 |
mac-authentication | macAddressWithRadius | 对接入用户采用MAC地址认证此模式下,端口允许多个用户接入 |
mac-else-userlogin-secure | macAddressElseUserLoginSecure | 端口同时处于macAddressWithRadius模式和userLoginSecure模式,但MAC地址认证优先级大于802.1X认证。允许端口下一个802.1X认证用户及多个MAC地址认证用户接入非802.1X报文直接进行MAC地址认证。802.1X报文先进行MAC地址认证,如果MAC地址认证失败再进行802.1X认证 |
mac-else-userlogin-secure-ext | macAddressElseUserLoginSecureExt | 与macAddressElseUserLoginSecure类似,但允许端口下有多个802.1X和MAC地址认证用户 |
secure | secure | 禁止端口学习MAC地址,只有源MAC地址为端口上的安全MAC地址、手工配置的MAC地址的报文,才能通过该端口 |
userlogin | userLogin | 对接入用户采用基于端口的802.1X认证此模式下,端口下的第一个802.1X用户认证成功后,其它用户无须认证就可接入 |
userlogin-secure | userLoginSecure | 对接入用户采用基于MAC地址的802.1X认证此模式下,端口最多只允许一个802.1X认证用户接入 |
userlogin-secure-ext | userLoginSecureExt | 对接入用户采用基于MAC的802.1X认证,且允许端口下有多个802.1X用户 |
userlogin-secure-or-mac | macAddressOrUserLoginSecure | 端口同时处于userLoginSecure模式和macAddressWithRadius模式,且允许一个802.1X认证用户及多个MAC地址认证用户接入此模式下,802.1X认证优先级大于MAC地址认证:报文首先触发802.1X认证,默认情况下,如果802.1X认证失败再进行MAC地址认证;若开启了端口的MAC地址认证和802.1X认证并行处理功能,则端口配置了802.1X单播触发功能的情况下,当端口收到源MAC地址未知的报文,会向该MAC地址单播发送EAP-Request帧来触发802.1X认证,但不等待802.1X认证处理完成,就同时进行MAC地址认证 |
userlogin-secure-or-mac-ext | macAddressOrUserLoginSecureExt | 与macAddressOrUserLoginSecure类似,但允许端口下有多个802.1X和MAC地址认证用户 |
userlogin-withoui | userLoginWithOUI | 与userLoginSecure模式类似,但端口上除了允许一个802.1X认证用户接入之外,还额外允许一个特殊用户接入,该用户报文的源MAC的OUI与设备上配置的OUI值相符此模式下,报文首先进行OUI匹配,OUI匹配失败的报文再进行802.1X认证,OUI匹配成功和802.1X认证成功的报文都允许通过端口 |
int g1/0/1
port-security port-mode [mode_name] # 配置端口模式
undo port-security port-mode # 恢复缺省安全模式
端口安全模式控制端口上进行何种的认证方式,除模式外,华三还定义了三种安全防护措施,用于处理上线成功或者失败后的动作
Need To Know特性:用于限制认证端口上出方向的报文转发,支持四种限制方式
ntkonly:仅允许目的MAC地址为已通过认证的MAC地址的单播报文通过。
ntk-withbroadcasts:允许广播地址报文、目的MAC地址为已通过认证的MAC地址的单播报文通过。
ntk-withmulticasts:允许广播地址报文、组播地址报文和目的MAC地址为已通过认证的MAC地址的单播报文通过。
ntkauto:仅当有用户上线后,才允许广播地址报文、组播地址报文和目的MAC地址为已通过认证的MAC地址的单播报文通过。
port-security ntk-mode ntkonly # [接口视图]配置NTK特性为ntkonly(缺省无配置)
入侵检测特性:用于配置设备对非法用户采取的安全措施,有三种方式
blockmac:表示将非法报文的源MAC地址加入阻塞MAC地址列表中,源MAC地址为阻塞MAC地址的报文将被丢弃。此MAC地址在被阻塞一段时间后恢复正常。阻塞时长可通过port-security timer blockmac命令配置。
disableport:表示将收到非法报文的端口永久关闭。
disableport-temporarily:表示将收到非法报文的端口暂时关闭一段时间。关闭时长可通过port-security timer disableport命令配置(全局视图,缺省20s)。
除此外,设备还支持开启“严格端口安全”,开启如果设备检测到其它端口的安全MAC地址表项中已经记录同一VLAN中的相同MAC地址,则认为该用户为非法用户(非严格端口安全指检测本端口)
开启严格端口安全后不能指定入侵检测特性为
blockmac
int g1/0/1 port-security intrusion-mode disableport-temporarily # 配置入侵检测特性(缺省不检测) port-security strict-intrusion-protection enable # 开启严格模式(缺省关闭)
发送Trap告警:联动SNMP发送告警信息
除缺省无限制模式和userLogin(只允许第一个用户802.1x接入)不支持任何安全防护措施外,其他模式均同时支持两种安全防护措施
华为入侵检测特性为:restrict丢弃并告警、protect只丢不告警、shutdown关闭接口 所以华为的重点是是否告警,关闭端口默认永久关闭,可以通过命令配置关闭的时间
error-down auto-recovery cause port-security interval [interval-value]
# [系统视图]设置接口自动恢复为Up的延时时间
restart # [接口视图]重启接口
华三关注的重点是具体的动作,不关注日志,其日志是缺省全部关闭的,可以通过命令打开 也可以联合snmp上送告警
port-security access-user log enable # [系统视图]开启端口安全日志
控制MAC地址学习类
控制MAC地址学习类端口安全和华为的定义基本一致,不过对MAC地址表的处理方式有所不同,这里以华三的理论说明
主要涉及两种认证模式:
autoLearn:自动学习模式,端口不会将学习到的MAC地址加入动态MAC地址表,而是加入安全MAC地址表,经过该端口的报文也完全按照安全MAC地址表转发
secure:安全模式,当端口下的MAC地址数超过端口安全允许学习的最大限制,端口模式自动切换为secure模式,此模式下禁止MAC学习(可以直接配置)
安全MAC表中的安全MAC地址根据加表方式的不同分为三种,和华为一致
static:静态;通过手动添加的表项,安全MAC地址保存在配置文件中,重启后不丢失,不会老化
port-security mac-address security [mac-address] vlan [vlan-id] # [接口视图]添加静态mac
sticky mac:粘滞MAC地址;可以手动配置或使端口自动学习,可以老化,但重启后不丢失
port-security mac-address security sticky [mac-address] vlan [vlan-id] # [接口视图]手动添加粘滞mac
dynamic:动态MAC地址;开启后由sticky mac转换而来,可以老化,同时重启会丢失
port-security mac-address dynamic # [接口视图]将粘滞mac转换为动态mac
以上配置均支持全局视图和接口视图两个位置
华三的老化时间同样有两种,和华为实现一致只是名称不同
定时老化(绝对老化):设置的定时器归0立即老化
无流量老化(相对老化):端口有流量通过则立即重置定时器,除非在整个定时器内都没有流量通过才会老化
port-security timer autolearn aging [second] [time-value] # 配置安全MAC地址的老化时间
# 老化时间缺省以分钟为单位,指定second后以秒为单位,缺省不老化
int g1/0/1
port-security mac-address aging-type inactivity # 配置老化方式为无流量老化(相对老化)
# 老化方式缺省为绝对老化
控制类端口安全配置举例
port-security enable # 全局启动端口安全
port-security timer disableport 30 # 设置端口关闭时间为30s
port-security timer autolearn aging 10 # 设置老化时间为10分钟
interface GigabitEthernet1/0/1
port-security intrusion-mode disableport-temporarily # 设置入侵检测动作为down一段时间端口
port-security ntk-mode ntkonly # 设置ntk特征为ntkonly(只有认证通过的可以发送报文)
port-security mac-address dynamic # 设置安全MAC地址为动态MAC
port-security max-mac-count 2 # 设置端口最大学习数为2
port-security mac-address aging-type inactivity # 设置为相对老化
port-security port-mode autolearn # 设置为自动学习模式
验证配置
display port-security interface g1/0/1 # 查看端口安全配置状态
如果没有配置安全MAC为动态MAC,则mac地址会以配置的形式写入接口中
认证类端口安全
除autoLearn和secure外,其他所有的模式都是为了认证类端口安全,根据认证类型,主要分为只进行802.1x认证、只进行mac认证和802.1x+mac的混合认证三种。
具体参考文档:https://www.h3c.com/cn/d_202106/1413150_30005_0.htm#_Ref454092463
其原理和传统的认证方式一致,不过是多了几点端口安全的特性:
接入用户数受到端口安全的严格限制,在只允许一个用户认证成功的模式中,以模式限制为主,在允许多个用户认证成功的模式中,以端口安全最大MAC学习数为主(准入的本质是限制MAC学习)
接口无需使能具体的认证方式,以端口安全的模式为主
涉及混合认证的模式共4种:
macAddressOrUserLoginSecure
端口同时处于userLoginSecure模式和macAddressWithRadius模式,且允许一个802.1X认证用户及多个MAC地址认证用户接入。(用户接入数量不能大于mac限制数)
此模式下,802.1X认证优先级大于MAC地址认证:报文首先触发802.1X认证,如果802.1X认证失败再进行MAC地址认证;
若开启了端口的MAC地址认证和802.1X认证并行处理功能,则端口配置了802.1X单播触发功能的情况下,当端口收到源MAC地址未知的报文,会向该MAC地址单播发送EAP-Request帧来触发802.1X认证,但不等待802.1X认证处理完成,就同时进行MAC地址认证。
macAddressOrUserLoginSecureExt
与macAddressOrUserLoginSecure类似,但允许端口下有多个802.1X和MAC地址认证用户。
macAddressElseUserLoginSecure
端口同时处于macAddressWithRadius模式和userLoginSecure模式,但MAC地址认证优先级大于802.1X认证。允许端口下一个802.1X认证用户及多个MAC地址认证用户接入。
非802.1X报文直接进行MAC地址认证。802.1X报文先进行MAC地址认证,如果MAC地址认证失败再进行802.1X认证。
macAddressElseUserLoginSecureExt
与macAddressElseUserLoginSecure类似,但允许端口下有多个802.1X和MAC地址认证用户。
认证类端口安全配置举例
组网topo:
实验目的:
topo中终端均在192.168.1.0/24网段,现要求同一时间只能有两个终端访问192.168.1.4
PC2和PC3由于模拟器原因,使用MAC认证接入,Host桥接物理机使用iNode进行802.1x认证接入,MAC和1x均为本地认证
出于对认证速度的考虑,使用mac认证和1x认证同时进行,所以使用macAddressOrUserLoginSecureExt模式
实验配置:
# NAC
# 创建用于MAC认证和802.1x认证的用户
local-user 58-51-27-bf-02-06 class network
password simple 58-51-27-bf-02-06
service-type lan-access
local-user 58-51-2f-df-03-06 class network
password simple 58-51-2f-df-03-06
service-type lan-access
local-user atmujie class network
password simple atmujie
service-type lan-access
# 创建认证域
domain 1x_and_mac
authentication lan-access local
authorization lan-access none
accounting lan-access none
# 开启混合认证
port-security enable # 开启端口安全
mac-authentication domain 1x_and_mac # 指定MAC认证使用1x_and_mac认证域
mac-authentication user-name-format mac-address with-hyphen lowercase
## 设置MAC用户密码格式带分隔符且为小写
interface GigabitEthernet1/0/1
dot1x mandatory-domain 1x_and_mac # 指定802.1x认证域为1x_and_mac
port-security ntk-mode ntkonly # 指定ntk模式为ntkonly
port-security max-mac-count 2 # 指定最大接入数为2
port-security port-mode userlogin-secure-or-mac-ext # 指定端口模式为先1x后mac
整体来说,除了对802.1x和mac认证的使能改为了使能端口安全和设置模式,其他的功能1x和mac独立配置
访问测试:
dis mac-authentication interface GigabitEthernet 1/0/1 # 查看G1/0/1接口MAC认证状态
802.1x认证:
dis dot1x interface GigabitEthernet 1/0/1 # 查看802.1x认证用户
dis port-security interface GigabitEthernet 1/0/1 # 查看端口安全状态
只有自动学习模式下,MAC地址才会以配置形式写入,混合认证下只会记录到对应的认证MAC表中
同样,在这个模式下,由于不加入安全MAC表,自然也不遵循端口安全的老化规则,终端老化的时间以具体的认证为准,但上线的终端数量受端口安全控制
如图,由于设置了最大上线数为2,当上线一个mac和一个1x时,剩余的mac终端无法上线.
1x终端下线,两台mac终端全部上线。
portal无感知认证
Portal无感知认证实际上就是先MAC后Portal认证
首次认证时先进行MAC认证,认证失败忽略MAC认证的结果跳转Portal视图进行Portal认证,Portal认证成功则以Portal的方式下发授权使其可以访问,同时由Portal服务器侧将终端的MAC信息传递到MAC认证服务器
后续再认证用户可以直接通过MAC认证无感知接入,无需再次Portal认证。
由于MAC认证和802.1x认证是二层认证,配置在二层接口,而portal认证是三层认证,配置在三层接口。所以NAC上同时存在MAC、802.1x认证和Portal认证时,必然是先MAC、802.1x后Portal
配置无感知认证对于NAC而言无需非常麻烦的步奏,只需要同时开启MAC和Portal,并且设置忽略MAC认证的结果即可
对于华三,有两种实现Portal无感知认证的方式,这两种方式的使用场景不同:
基于MAC绑定服务器的无感知认证
基于MAC认证的无感知认证
基于MAC认证的无感知认证只用于无线侧,基于MAC绑定服务器的无感知有线侧、无线侧都可以使用(基于MAC认证的无感知需要忽略MAC认证的结果,但有线侧无法实现)
基于MAC绑定服务器的无感知认证原理是在网络中添加一台MAC绑定服务器(MAC-trigger)
首次认证时由Portal先查询MAC-trigger服务器中是否绑定了该终端MAC,如果没有绑定,则重定向Portal页面进行Portal认证
再次认证时,由于MAC服务器已经绑定了MAC地址,终端直接认证通过
基于MAC认证的无感知认证的原理是NAC同时配置MAC认证和Protal认证,先MAC认证,如果MAC认证成功直接上线,如果MAC认证失败则忽略认证结果进行Portal认证。
MAC和Portal认证的记录和交换由IMC完成,NAC不负责
配置基于MAC绑定服务器的无感知认证
由于Portal无感知认证模拟器无法实现,这里只贴配置不做topo
假设portalweb服务器为1.1.1.1,portal服务器(radius)为2.2.2.2,mac-trggier服务器为3.3.3.3
准入端口为vlan 11,则无感知Portal认证配置如下:
# 配置radius方案
radius scheme portal_mac
primary authentication 2.2.2.2 key simple 123 # 配置认证服务器地址为2.2.2.2,密钥123
user-name-format without-domain # 设置认证时不携带域名
nas-ip 192.168.1.1 # 设置nas-ip为192.168.1.1
radius session-control enable # 开启radius会话控制功能
# 配置认证域
domain portal_mac
authentication portal radius-scheme portal_mac
domain default enable portal_mac # 配置为全局默认域
# 配置Portal认证
portal web-server portal_mac # 配置portalweb服务器
url http://1.1.1.1:8080/portal
portal server portal_mac # 配置portal服务器
ip 2.2.2.2 key simple 123
portal mac-trigger-server portal_mac # 配置portal认证的mac-trigger服务器
ip 3.3.3.3 key simple 123
free-traffic threshold 1024000 # 配置接入用户可以使用的免认证流量
# 接口使能无感知Portal认证
interface Vlan-interface11
ip address 192.168.1.1 255.255.255.0
portal enable method direct # 使能portal直接认证
portal domain portal_mac # 指定认证域
portal bas-ip 192.168.1.1 # 指定bas-ip
portal apply web-server portal_mac # 应用portal-web服务器
portal apply mac-trigger-server portal_mac # 应用mac-trigger服务器
radius session-control enable :
H3C iMC RADIUS服务器使用session control报文向设备发送授权信息的动态修改请求以及断开连接请求。开启RADIUS session control功能后,设备会打开知名UDP端口1812来监听并接收RADIUS服务器发送的session control报文。
该功能仅能和H3C iMC的RADIUS服务器配合使用。
portal enable method direct :
- 这里的直接认证是指准入设备NAC要和被认证终端二层直连,三层portal无法根据MAC认证,自然也不存在先MAC后Portal的无感知认证
配置基于MAC认证的无感知认证(目前只用于无线网络无感知)
# 配置radius方案
radius scheme portal_mac
primary authentication 2.2.2.2 key simple 123 # 配置认证服务器地址为2.2.2.2,密钥123
user-name-format without-domain # 设置认证时不携带域名
nas-ip 192.168.1.1 # 设置nas-ip为192.168.1.1
# 配置认证域
domain portal_mac
authentication portal radius-scheme portal_mac
domain default enable portal_mac # 配置为全局默认域
# 配置Portal认证
portal web-server portal_mac # 配置portalweb服务器
url http://1.1.1.1:8080/portal
server-type cmcc # 配置portal认证服务器类型(缺省imc)
url-parameter ssid ssid # 指定认证时携带的url参数
url-parameter wlanuserip source-address # 指定用户源ip参数,wlanuserip是参数名,可以自定义
portal server portal_mac # 配置portal服务器
ip 2.2.2.2 key simple 123
portal free-rule 1 destination ip 1.1.1.1 32 # 配置免认证规则放行到portal-web服务器的访问
portal roaming enable # 开启portal无线漫游(缺省开启)
# 配置MAC认证
mac-authentication user-name-format mac-address with-hyphen lowercase # 设置发送的用户名格式
mac-authentication authentication-method chap # 指定MAC认证的交互协议
# 使能Portal无感知
wlan service-template portal_mac
ssid portal # 配置SSID
client-security authentication-mode mac # 设置客户端认证模式为mac认证
client-security ignore-authentication # 设置忽略mac认证的结果
mac-authentication domain portal_mac # 指定MAC认证域
# 根据配置案例,无线MAC认证无需全局使能MAC,只需在服务模板开启。有线才需要全局使能
portal enable method direct # 开启portal认证,直连模式
portal domain portal_mac # 指定portal认证域
portal bas-ip 192.168.1.1 # 指定bas-ip地址
portal apply web-server portal_mac # 应用portal-web服务器
service-template enable # 开启wlan模板
# 后续只需要将该wlan服务模板在radio下使用即可
策略联动
对于有线网络,准入认证可以由接入交换机直接控制,而对于无线网络,由于涉及到AC和CAPWAP隧道,准入放在接入交换机是不合理的,但AP又由AC管理。
所以AC和AP的场景中,认证都是在AC上进行,AP的流量通过CAPWAP隧道上送AC进行认证,如果认证通过,才允许用户接入网络。
基于这个原理,华为将CAPWAP隧道移植到了有线网络交换机之间,通过在接入交换机和上联的汇聚准入设备之间建立CAPWAP隧道,达到准入设备上移,但是认证效果不变的成果。
这种允许认证中准入设备上移但是认证效果不变的技术,称为策略联动
华三没有策略联动功能,做不到认证效果不变的认证上移,只能做到放通接入层二层转发的准入上移
可以称为认证控制效果减弱的准入上移
策略联动的好处是在大型组网中,无需在全部接入设备上配置准入策略,只要把控制点上移到汇聚或者核心,就可以很方便的管理维护全部的接入侧准入设备
由于华为ENSP模拟器只支持传统模式的NAC配置,而策略联动需要在统一模式下配置(现在的华为设备默认统一模式)
所以这里无法实验验证,但大致的原理同无线的NAC认证,接入设备相当于AP,而控制设备相当于AC