基于上下文的访问控制CBAC
最近,访问控制列表(ACL)被用于数据包过滤和保护。ACL通过管理员规则列表进行操作。这些规则包括许多允许和拒绝的要求。ACL的唯一缺点是它只能过滤传输层的流量。
因此,使用具有适当IOS版本的Cisco路由器可以实现低成本的防火墙功能。有两种实现IOS基础防火墙的方法:
- 基于上下文的访问控制CBAC的特点。
- 基于区域的防火墙。
基于上下文的访问控制CBAC-
与ACL在传输层保护和过滤流量的方式相反,CBAC将该保护扩展到应用层。路由器可以通过CBAC配置充当防火墙。
工作原理-
虽然CBAC只能作为一种反射访问控制列表(Access-list)进行操作,但它还保留一个状态表,其中会将会话存储在内存中。当网络中的设备启动会话时(基于IoS的防火墙),状态表中会添加一个动态条目,并允许出站(即出去)流量通过路由器。由于路由器(基于IoS的防火墙)对于从网络内开始的流量有一个条目,它可以借助这个条目传递出站流量的回复。IoS基于防火墙的CBAC机制通过临时打开访问列表(应用于入站流量),以允许回复数据包通过来实现这一点。
访问控制列表(ACL)是一组用于规范网络流量和减少网络攻击的规则。使用针对网络的入站或出站流量指定的一组规则,ACL用于过滤流量。
特点-
CBAC具有一些特点,包括:
- 检查流量: CBAC跟踪TCP/UDP信息,以便进行更彻底的数据包有效载荷检查。
- 流量过滤: CBAC只允许有状态表条目的回复通过。它过滤起源于可信网络并离开防火墙的流量。它能够进行第7层智能流量过滤。
- 入侵检测: CBAC通过检查连接建立的速度来识别诸如拒绝服务攻击和TCP SYN攻击之类的攻击。基于此,CBAC机制能够根据恶意数据包要么丢弃连接要么重新建立连接。
- 创建警报和审计: 路由器的CBAC机制记录与连接相关的数据,包括建立的连接、发送的数据量以及源IP地址和目的IP地址。
配置-
有三个路由器:router1(fa0/0上的IP为10.1.1.1/24),router2(fa0/0上的IP为10.1.1.2/24,fa0/1上的IP为10.1.2.1/24)和router3(IP为10.1.2.2/24)。为了实现路由器之间的ping通,我们将首先通过EIGRP为每个路由器分配路由。
随后,我们将在router 3上配置SSH服务器,并且router 2(其中运行CBAC)在经过router 2审查后才允许流量通过。
首先在router 1上进行EIGRP的设置:
router1(config)#router eigrp 100
router1(config-router)#network 10.1.1.0
router1(config-router)#no auto-summary
接下来,在路由器2上设置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
现在我们将在路由器3上设置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
在路由器2上,我们现在将创建一个访问控制列表(Access-list),除了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
现在我们已经应用了访问控制列表,它只接受Eigrp数据包并拒绝所有其他数据包,router1将无法再通过ssh访问router3。
现在,在router 2上设置CBAC以检查ssh流量(只有经过IoS路由器运行CBAC的流量将被允许)。
router2(config)#!cbac
router2(config)#ip inspect name Cisco ssh
虽然第二个命令将检查ssh流量,但第一个命令(!cbac)将启用cbac功能。
现在,通过检查来检查接口
router2(config)#int fa0/1
router2(config-if)#ip inspect cisco out
现在,在离开出站(fa0/1)接口之前,路由器2已经检查了ssh数据包,路由器1将能够通过ssh连接路由器3(正如我们所配置的)。
这得到了证实:
router2#show ip inspect all
注意:因为我们只希望来自内部网络启动的外部网络流量通过,所以已经在入站应用了访问控制列表(ACL),并在外部应用了基于内容的访问控制(CBAC)(10.1.1.1)。当应用基于内容的访问控制(CBAC)向外进行应用时,为了暂时允许返回数据包通过接口(fa0/1)上应用的访问控制列表(ACL),需要在ACL上创建临时开放口。
限制 –
一些基于内容的访问控制(CBAC)机制的缺点包括:
- 因为它需要深入了解我们想要执行的协议和操作,所以基于内容的访问控制(CBAC)并不容易理解。
- CBAC 机制无法检查从已配置 CBAC 的路由器(即原始流量的来源)发出的流量。
- 不支持有状态表故障转移。作为基于内容的防火墙,如果一个路由器出现故障,可以使用另一个冗余路由器,但由于状态表无法复制,必须重新构建状态表,这要求重新建立一些连接。
- 与IPsec不同,它不能检查加密的数据包。