标题：cbac
简介
Context-Based Access Control（CBAC）基于上下文的访问控制协议通过检查通过防火墙的流量来发现&管理TCP和UDP的会话状态信息。这些状态信息被用来在防火墙访问列表创建临时通道。通过在流量向上配置ipinspect列表，允许为受允许会话放回流量和附加数据连接，打开这些通路。受允许会话是指来源于受保护的内部网络会话。
工作原理
CBAC指定了哪些协议及接口、接口方向（流入和流出）需要被检查，同指定了检查的起始。CBAC只对指定的协议进行检查。对于这些协议，只要数据包经过已配置检查策略的接口，那么无论它们从哪个方向通过防火墙都将被检查。进入防火墙的数据包只会在其第一次通过接口的入站ACL时才会被检察。如果数据包被ACL拒绝，数据包会被简单的丢掉并且不会被CBAC检查。
CBAC的配置
在Cisco路由器上创建ACL(访问控制列表)是管理员常用的数据过滤和网络安全防护措施，但是ACL的局限性是非常明显的，因为它只能检测到网络层和传输层的数据信息，而对于封装在IP包中的恶意信息它是无能为力的。因此，ACL并不可靠，需要CBAC(基于上下文的访问控制)的配合，这样网络安全性将会极大提升。一、CBAC简述CBAC(context-based access control)即基于上下文的访问控制，它不用于ACL(访问控制列表)并不能用来过滤每一种TCP/IP协议，但它对于运行TCP、UDP应用或某些多媒体应用(如Microsoft的NetShow或Real Audio)的网络来说是一个较好的安全解决方案。除此之外，CBAC在流量过滤、流量检查、警告和审计蛛丝马迹、入侵检测等方面表现卓越。在大多数情况下，我们只需在单个接口的一个方向上配置CBAC，即可实现只允许属于现有会话的数据流进入内部网络。可以说，ACL与CBAC是互补的，它们的组合可实现网络安全的最大化。二、CBAC的合理配置CBAC配置前的评估
在进行CBAC配置之前需要对网络的安全标准、应用需求等方面进行评估然后根据需要进行相应的配置。通常情况下，用户可以在一个或多个接口的2个方向上配置CBAC。如果防火墙两端的网络都需要受保护的话，如在Extranet或Intranet的配置中，就可以在2个方向上配置CBAC。若防火墙被放置在2个合作伙伴公司网络的中间，则可能想要为某些应用在一个方向上限制数据流，并为其它应用在反方向上限制数据流。
特别要注意的是，CBAC只能用于IP数据流。只有TCP和UDP数据包能被检查，其他IP数据流
(如ICMP)不能被CBAC检查，只能采用基本的访问控制列表对其进行过滤。在不作应用层协议审查时，像自反访问控制列表一样，CBAc可以过滤所有的TCP和UDP会话。但CBAC也可以被配置来有效地处理多信道(多端口)应用层协议：cu-SeeMe(仅对whitePine版本)、FTP、H.323(如NetMeeting和ProShare)、HTTP(Java拦阻)、Java、MicrosftNetshow、UNIX的r系列命令(如rlogin、rexec和rsh);RealAudio、RPC(SunRPc，非DCERPC)MircosoftRPC、SMTP、SQL.Net、StreamWorks、TFTP、VDOLive。
选择配置接口
为了恰当地配置CBAc，首先必须确定在哪个接口上配置CBAC。下面描述了内部口和外部接口间的不同之处。
配置数据流过滤的第一步是决定是否在防火墙的一个内部接口或外部接口上配置CBAC。在该环境下，所谓“内部”是指会话必须主动发起以让其数据流被允许通过防火墙的一侧;“外部”是指会话不能主动发起的一侧(从外部发起的会话被禁止)。如果要在2个方向上配置CBAc，应该先在一个方向上使用适当的“Intemal”和“Extemal”接口指示配置CBAC。在另一个方向上配置CBAC时，则将该接口指示换成另一个。
CBAC常被用于2种基本的网络拓扑结构之一。确定哪种拓扑结构与用户自己的最吻合，可以帮助用户决定是否应在一个内部接口或是在一个外部接口上配置CBAC。
图l给出了第1种网络拓扑结构。在该简单的拓扑结构中，CBAC被配置在外部接口S0上。这可以防止指定的协议数据流进入该防火墙路由器和内部网络，除非这些数据是由内部网络所发起会话的一部分。
  图1图2给出了第2种网络拓扑结构。在该拓扑结构中，CBAC被配置在内部接口E0上，允许外部数据流访问DMZ(连接在接口E1上的停火区)中的服务(如DNS服务)，同时防止指定的协议数据流如内部网络，除非这些数据流是由内部网络所发起的会话的一部分。这两种拓扑结构之间的关键不同点是：第1种拓扑结构不允许外部数据流不经过CBAC过滤器就进入了路由器;第2中拓扑结构允许外部数据流入路由器，让他们能不经过CBAC过滤器就到达位于DMZ区中的公共服务器。
  图2根据这2个拓扑结构样例，可以决定网络是否应在一个内部接口或是在一个外部接口上配置CBAC。如果防火墙只有2条连接，一条是到内部网络，另外一条是到外部网络，那么只能使用入方向的访问控制列表就可以了，因为数据包在有机会影响路由器之前已经被过滤了。
