Cisco IOS防火墙特性集作为Cisco IOS软件的一个选项,提供了一个先进的安全解决方案,这种集成化路由器安全解决方案是Cisco Systems安全解决方案系统中的一个部件。
Cisco IOS安全服务包括一系列特性,能使管理人员将一台Cisco路由器配置成为一个防火墙,而Cisco IOS防火墙特性集则可以为现有的Cisco IOS安全解决方案增加更大的深度和灵活性。表1为Cisco IOS防火墙特性集相关新特性的概述。
CBAC会追踪它监视的连接,创建包括每个连接信息的状态表。这个表和PIX使用的状态表很相似。CBAC监视TCP,UDP,和ICMP的连接并记录到状态表,并为返回的流量创建动态ACL条目,这点和RACL很相似。但是CBAC能够检测应用层的流量,这点是RACL不能实现的。CBAC使用状态表和动态ACL条目来检测和防止某些DoS攻击,尤其是TCP洪水攻击。
1.用户发起一个到外部的连接,如Telnet。如果配置了进站ACL,则在CBAC检测之前先处理进站ACL。接着根据CBAC的检测规则,Cisco IOS来检测或忽略这些连接。如果没有要检测的连接,Cisco IOS允许数据包的通过,否则跳入步骤2。
2.Cisco IOS比较当前连接和状态表中的条目:如果条目不存在,则添加一条到状态表中,否则,Cisco IOS重置这个连接的空闲计时器(idle timer)
3.如果这是一个新条目,则Cisco IOS添加一个动态ACL条目到外部接口的进站方向,允许返回到内部网络的流量。这个动态ACL不会保存到NVRAM。
在Cisco IOS 12.3(4)T后,出现了一个新的特性叫做:Firewall ACL Bypass (FAB),使用这个特性后,Cisco IOS不会为允许返回的流量创建动态ACL条目,而是直接查看状态表看哪些流量允许返回内部网络,这是通过快速交换进程,如CEF来实现的,从而加快了处理返回的流量的速度。如果在状态表中没有发现符合的条目,则继续进行进站ACL的检查过程。在12.3(4)T之后,FAB特性会自动的启用并且不能被关闭。
注意:CBAC能够配置要检测哪个方向的流量,大多数情况下,你可以在边界路由器上配置CBAC来允许返回到内部网络的流量。然而,你也能够配置CBAC来同时检测两个方向的流量,来同时保护两边的网络。
像RACL一样,CBAC会检测TCP数据包包头的控制位,如果看到FIN位,则Cisco IOS会等待5秒钟来关闭连接,并且删除动态ACL条目(在FAB特性引入之前),并从状态表中删除条目。如果一个TCP的会话空闲超过1个小时,则Cisco IOS会移除这个条目。此外和RACL不同的是CBAC会要求TCP连接在看到第一个SYN字段的30秒钟之内(用户配置)建立。如果在这个时间断里没有建立,Cisco IOS会从状态表中出这个条目和ACL。
此外,CBAC还会检查TCP连接的序列号来保证在一个范围内。如果不在这个范围中,CBAC会丢且这些报文,并且假设发生了DoS欺骗攻击。
和RACL一样,CBAC会估计UDP连接的时间,假设30秒之内(用户配置)没有UDP数据包,则说明连接已经结束了。因此Cisco IOS从状态表中移除这个条目(包括动态ACL条目)。此外,与RACL不同的是,CBAC会检测DNS的查询和响应。如果内部设备产生了DNS查询,远端DNS服务器应该会在5秒钟发送DNS响应。如果在5秒钟内没有看到响应,这个DNS连接条目会被立刻移除来防止欺骗攻击。同样的,如果从DNS服务器看到DNS响应后,Cisco IOS也会立刻从状态表中移除相应,来防止DNS欺骗和DoS攻击。
某些应用程序,如FTP,会开启额外的连接来传输数据。这种情况RACL就不能起作用了,而CBAC能够监视这些应用的控制连接,并决定他们是否开启了其他的数据连接。当CBAC发现额外开启的连接,他会自动将这些信息加入到状态表中(在启用FAB之前,还会加入到动态ACL种)来允许这些连接通过路由器。
CBAC对于经过地址转换的地址能够在状态表种进行正确的转换,并正确的响应。但是有两个限制:
内部接口(internal)是指连接发起的数据包进入CBAC路由器的接口,外部接口(external)是流量出去后返回CBAC路由器的接口,如果要配置双向CBAC,推荐先配置单向CBAC,测试正常后再配置另外一边。
注意:如果不配置内部端口,则除了外部端口外的所有端口都是内部端口
推荐在配置CBAC之前,先用ACL(应用到接口上)允许某些必要的流量进入或离开内部网络,这样做简化了以后的CBAC配置和相关排错,inspect会在这些deny的条目上开孔,允许指定的流量进入
Router(config)# ip inspect tcp synwait-time #_of_seconds 等待多长时间来完成TCP连接(三次握手),默认是30秒
Router(config)# ip inspect tcp finwait-time #_of_seconds 等待多长时间来完成TCP连接关闭,默认是5秒
Router(config)# ip inspect tcp idle-time #_of_seconds TCP连接的空闲时间,默认是3600秒
Router(config)# ip inspect udp idle-time #_of_seconds UDP连接的空闲时间,默认是30秒
Router(config)# ip inspect dns-timeout #_of_seconds 配置DNS查询条目在状态表中存在的时间,默认是5秒,优先级高于UDP空闲时间
CBAC是哦那个PAM来决定要监视的应用连接类型,如果要监视的那些使用非标准端口的应用程序,如HTTP使用8080端口,必须要手动配置。
PAM表中有三类条目:
配置PAM条目:
Router(config)# ip port-map application_name port port_# [list acl_#] ACL指定哪些设备使用非标准的端口,如果不加代表全部设备。
PAM配置举例:使用PAM和ACL来决定CBAC检测的范围
Router(config)# ip port-map http port 8080 list 1
Router(config)# access-list 1 permit 192.1.1.2
Router(config)# ip port-map http port 8090 list 2
Router(config)# access-list 2 permit 192.1.1.3
检测IP地址为192.1.1.2,端口为8080的HTTP连接
检测IP地址为192.1.1.3,端口为8090的HTTP连接
注意:
PAM表在某些版本的Cisco IOS上必须保存配置,重启后才生效
使用show ip port-map查看
定义哪些条目要加入到状态表,哪些流量被允许返回。如果出站流量不符合监视规则,路由器不会监视这些流量,只把他们当作普通流量处理。
Router(config)# ip inspect name inspection_name protocol [alert {on | off}] [audit-trail {on | off}] [timeout seconds]
protocol:支持的协议cuseeme, fragment, ftp, h323, http, icmp, netshow, rcmd (UNIX R commands), realaudio, rpc, rtsp, sip, skinny, smtp, sqlnet, streamworks, tcp, tftp, udp, and vdolive
alert和audit-trail:详细指定对于这条规则,告警和审计是否开启,如果不配置,则启用默认告警审计规则
timeout:指定这条规则的超时,如果不指定,则使用默认超时时间
Router(config)# interface type [slot_#] port_#
Router(config -if)# ip inspect inspection_name {in | out}in:连接发起的数据包进入CBAC路由器的接口
out:流量出去后返回CBAC路由器的接口
CBAC查看命令:
Router# show ip inspect [parameter]
Router# show ip inspect sessions 查看CBAC状态表
告警会显示CBAC的一些消息,如:路由器资源不够,DoS攻击和其他威胁。告警默认情况会开启,并自动显示在console线程上。
全局关闭CBAC告警:
Router(config)# ip inspect alert-off
审计会追踪CBAC检查的连接,获取他们的统计信息。默认情况下审计是关闭的。
全局开启CBAC审计,默认情况会显示在console线程上:
Router(config)# ip inspect audit trail