翻译自思科官方出的CCIE RS认证指南《CCIE Routing and Switching Exam Certification Guide 4th Edition》
经典的思科IOS防火墙
在一些情况下,访问列表过滤足于控制和保护一个路由器接口。但是随着攻击者变得越来越老练,思科也发展出更好的工具来处理这些威胁。颇为艰难的是,常常需要实现安全性时对网络用户相对透明,而又能防御攻击。思科的IOS防火墙是这些工具中的一种。
要检测的协议
要检测的接口
要检测的每个接口的流量方向
基于CBAC的TCP vs UDP
TCP有明确的连接,所以CBAC(和其它有状态检测和过滤方法)能够很容易地处理。但是,CBAC不是工作在简单的协议和端口号,而是在更深的层次。比如CBAC能够通过检测和识别特定的FTP控制信道命令,决定在什么时候开放或关闭防火墙的临时开放条目。
思科IOS防火墙协议支持
思科IOS防火墙注意事项
虽然CBAC有强大的动态检测和过滤功能,但是它有一些缺陷。你应该知道CBAC的一些局限性和注意事项:
■ 接口上如果配置了访问列表,那么将先检查访问列表再检查CBAC。如果一个访问列表在接口上阻断了一个特定类型的流量,那么流量将在CBAC检测前就被拒绝掉。
思科IOS防火墙配置步骤
虽然配置CBAC并不难,但需要很多步骤,具体如下:
1.选择一个接口(“inside”或“outside”)
2.配置一个拒绝所有需要检测的流量的访问列表。
3.使用ip inspect命令配置全局超时时间和阈值。
4.使用ip inspect name protocol定义一个检测规则和可选的针对特定规则的超时时间值。比如:ip inspect name WOLF ftp timeout 3600
5.在接口上调用检测规则。比如在接口配置模式下:ip inspect WOLF in
6.在相同接口下调用访问列表,但是是调用在相反的方向。(inbound或outbound)
例18-15显示一个路由器其中一个接口连接内网,一个连接外网。CBAC将在外网接口上调用。这个路由器被本置为使用CLASS_FW检测所有的ICMP、TCP、UDP流量,TCP和会话将在30秒后超时。但是ICMP会话将只在10秒后超时。访问列表IOS_FW允许路由协议流量,但拒绝所有将会被CBAC检测的流量。检测规则调用在出接口,outbound方向。访问列表调用在相同接口,inbound方向。所有TCP、UDP和ICMP通过串口流向外网的一台主机的流量将被track。回包将根据访问列表IOS_FW里一个动态条目被允许通过。但是,访问列表IOS_FW将拒绝任何外部主机向内网主机发起的连接。
例18-15 利用CBAC配置经典IOS防火墙
ip inspect name CLASSIC_FW icmp timeout 10
ip inspect name CLASSIC_FW tcp timeout 30
ip inspect name CLASSIC_FW udp timeout 30
!
ip access-list extended IOS_FW
permit eigrp any any
deny tcp any any
deny udp any any
deny icmp any any
!
interface Serial0/0
ip address 192.168.1.3 255.255.255.0
ip access-group IOS_FW in
ip inspect CLASSIC_FW out
!
R2#show ip inspect sessions
Established Sessions
Session 47699CFC ( 10.1.1.2:11003)=>(172.16.1.10:23) tcp SIS_OPEN
CBAC是一个强大的IOS防火墙特性集选项,在参加CCIE RS认证考试前,你必须理解其功能。
思科IOS 基于区域的防火墙(Zone-Based Firewall)
从例18-15中你会发现,就算配置一个简单的经典的IOS防火墙也是非常复杂的。另外,经典的IOS检测策略需要在所有接口上调用,你不能对不同用户组应用不同的策略。
基于区域的防火墙(ZFW)改变了这一情况。(ZFW在12.4(6)或之后的IOS版本可用。)基于区域的防火墙的概念和硬件防火墙类似。路由器接口将被划入安全区域。流量在同一区域内自由通行,但在不同区域间默认是被阻止的。已划入安全区域的接口和没有划入安全区域接口间的流量也是被阻断的。你必须显式地调用一个策略去允许区域间的流量。区域策略利用基于策略的语言(Class-Base Policy Language,CPL)配置,类似于MQC。如果需要的话,Class map允许你配置高颗粒度的策略。基于区域的防火墙引入了一个新的class和policy map类型——inspect类型。
ZFW 允许检测和控制许多协议,包括:
■ HTTP and HTTPS
■ SMTP, Extended SMTP (ESMTP), POP3, and IMAP
■ P2P应用(能够利用启发式跟踪跳动端口)
■ IM应用 (AOL, Yahoo!, MSM)
■ Remote Procedure Calls (RPC)
以下是配置ZFW的步骤:
1.决定所需要的区域,并在路由器上创建。
2.决定流量在不同区域量如何流动,并在路由器上创建zone-pair(区域对)
3.创建class map去识别区需要防火墙检测的区域间的流量
4.创建policy map并关联class map来管理流量。
5.在正确的zone-pair上调用policy map.
6.将接口划入区域。一个接口只能划入一个安全区域。
为了帮助你理解这些步骤,看看图18-11的网络。路由器Branch 1 有两个接口:一个串行WAN接口,一个以太网接口。这是一个简单的例子,但在IOS防火墙可用的情况下很常在小型的分支办公室里使用。LAN口被划入一个LAN区域,WAN接口被划入WAN区域。
图18-11思科IOS基于区域的防火墙
在这个例子里,网络管理员决定对LAN区域到WAN区域的流量使用以下策略:
■ 只有允许来自LAN子网的流量
■ 允许访问Corp intranet server的HTTP流量。
■ 允许其它所有HTTP流量,但限速为1Mbps。
■ 阻止ICMP
■ 对所有流量,TCP和UDP的超时时间必须小于300秒。
对于从WAN区域到LAN区域的流量,只有来自公司管理网络的SSH允许通过。
所以,你必须配置两个区域:LAN和WAN。路由器为自己自动创建一个区域,叫做self zone.默认情况下,允许所有始发或到达这个区域的流量,但可以手动修改。在这个例里,防火墙策略将被应用在从LAN区到WAN区的流量,以及从WAN区到LAN区的流量。所以你需要两个zone pair:LAN-to-WAN和WAN-to-LAN。配置zone需要使用全局命令zone security name ,配置zone paire需要使用全局命令zone-pair security name source source-zone-namedestination desination-zone-name。例18-16显示两个步骤::配置zone和zone pair。
例18-16 配置ZFW zone和zone pair
Branch1(config)# zone security LAN
Branch1(config-sec-zone)# description LAN zone
!
Branch1(config)# zone security WAN
Branch1(config-sec-zone)# description WAN zone
!
Branch1(config)# zone-pair security Internal source LAN destination WAN
Branch1(config)# zone-pair security External source WAN destination LAN
下一步是创建class map去识别流量。需要4个class map:三个用来指定定制策略的流量类型,另一个用来指定所有来自LAN的流量。路由器自动创建一个默认的class,但所有在这个class下的流量都被drop。例18-17显示访问列表LAN_Subnet允许所有来自LAN子的流量,访问列表Web_Servers允许去往corp intranet servers的流量。注意class map Corp_Servers使用match-all关键字同时匹配访问列表Web_Server和HTTP协议,所以访问列表和协议类型必须同时匹配。例如,class map Other_HTTP同时匹配HTTP协议和访问列表LAN_Subnet,以达到只允许从本地来的HTTP流量。class map ICMP只匹配ICMP协议,因为所有流量将被丢弃,没有必要让路由器检测原地址。路由器将使用NBAR去匹配HTTP和ICMP流量。
图18-17 配置ZFW class map
Branch1(config)# ip access-list extended LAN-Subnet
Branch1(config-ext-nacl)# permit ip 10.1.1.0 0.0.0.255 any
!
Branch1(config-ext-nacl)# ip access-list extended Web_Servers
Branch1(config-ext-nacl)# permit tcp 10.1.1.0 0.0.0.255 host 10.150.2.1
Branch1(config-ext-nacl)# permit tcp 10.1.1.0 0.0.0.255 host 10.150.2.2
!
Branch1(config-ext-nacl)# class-map type inspect match-all Corp_Servers
Branch1(config-cmap)# match access-group name Web_Servers
Branch1(config-cmap)# match protocol http
!
Branch1(config-cmap)# class-map type inspect Other_HTTP
Branch1(config-cmap)# match protocol http
Branch1(config-cmap)# match access-group name LAN_Subnet
!
Branch1(config-cmap)# class-map type inspect ICMP
Branch1(config-cmap)# match protocol icmp
!
Branch1(config-cmap)# class-map type inspect Other_Traffic
Branch1(config-cmap)# match access-group name LAN_Subnet
在第4步,将之前创建的class map关联到policy map。ZFW的policy map能够在每一个class map下执行以下动作:
Drop——丢弃数据包
Inspect——使用CBAC引擎
Pass——通过数据包
Police——监管流量
Service-policy——使用包深层检测引擎
Urlfilter——使用URL过滤引擎
回想一下,对于普通的网络流量,TCP和UDP计时器需要减少到300秒,这可以通过一个parameter map实现。Parameter map对policy map下指定的class修改流量检测行为。在例18-18里,parameter map Timeouts将TCP和UDP的idle时间设置为300秒。Parameter map也可以用来设置警告和审计跟踪,并且控制其它会话参数,比如半连接(half-open)的会话数。Policy map LAN2WAN关联所有目前已创建的class map,并且对class Other_Traffice应用parameter map,同时限制了Other_HTTP流量到1Mbps,突发速率为8Kbps。注意policy map的配置也使用type inspect这关键字。
例18-18 配置ZFW parameter map和policy map
Branch1(config)# parameter-map type inspect Timeouts
Branch1(config-profile)# tcp idle-time 300
Branch1(config-profile)# udp idle-time 300
!
Branch1(config-profile)# policy-map type inspect LAN2WAN
Branch1(config-pmap)# class type inspect Corp_Servers
Branch1(config-pmap-c)# inspect
!
Branch1(config-pmap-c)# class type inspect Other_HTTP
Branch1(config-pmap-c)# inspect
Branch1(config-pmap-c)# police rate 1000000 burst 8000
!
Branch1(config-pmap-c)# class type inspect ICMP
Branch1(config-pmap-c)# drop
!
Branch1(config-pmap-c)# class type inspect Other_Traffic
Branch1(config-pmap-c)# inspect Timeouts
在class Other_Traffic 下没有指定要检测的协议,那么所有协议将被检测。
在第5步中,将创建policy map,并调用在zone pair下,这类似于在MQC中将一个service policy调用在接口下。命令是在zone pair配置模工下使用service-policy type inspect policy-map-name 。
最后一步,第6步,通过在接口模式下使用命令zone-member security zone-name将路由器接口划入正确的zone。回到图18-11看一下,接口F0/0连接LAN,接口S0/0/0连接WAN。例18-19显示了如何将service policy调用在zone pair下,另外,有两个接口划入了zone。
例18-19 调用ZFW service policy和划入zone
Branch1(config)# zone-pair security Internal source LAN destination WAN
Branch1(config-sec-zone-pair)# service-policy type inspect LAN2WAN
Branch1(config-sec-zone-pair)# exit
!
Branch1(config)# interface fa 0/0
Branch1(config-if)# zone-member security LAN
!
Branch1(config-if)# interface s0/0/0
Branch1(config-if)# zone-member security WAN
!
!Verify the configuration
Branch1# show zone-pair security
Zone-pair name Internal
Source-Zone LAN Destination-Zone WAN
service-policy LAN2WAN
Zone-pair name External
Source-Zone WAN Destination-Zone LAN
service-policy not configured
到目前为止,你已经看到一些创建并调用对从本地LAN到WAN相当复杂的防火墙策略。在这个时候,只有回包能够到达LAN。需要创建其它class map 和service policy将需要来允许从WAN发向LAN的SSH会话。然后policy map将被调用在 zone pair Extenrnal。在例子并没有写出来,你最好自己做一下练习,以确保理解ZFW背后的概念。
No comments:
Post a Comment