防火墙配置
当用户用Cisco IOS配置任何IP防火墙时可参照下面给出的一些基本的配置指南。
访问控制列表。尽管一个拒绝所以不属于受CBAC所审查的连接一部分的IP数据流的访问控制列表看起来比较安全，但它对路由器的正确运行不太现实。路由器期望能够看到来自网络中其他路由器的ICMP数据流。ICMP数据流不能被CBAC所审查，所以应在防护控制列表中设置特定的条目以允许返回的ICMP数据流。如在受保护网络中的一个用户要用“Ping”命令来获取位于不受保护网络中的一台主机的状态，如果在访问控制列表中没有允许“echoreply”消息的条目，则在受保护网络中的这位用户就得不到其“Ping”命令的相应。下面所示的配置中含有允许关键ICMP消息的访问控制列表条目：
Router(config)#access -list 101 permit icmp any any echo-reply
Router(config)#access -list 101 permit icmp any any time-execeeded
Router(config)#access -list 101 permit icmp any any packet-too-big
Router(config)#access -list 101 permit icmp any any traceroute
Router(config)#access -list 101 permit icmp any any UnreaChable
访问控制列表中添加一个拒绝所有冒用受保护网络中地址的外来数据流的条目。这被称作防欺骗保护，因为它可以防止来自不受保护网络的数据流假冒保护网络中某个设备的身份。
访问控制列表增加一个拒绝源地址为广播地址(255.255.255.255)数据包的条目。该条目可以防止广播攻击。
防火墙的访问特权设置口令时，最好是用“enablesecret”命令而不是“enablepassword”命令。因为“enableesecret”命令使用了一种更强的加密算法。
调制解调器)之前，应认真考虑访问控制事宜。要知道，在重启防火墙路由器时通过在控制台端口上“break”键就可以获得对它的完全控制权，即使配置了访问控制也无法阻止。
虚拟终端端口应用访问控制列表和口令保护。用“access -class”命令指定的访问可以通过telnet登录到路由器上。
防火墙或网络。对于被启用的本地服务，，可以通过将它们配置为只与特定的对等体进行通信来防止被滥用，并通过在特定的接口上配置访问控制列表来拒绝对这些服务的访问数据包来保护自己。
访问控制列表来防止防火墙被用作中继跳板。
防火墙和所有其他路由器上关闭对任何可应用协议的定向广播功能。对于IP协议，可使用no中“directed -broadcast”命令。在极少数情况下，有些IP网络确实需要定向广播功能，在这种情况下就不能关闭定向广播功能，定向广播可以被滥用来放大拒绝服务攻击的力量，因为每个Dos数据包都会被广播到同一子网的所有主机。另外，有些主机在处理广播时还存在有其他固有的安全风险。
防火墙防在一个安全的区域内。
如果在外部接口上有一个对外方向的IP访问控制列表，则该访问控制列表就可以是一个标准的或扩展的访问控制列表。该外出方向的访问控制列表应该允许想让CBAC检查的数据流通过。如果数据流不被允许，它就不能被CBAC检查，就会被简单地丢弃。
在外部接口上的入方向访问控制列表必须是一个扩展的访问控制类表。该入方访问控制列表应该拒绝想要让CBAC检查的数据流。CBAC将在该人方向控制列表中产生适当的临时通口，只允许返回数据进入，这些数据流属于一个有效的已存在会话的一部分。
配置内部接口的技巧
如果在内部接口上有一个入方向的IP访问控制列表，或在外部接口上有一个对外出方向的IP访问控制列表，则这些访问控制列表可以是标准的或者扩展的访问控制类表。这些访问控制类表应该允许想让CBAC审查的数据流通过。如果数据流不被允许，它就不能被CBAC审查，就会被简单地丢弃掉。
在内部接口上的外出方向的IP访问控制列表和在外部接口上的入方向的访问控制列表必须是扩展的访问控制列表。这些访问控制列表应该拒绝想要让CBAC审查的数据流通过CBAC将在这些访问控制列表中产生适当的临时通道，只允许那些属于一个有效的、已存在会话的一部分的返回数据流进入。不需要在内部接口的外出方向和外部接口的入口向上都配置一个扩展访问控制列表，但至少需要配置一个，以限制数据流通过防火墙流进内部受保护的网络。四、总结只有连接的控制信道会被CBAC审查和监视，数据信道不会被审查。如在FTP会话中，控制信道(通常是TCP端口21)和数据信道(通常是TCP端口20)的状态变化都会被监视，但只有控制信道才会被审查。
CBAC审查识别控制信道中与应用具体相关的命令，并检测和防止某些应用层攻击，如SYN-flooding(SYN包风暴攻击)等。当网络攻击者想一台服务器发起了SYN包风暴攻击。大量的半开连接会淹没服务器，导致它拒绝正常的请求提供服务。无法访问网络设备的网络攻击被称为服务攻击(DoS)。
CBAC审查还在其它方面有助于防止拒绝服务攻击。CBAC检查TCP连接中的包序列号码是否在所期望的范围之内，并丢弃所有可疑的数据包。同时，也可以配置CBAC来丢弃半开连接，这需要占用防火墙的处理资源和内存资源来进行维护。另外，CBAC也可以检测不寻常的新连接建立速率，并发出告警消息。