定义与原理:
防火墙的基本作用是保护特定网络免受“不信任”的网络的攻击,但是同时还必须允许两个网络之间可以 进行合法的通信。 安全策略是控制设备对流量转发以及对流量进行内容安全一体化检测的策略,作用就是对通过防火墙的 数据流进行检验,符合安全策略的合法数据流才能通过防火墙。
安全策略的内容
安全策略主要包含下列配置内容:
策略匹配条件:源安全域,目的安全域,源地址,目的地址,用户,服务,应 用,时间段。
策略动作:允许,禁止。
内容安全profile:(可选,策略动作为允许的时候执行)反病毒,入侵防御,URL过滤,文件过 滤,内容过滤,应用行为控制,邮件过滤。
安全策略工作流程 :
安全策略配置:
执行security-policy命令进入安全策略视图。
执行rule name rule-name命令创建一个安全策略并进入该策略视图。
action {permit | deny}配置安全策略执行动作。
source-zone {zone-name &<1-6> | any}指定源安全区域。
source-address {ipv4-address ipv4-mask-length}指定源地址。
destination-zone {zone-name &<1-6> | any}指定目的安全区域。
destination-address {ipv4-address ipv4-mask-length} 指定目的地址。
service {service-name &<1-6> | any} 指定服务类型。
application { any | app app-name &<1-6> | app-group app-group-name &<1-6> |
category category-name [ sub-category sub-category-name ] &<1-6 } 配置安全策略规则
的应用。
user {user-name &<1-6> | any} 配置用户信息。
profile { app-control | av | data-filter | file-block | ips | mail-filter | urlfilter } name 配置安全策略规则引用安全配置文件。
[sysname]security-policy
[sysname-policy-security]rule name policy_sec
[sysname-policy-security-rule-policy_sec]source-address 1.1.1.1 24
[sysname-policy-security-rule-policy_sec]source-zone untrust
[sysname-policy-security-rule-policy_sec]destination-address geo-location
BeiJing
[sysname-policy-security-rule-policy_sec]service h323
[sysname-policy-security-rule-policy_sec]action permit
[sysname-policy-security-rule-policy_sec]profile av profile_av
防火墙的会话表
域间转发
“状态检测”机制以流量为单位来对报文进行检测和转发,即对一条流量的第一个报文进行包过滤规则检 查,并将判断结果作为该条流量的“状态”记录下来。对于该流量的后续报文都直接根据这个“状态”来判断 是转发还是丢弃,而不会再次检查报文的数据内容。这个“状态”就是我们平常所述的会话表项。这种机 制迅速提升了防火墙产品的检测速率和转发效率,已经成为目前主流的包过滤机制。
其中TCP协议的数据报文,一般情况下在三次握手阶段除了基于五元组外,还会计算及检查其它字段。 三次握手建立成功后,就通过会话表中的五元组对设备收到后续报文进行匹配检测,以确定是否允许此 报文通过。
查询和创建会话
状态检测机制
状态检测机制开启状态下,只有首包通过设备才能建立会话表项,后续包直接匹配会话表项进行转 发。
状态检测机制关闭状态下,即使首包没有经过防火墙,后续包只要通过防火墙也可以生成会话表 项。
对于TCP报文
开启状态检测机制时,首包(SYN报文)建立会话表项。对除SYN报文外的其他报文,如果没有对应会话表项(设备没有收到SYN报文或者会话表项已老化),则予以丢弃,也不会建立会 话表项。
关闭状态检测机制时,任何格式的报文在没有对应会话表项的情况下,只要通过各项安全机制的检查,都可以为其建立会话表项。
对于UDP报文
UDP是基于无连接的通信,任何UDP格式的报文在没有对应会话表项的情况下,只要通过各 项安全机制的检查,都可以为其建立会话表项。
对于ICMP报文
开启状态检测机制时,没有对应会话的ICMP应答报文将被丢弃。
关闭状态检测机制时,没有对应会话的应答报文以首包形式处理。
会话表项
会话是状态检测防火墙的基础,每一个通过防火墙的数据流都会在防火墙上建立一个会话表项,以五元 组(源/目的IP地址、源/目的端口、协议号)为Key值,通过建立动态的会话表提供域间转发数据流更高 的安全性。
<USG> display firewall session table verbose
Current total sessions: 1
icmp VPN: public --> public
Zone: trust --> untrust Slot: 8 CPU: 0 TTL: 00:00:20 Left: 00:00:19
Interface: GigabitEthernet6/0/0 Nexthop: 107.255.255.10
<--packets: 134 bytes: 8040 -->packets: 134 bytes: 8040 107.229.15.100:1280 -->
107.228.10.100:2048
会话表与状态检测
状态检测防火墙使用基于连接状态的检测机制,将通信双方之间交互的属于同一连接的所有报文都作为 整体的数据流来对待。当防火墙安全策略允许报文通过时,将会建立如下的会话表
[USG] display firewall session table verbose
Current total sessions: 1
http VPN:public --> public
Zone: local--> trust Remote TTL: 00:00:20 Left: 00:00:08
Output-interface: GigabitEthernet0/0/2 Nexthop: 10.1.1.1 MAC: 00-e0-4c-88-3a-32
<-- packets:0 bytes:0 --> packets:8 bytes:340
10.1.1.1:43981-->10.1.1.10:43981
传统包过滤防火墙中,为了使由内网PC主动访问外网资源的回应报文也顺利通过防火墙,还需要再 配置一条反向规则。当使用状态检测防火墙时,报文成功被防火墙转发后,设备会生成一个五元组的会话表。让我们来了解一下会话表中包含了哪些内容。
在一个完整的会话表中,如果使用了verbose参数,将会看到更完整的信息:
Zone:表示报文在安全区域之间流动的方向,图中的信息表示报文是从Trust区域流向 Untrust区域。
TTL:表示该条会话的老化时间,这个时间到期后,这条会话也将会被清除。Left:表示该条 会话剩余的生存时间。
Output-interface:表示报文的出接口,报文从这个接口发出。
Nexthop:表示报文去往的下一跳的IP地址,本网络拓扑中是Web服务器的IP地址。
MAC:表示报文去往的下一跳的MAC地址,本网络拓扑中是Web服务器的MAC地址。
<--packets:6 bytes:390:表示会话反方向上的报文统计信息,即Web服务器向PC发送报文的 个数和字节数。
-->packets:8 bytes:340:表示会话正方向上的报文统计信息,即PC向Web服务器发送报文的 个数和字节数。
当遇到来回路径不一致的组网时,由于首包没有经过防火墙因而没有创建会话表,则回应的报文经过防 火墙时又找不到会话表,防火墙将丢弃后续报文导致通信中断。
[USG] display firewall session table verbose
Current total sessions: 1
http VPN:public --> public
Zone: local--> trust Remote TTL: 00:00:20 Left: 00:00:08
Output-interface: GigabitEthernet0/0/2 Nexthop: 10.1.1.1 MAC: 00-e0-4c-88-3a-32
<-- packets:0 bytes:0 --> packets:8 bytes:340
10.1.1.1:43981-->10.1.1.10:43981
由于目前的TCP/IP网络主要进行的是逐包转发,事先并不协商实际的物理链路,所以有可能存在一 次通信过程中,部分报文由一个设备转发,另外一部分报文由另一设备转发的情况。例如上图所示 中由内网主动向外建立的连接不需要经过防火墙进行安全检测,但从外网流入内网的数据报文需要 防火墙进行安全检测,因此在同一数据通信中,出现了来回路径不一致的情况。在来回路径不一致 的组网中,设备可能不能接收到一条流量的来回所有报文。这种组网下,就必须关闭状态检测功 能,否则可能由于首包不通过设备,导致会话表不能正常建立。
从上面的会话表来看,"<--"方向的统计信息为0,只有“<--”方向存在统计信息,这就说明只有外部网络到内部网络的报文经过了防火墙。由此我们得出结论,关闭状态检测功能后,防火墙收到独立 报文后也会建立会话,内外网之间的通信不会中断。在报文来回路径不一致的网络环境中,我们在 防火墙上关闭状态检测功能后,会话中的一个方向上的报文统计信息是0,此时双方的通信也是正 常的,这就是我们上面所说的特殊的网络环境。可见在实际的网络环境中,我们还是要具体情况具 体分析。
会话在转发流程中的位置