(CBAC配置步骤)
1>配置外部接口的inbound方向的ACL,实现标准PIX的过滤一切外部向内部的流量。
2>配置CBAC INSPECTION规则。
3>应用inspect于外部接口。
interface BRI0/0
ip address negotiated
ip access-group outside-in in
ip nat outside
ip inspect CBAC out
CBAC INSPECT功能:
1>状态监控包过滤。 {监控TCP/UDP流量,动态放行返回流量。}
2>过滤特定应用的流量 {如JAVA过滤}
3>应用层异常检测 {SMTP inspection,}
4>DOS攻击防范
5>审计及告警
[ACL vs. CBAC]
ACL:包过虑
只能检查网络层或者传输层的数据包
CBAC:状态监控包过滤
够智能过滤基于应用层的(如FTP连接信息)TCP和UDP的session
能够在firewall access-list 打开一个临时的通道给起源于内部网络向外的连接,同时检查内外两个方向的sessions。
[CBAC工作原理及过程]
1> 动态监控由inspect命令定义的流量
2>为监控流量动态建立ACL,允许返回流量
3>继续进行流量监控、动态建立ACL,并保护对特定应用的攻击。
4>当监控流量的会话断开或超时时,CBAC自动删除先前建立的动态ACL。
++++++++++++++++++++++++++++++++++++++++++++++++++
比如当CBAC配置于连到internet的外部接口(outside)上,一个从内部发出的TCP数据包(telnet会话)经过该接口连出,同时CBAC的配置中已经包括了tcp inspection,将会经过以下几步:
(1)数据包到达防火墙的外部接口(设为s0);
(2)数据包由该接口outbound access-list检查是否允许通过(不通过的数据包在此被丢弃,不用经过以下步骤);
(3)通过access list检查的数据包由CBAC检查来决定和记录包连接状态信息,这个信息被记录于一个新产生的状态列表中为下一个连接提供快速通道;
(4)如果CBAC没有定义对telnet应用的检查,数据包可以直接从该接口送出;
(5)基于第三步所获得的状态信息,CBAC在s0的inbound access list中插入一个临时创建的access list入口,这个临时通道的定义是为了让从外部回来的数据包能够进入;
(6)数据包从s0送出;
(7)接下来一个外部的inbound数据包到达s0,这个数据包是先前送出的telnet会话连接的一部分,经过s0口的access list检查,然后从第五步建立的临时通道进入;
(8)被允许进入的数据包经过CBAC的检查,同时连接状态列表根据需要更新,基于更新的状态信息,inbound access list临时通道也进行修改只允许当前合法连接的数据包进入;
(9)所有属于当前连接的进出s0口数据包都被检查,用以更新状态列表和按需修改临时通道的access list,同时数据包被允许通过s0口;
(10)当前连接终止或超时,连接状态列表入口被删除,同时,临时打开的access list入口也被删除。
需要注意的是:对于配置到s0口outbound ip access list, accesslist必须允许所有需要的应用通过,包括希望被CBAC检查的应用;但是inbound ip access list必须禁止所有需要CBAC检查的应用,当CBAC被出去的数据包触发后,会在inbound access list中临时开放一个通道给合法的、正在传送的数据进入。
++++++++++++++++++++++++++++++++++++++++++++++++++
[CBAC INSPECTION及外部ACL应用方向]
1>确认内,外接口
2>外部ACL可以应用的接口及方向
方向:由外向内
external接口:in方向(CISCO推荐)
Internal接口:out方向
3>inspect可以应用的接口及方向
方向:由内向外
external接口:out方向(CISCO推荐)
internal接口: in方向
外部ACL应用方向与inspect应用方向正好相反。
(外部ACL内容建议)
1>deny所有RFC1918地址。
2>deny内部保护网络从outside接口的in方向。deny所有的内部网络被外部欺骗后,从外部访问内部。
3>permit外部的ICMP
建议除RFC1918外,配置deny组播源,本地源,0.0.0.0 255.255.255.255
r1(config)#ip access-list ext outside-in
//deny RFC1918
r1(config-ext-nacl)#20 deny ip 10.0.0.0 0.255.255.255 any
r1(config-ext-nacl)#30 deny ip 172.16.0.0 0.15.255.255 any
r1(config-ext-nacl)#40 deny ip 192.168.0.0 0.0.255.255 any
r1(config-ext-nacl)#50 deny ip host 0.0.0.0 any
r1(config-ext-nacl)#60 deny ip 127.0.0.0 0.255.255.255 any
r1(config-ext-nacl)#70 deny ip 224.0.0.0 31.255.255.255 any
r1(config-ext-nacl)#80 deny ip host 255.255.255.255 any
//deny 内部保护网络
r1(config-ext-nacl)#120 deny ip 16.1.1.0 0.0.0.255 any
r1(config-ext-nacl)#200 permit icmp any any
r1(config-ext-nacl)#end
r1(config)#
//外部接口
r1(config)#int f0/0
r1(config-if)#ip access-group external in
//内部接口
r1(config-if)#int f0/1
r1(config-if)#ip add 16.1.1.3 255.255.255.0
r1(config-if)#no shu
r1(config-if)#