📜  基于上下文的访问控制 (CBAC)

📅  最后修改于: 2022-05-13 01:57:02.879000             🧑  作者: Mango

基于上下文的访问控制 (CBAC)

最近,访问列表(ACL)被用于包过滤和保护。 ACL 按照管理员提供的规则顺序运行。规则包括各种允许和拒绝条件。但 ACL 的缺点是它仅将流量过滤到传输层。

因此,对于低预算的防火墙功能,使用具有适当 IOS 版本的 Cisco 路由器。我们可以通过 2 种方法来实现基于 IOS 的防火墙:

  1. 基于上下文的访问控制 (CBAC) 功能
  2. 基于区域的防火墙

基于上下文访问的控制 (CBAC) –
ACL 为传输层提供流量过滤和保护,而另一方面,CBAC 向应用层提供相同的函数。借助 CBAC 配置,路由器可以充当防火墙。

在职的 -
CBAC 就像一个自反访问列表一样工作,但除此之外,它还维护一个状态表,其中会话在内存中维护。当网络中的设备发起会话时,会在状态表中放入一个动态条目,并允许出站(出站)流量通过路由器(基于 IoS 的防火墙)。借助此条目,出站流量的回复可以通过路由器(基于 IoS 的防火墙),因为它具有网络内发起的流量的条目。这是通过基于 IoS 的防火墙 CBAC 机制实现的,因为它在访问列表(应用于入站流量)上打开临时漏洞以允许回复数据包。

特点——CBAC的一些特点是:

  1. 检查流量 - CBAC 维护 TCP / UDP 信息,这是对数据包有效负载执行更深入检查所需的信息。
  2. 过滤流量 – CBAC 过滤源自受信任网络并通过防火墙流出的流量,并且仅当它在状态表中有条目时才允许回复。它具有智能过滤流量到第 7 层的能力。
  3. 检测入侵——CBAC检查连接建立的速率,它可以检测Dos攻击、TCP syn攻击等攻击。在此基础上,CBAC机制可以导致连接重新建立或丢弃恶意数据包。
  4. 生成警报和审计 -运行 CBAC 机制的路由器记录有关已建立连接、发送的字节数、源和目标 IP 地址的信息。

配置 -

有 3 个路由器,即 router1(ip 地址 - fa0/0 上的 10.1.1.1/24)、router2(fa0/0 上的 ip address-10.1.1.2/24 和 fa0/1 上的 10.1.2.1/24)和 router3(ip地址——10.1.2.2/24)。首先,我们将通过 EIGRP 向所有路由器提供路由,以便路由器能够相互 ping 通。
之后,我们将 router3 作为 ssh 服务器,并且 router2(CBAC 将在其上运行)将仅在 router2 检查流量时才允许流量。

首先在 router1 上配置 EIGRP:

router1(config)#router eigrp 100
router1(config-router)#network 10.1.1.0
router1(config-router)#no auto-summary 

现在,在 router2 上配置 EIGRP 以访问其他网络:

router2(config)#router eigrp 100
router2(config-router)#network 10.1.1.0
router2(config-router)#network 10.1.2.0
router2(config-router)#no auto-summary

现在,在 router3 上配置 eigrp:

router3(config)#router eigrp 100
router3(config-router)#network 10.1.2.0
router3(config-router)#no auto-summary

现在,我们将在 router3 上配置 ssh:

router3(config)#ip domain name GeeksforGeeks.com
router3(config)#username saurabh password cisco
router3(config)#line vty 0 4
router3(config-line)#transport input ssh
router3(config-line)#login local 
router3(config)#crypto key generate rsa label Cisco.com modulus 1024

现在,我们将在 router2 上创建一个访问列表,通过该列表我们将拒绝除 EIGRP 之外的所有流量,因为 EIGRP 将保持对所有路由器的可达性。

router2(config)#ip Access-list extended 100
router2(config-ext-nacl)#permit eigrp any any 
router2(config-ext-nacl)#deny ip any any

现在,将其应用于界面:

router2(config)#int fa0/1
router2(config-if)#ip access-group 100 in

现在,router1 将无法 ssh router3,因为我们应用了 access-list,它将只接受 Eigrp 数据包并拒绝所有其他数据包。
现在,在 router2 上配置 CBAC 以检查 ssh 流量(仅允许运行 CBAC 的 IoS 路由器检查的流量。

router2(config)#!cbac
router2(config)#ip inspect name Cisco ssh

第一个命令 (!cbac) 将启用 cbac 功能,而第二个命令将检查 ssh 流量。
现在,对接口应用检查:

router2(config)#int fa0/1
router2(config-if)#ip inspect cisco out

现在,router1 将能够对 router3 进行 ssh,因为当 ssh 数据包离开出站 (fa0/1) 接口时(如我们配置的那样),它首先由 router2 检查。
这可以通过以下方式验证:

router2#show ip inspect all

笔记 -
在这里,Access-list 已应用入站并且 CBAC 已应用出去,因为我们只希望该流量来自由内部网络 (10.1.1.1) 发起的网络外部。应用于出站接口的 CBAC(进入 fa0/1)会在应用于接口的入站访问列表上创建临时空洞,以允许通过 ACL 返回数据包。

限制——cbac 机制的一些限制是:

  1. CBAC 并不容易理解,即它需要我们想要执行的协议和操作的详细知识。
  2. CBAC 机制无法检查源自路由器(我们已在其上配置了 CBAC)本身的流量。
  3. 没有状态表故障转移支持。如果一个路由器发生故障,那么另一个冗余路由器可以用作 CBAC 防火墙,但状态表不会被复制,因此必须重建状态表,从而重建一些连接。
  4. 它不检查 IPsec 等加密数据包。