翻译自思科官方出的CCIE RS认证指南《CCIE Routing and Switching Exam Certification Guide 4th Edition》

 

经典的思科IOS防火墙
    在一些情况下,访问列表过滤足于控制和保护一个路由器接口。但是随着***者变得越来越老练,思科也发展出更好的工具来处理这些威胁。颇为艰难的是,常常需要实现安全性时对网络用户相对透明,而又能防御***。思科的
IOS防火墙是这些工具中的一种。
 
    经典的
IOS防火墙依靠基于上下文的访问列表(
Context-Base Access Control,CBAC
.CBAC是思科
IOS内置的一个防火墙特×××。它通过人工定义的动态检测流量的一两个或更多的步骤,实现流量穿越路由器时的访问列表过滤。它的实现是基于实际的协议命令。比如
FTP get 命令,而不是简单的四层端口号。
CBAC根据流量的起源决定哪些流量应该允许通过访火墙。 当发现一个来自可信任网络的特定协议发起一个会话,
CBAC会在防火墙上创建临时开放条目去允许相应的从非信任网络返回可信任网络的流量。(译者注:类似于自反
ACL),而默认情况下其它的过滤方式是阻断的。
CBAC只允许需要的流量,而不是开放防火墙去允许特定协议的所有流量。
 
    CBAC工作在
TCP
UDP流量的层面上,支持像
FTP这种需要多个并发连会话或连接的协议。典型的应用是通过配置
CBAC使其检测从外部来的这些协议的流量,来保护内部网络免受外部威胁。要使用
CBAC,你需要配置以下内容:
要检测的协议
要检测的接口
要检测的每个接口的流量方向
 
基于
CBAC
TCP vs UDP
    TCP有明确的连接,所以
CBAC(和其它有状态检测和过滤方法)能够很容易地处理。但是,
CBAC不是工作在简单的协议和端口号,而是在更深的层次。比如
CBAC能够通过检测和识别特定的
FTP控制信道命令,决定在什么时候开放或关闭防火墙的临时开放条目。
 
    
TCP不同的是,
UDP流量是无连接的,所以比较难处理。
CBAC管理
UDP流量是基于一些因素决定的,比如
UDP报文的原、目的地址和端口是否和最近来的流量一致,还有它们的相对时间间隔。你可以配置一个全局空闲超时时间决定多长间隔之内可以认为是同一个流。你也可以配置其它超时时间,包括
TCP
UDP流量的特定协议超时时间。
思科
IOS防火墙协议支持
    当使用
CBAC的时候,
IOS防火墙能够检测很长的协议列表,并且随着时间继续增加。
CBAC通够检测的常用协议有:
      
  任何普通的
TCP会话,无论是哪种应用层协议
      
  所有
UDP会话
      
 
FTP
      
 
SMTP
      
 
TFTP
      
 
H.323(网络会议,电视会议等)
      
 
Java
      
 
CU-SeeMe
      
 
UNIX R命令(
rlogin,rexec,rsh等)
      
 
Real Audio
      
 
Sun RPC
      
 
SQL*Net
      
 
StreamWorks
      
 
VDOLive
 
思科
IOS防火墙注意事项
    虽然
CBAC有强大的动态检测和过滤功能,但是它有一些缺陷。你应该知道
CBAC的一些局限性和注意事项:
 
       ■
  接口上如果配置了访问列表,那么将先检查访问列表再检查
CBAC。如果一个访问列表在接口上阻断了一个特定类型的流量,那么流量将在
CBAC检测前就被拒绝掉。
 
      
 
CBAC不能够防止来自内部网络的***。而实际上大部分***是来自内部的。
 
      
 
CBAC只根据你定义的协议检测,而不影响访问列表等其它过滤方式。
 
      
  如果需要检测非
TCP
UDP流量,你必须配置一个命名检测规则。
 
      
 
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将拒绝任何外部主机向内网主机发起的连接。
 
    可以通过命令
show
ip inspect session查出
IOS防火墙的运行情况。可以看到例子中有一个
telnet的会话已建立。
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-name
destination
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去识别流量。需要4class map:三个用来指定定制策略的流量类型,另一个用来指定所有来自LAN的流量。路由器自动创建一个默认的class,但所有在这个class下的流量都被drop。例18-17显示访问列表LAN_Subnet允许所有来自LAN子的流量,访问列表Web_Servers允许去往corp intranet servers的流量。注意class map Corp_Servers使用match-all关键字同时匹配访问列表Web_ServerHTTP协议,所以访问列表和协议类型必须同时匹配。例如,class map Other_HTTP同时匹配HTTP协议和访问列表LAN_Subnet,以达到只允许从本地来的HTTP流量。class map ICMP只匹配ICMP协议,因为所有流量将被丢弃,没有必要让路由器检测原地址。路由器将使用NBAR去匹配HTTPICMP流量。
 
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背后的概念。