防火墙和VPN技术与实践

978-7-115-59472-3
作者: 李学昭
译者:
编辑: 邓昱洲

图书目录:

详情

本书以HCIP-Security和HCIE-Security认证考试大纲为依托,介绍了防火墙和VPN的关键技术,包括安全策略、NAT、双机热备、虚拟系统、链路负载均衡、服务器负载均衡、L2TP VPN、IPSec VPN和SSL VPN。本书详细介绍了每一种技术的产生背景、技术实现原理、配置方法,旨在帮助读者掌握组建安全通信基础设施的技术和能力,顺利通过认证考试。 本书是学习和了解网络安全技术的实用指南,内容全,通俗易懂,实用性强,适合网络规划工程师、网络技术支持工程师、网络管理员以及想了解网络安全技术的读者阅读。

图书摘要

华为网络安全技术与实践系列

防火墙和VPN技术与实践

Firewall & VPN Technologies and Practices

李学昭 主编



人民邮电出版社
北京

内容提要

本书以HCIP-Security和HCIE-Security认证考试大纲为依托,介绍了防火墙和VPN的关键技术,包括安全策略、NAT、双机热备、虚拟系统、链路负载均衡、服务器负载均衡、L2TP VPN、IPsec VPN和SSL VPN。本书详细介绍了每一种技术的产生背景、技术实现原理、配置方法,旨在帮助读者掌握组建安全通信基础设施的技术,顺利通过认证考试。

本书是学习和了解网络安全技术的实用指南,内容全面,通俗易懂,实用性强,适合网络规划工程师、网络技术支持工程师、网络管理员以及华为安全产品的用户阅读。

丛书序

随着政企数字化转型的不断深入,业务上云、万物互联、万物智联成为网络发展的趋势。网络结构在这一趋势的推动下不断演化,在促进政企业务发展的同时,安全暴露面也呈指数级增长。同时,百年变局和世纪疫情交织叠加,世界进入动荡变革期,不稳定性不确定性显著上升。网络外部环境越来越恶劣,网络空间对抗趋势越来越突出,大规模针对性网络攻击行为不断增加,安全漏洞、数据泄露、网络诈骗等风险持续加剧。

如何在日益严峻复杂的网络安全环境下守住安全底线,为数字化转型战略的顺利实施提供可靠的安全保障,这是整个产业界需要研究和解决的严峻问题。

第一,网络安全是数字中国的基础,法律法规是安全建设的准则。没有网络安全就没有国家安全。为了应对日益增长的网络安全风险,近年来,国家陆续出台了《中华人民共和国网络安全法》《中华人民共和国数据安全法》《关键信息基础设施安全保护条例》《网络安全等级保护条例》等一系列法律法规,对网络安全建设提出了更高的要求,为网络安全产业的发展指明了方向。

第二,网络安全建设应该遵循“正向建、反向查”的思路,提供面向确定性业务的韧性保障。“正向建”,首先是通过供应链可信、硬件可信和软件可信,构建ICT基础设施的“可信基座”;其次是采用SRv6、FlexE切片等IPv6+技术构建确定性网络,确保“网络可信”;最后是基于数字身份和信任评估框架,加强设备和人员的身份验证,确保“身份可信”。“反向查”,首先是通过全域监测,查漏洞、查病毒、查缺陷、查攻击;其次是通过智能防御、基于AI的威胁关联检测、云地联邦学习等技术,大幅提升威胁检出率;最后是以“云—网—端”协同防护构建一体化安全,提升网络韧性。“正向建”以可信的视角打造信任体系,提升系统内部的确定性;“反向查”从攻击者的视角针对性地构建威胁防御体系,消减外部威胁带来的不确定性。

第三,强化网络安全运营和人才培养,改变“重建设、轻运营”的传统观念。部署安全产品只是网络安全建设的第一步,堆砌安全产品并不能提升网络安全实效。产品上线之后的专业运营才是达成网络安全实效的关键保障。部署的很多安全产品因为客户缺乏运营能力,都成了“僵尸”产品,难以发挥出真实的防护能力。我国网络安全专业人才缺口大,具备专业技能和丰富经验的网络安全人才一直供不应求。安全从业者的能力和意识都有待全面提升。

华为在网络安全领域有着20多年的实践,华为安全作为基因已融入华为所有的产品和解决方案中,为全球约1/3的人口提供了服务。在长期的实践中,华为积累和沉淀了特有的安全技术、解决方案和实践经验。

为助力网络安全产业发展、网络安全人才体系建设,我们策划了“华为网络安全技术与实践系列”图书,内容来自华为网络安全专家多年的沉淀和总结,涉及技术、理论和工程实践,读者范围覆盖管理者、工程技术人员和相关专业师生。

我们力争以朴实、严谨的语言呈现网络安全领域具体的逻辑和思想。衷心希望本丛书对企业用户、网络安全工程师、相关专业师生和技术爱好者掌握网络安全技术有所帮助。欢迎读者朋友提出宝贵的意见和建议,与我们一起不断丰富、完善这些图书,为国家的网络安全建设添砖加瓦。

丛书编委会
2022年10月

前言

“防火墙”这个名词起源于建筑领域,其作用是隔离火灾,阻止火势从一个区域蔓延到另一个区域。在网络通信领域,防火墙设备的主要作用是阻止恶意流量从一个网络扩散到另一个网络。作为一个产品品类的名称,“防火墙”这个名词非常形象地体现了这一产品的作用。作为安全防护的第一道防线,防火墙在网络中扮演着重要的角色。

显然,防火墙产品最核心、最基础的功能就是访问控制。防火墙要能够根据管理员配置的安全策略,控制网络中的访问行为。具体来说就是,放行合法业务,阻断恶意和高风险的流量。为了使访问控制更精准、策略配置更简便,安全策略不仅要支持根据IP地址、服务接口进行配置,还要支持根据地理位置、用户、应用等更容易感知的管控维度进行配置。安全策略还要能够对合法业务执行深度的安全检查,以防范隐藏在合法业务中的已知威胁和未知威胁。

要完成访问控制,防火墙必须部署在网络边界,如企业网络出口、大型网络内部子网边界、数据中心边界等。这就要求防火墙首先是一个网络设备,要能够跟上下行网络设备互通,并保证网络架构本身的健壮性、稳定性。首先,在设计网络架构时要尽可能清晰地划定网络区域和边界。根据各部门的工作职能、业务需求和所涉及信息的重要程度等因素,合理划分子网网段、VLAN和安全区域。保存有重要业务系统及数据的重要网段不能直接与外部系统连接,必须和其他网段隔离,单独划分区域。为了管理方便,也可以采用虚拟化技术,把物理设备划分为逻辑上隔离的多个虚拟设备,实现路由隔离。其次,网络架构需要具备一定的可靠性,在关键节点规划硬件设备冗余,在关键业务路径上规划通信线路的冗余,包括业务数据链路和带外管理链路。防火墙支持双机热备、链路负载均衡和服务器负载均衡等可靠性技术,可以保障业务的连续。

为了保障数据传输的完整性和保密性,防火墙还需要支持VPN技术。由于网络协议及文件格式均具有标准、开放、公开的特征,数据在网络上传输的过程中,不仅会出现丢失、重复等错误,也会遭遇攻击或欺诈行为,导致数据被篡改或被窃取。因此,在数据传输过程中,应采用校验技术或密码技术保证通信过程中数据的完整性,采用密码技术保证通信过程中数据的保密性。数据传输的完整性和保密性可以通过部署VPN来实现,通过隧道封装为认证用户提供安全可靠的加密传输。华为防火墙具有IPsec VPN、SSL VPN等特性,支持多种软硬件加密算法。

防火墙产品诞生至今已逾30年,自《华为防火墙技术漫谈》出版至2022年10月也已经7年有余。这些年来,网络技术不断发展,攻击手段不断翻新,攻防技术日新月异,推动防火墙产品不断演进。7年来,华为防火墙产品很多特性的实现原理和配置方式已经发生了变化。我们不断收到读者的追问:《华为防火墙技术漫谈》什么时候再版?如今,我们终于可以正面回答这个问题了。本书以华为防火墙产品USG6000E V6R7C20版本为基础,详细介绍了构建安全通信网络的关键技术,旨在给读者呈现每一种关键技术的产生背景、技术实现原理、配置指导等内容。

本书内容

本书共计9章,第1、2章介绍防火墙的基础知识,包括安全策略和NAT技术。第3~6章介绍防火墙的关键组网技术,包括双机热备冗余技术、虚拟系统隔离技术、链路和服务器负载均衡技术。第7~9章介绍VPN技术,包括L2TP VPN、IPsec VPN和SSL VPN。

安全策略是防火墙产品最基础的功能。通过安全策略,防火墙决定哪些流量可以通过,哪些不能通过。本章从安全策略的基础知识讲起,介绍了安全策略的基本配置方式和配置原则,用常见业务的配置实例展示了分析业务和配置安全策略的思路与方法。此外,本章还提供了配置和管理安全策略的最佳实践和维护手段。

NAT是一种地址转换技术,支持转换报文的源地址和目的地址。NAT是解决IPv4地址短缺问题的重要手段。本章介绍了源NAT和目的NAT的基本原理、应用场景和配置方法,说明了双向场景和多出口场景下的配置技巧。

双机热备是最常见的设备冗余技术。在网络的重要节点上部署两台设备,互为备份。当一台设备发生故障时,另一台设备可以自动接替,不用人工干预。本章介绍了防火墙双机热备技术的原理,提供了多种典型场景的实现方案和配置思路,分析了双机热备场景下NAT、IPsec、虚拟系统等特性的应用方案。

虚拟系统技术是把一台防火墙从逻辑上划分为多台防火墙,即虚拟系统。每个虚拟系统相当于一台真实的设备,可以拥有自己的接口、路由表等软件和硬件资源。虚拟系统之间默认互相隔离,便于管理,也提高了安全性。本章解释了虚拟系统的基本概念,介绍了虚拟系统的典型部署场景,说明了资源分配、分流、互访等关键技术。

链路负载均衡是网络出口链路冗余的核心技术,是防火墙作为出口网关所必备的常用特性。本章介绍了就近选路、全局选路策略、策略路由的原理和配置方式,并详细阐述了DNS透明代理和智能DNS在链路负载均衡中的作用。这些技术结合在一起,可以实现出站方向的链路负载均衡和入站方向的链路负载均衡。

服务器负载均衡是计算设备冗余和扩展的支撑技术。防火墙作为负载均衡设备,为用户请求调度服务器集群,保证用户体验。本章介绍了服务器负载均衡的核心功能,七层负载均衡和SSL卸载的应用场景和实现原理,并给出了基本的配置方法。

L2TP是一种标准的二层隧道协议,它本身没有加密能力,但是我们可以使用IPsec加密L2TP报文。L2TP VPN分为NAS-Initiated L2TP VPN、Client-Initiated L2TP VPN和LAC-Auto-Initiated L2TP VPN 3种组网场景,本章围绕这3种组网场景,介绍L2TP VPN的原理和配置方法。

IPsec是IETF制定的一个安全标准框架,为数据安全传输提供了一组安全协议和算法,以保证VPN连接的安全。本章介绍了IPsec的协议框架,说明了以手工方式、ISAKMP方式和模板方式建立IPsec VPN的方法。此外,本章还介绍了NAT穿越、对等体检测、L2TP over IPsec等技术和场景。

SSL VPN是一种采用SSL协议来实现远程接入的新型VPN技术。它提供了更简单的技术方案,更丰富的认证手段,更精细的授权粒度。本章从SSL协议框架开始,介绍了基本的技术原理,提供了SSL VPN的配置逻辑和典型业务的配置方法。

读者对象

本书适合具有数据通信和网络安全基础,但需要系统学习网络安全技术的工程师阅读,包括以下几类读者。

(1)数据通信和网络安全从业人员

本书可作为自学用书,帮助从业人员了解网络安全产品的关键技术原理,掌握配置方法和部署技巧,找到解决问题的思路。本书可作为HCIP和HCIE安全方向的培训认证参考书,有助于从业人员快速通过认证考试,提升个人能力和价值。

(2)华为安全产品的用户

本书可作为使用指南,帮助用户循序渐进,更加深入地了解华为安全产品的技术原理、配置方法和排障思路。

致谢

本书由华为技术有限公司数据通信数字化信息和内容体验部组织编写。在写作过程中,华为数据通信产品线的领导给予了很多的指导、支持和鼓励,人民邮电出版社的编辑进行了严格、细致的审核。在此,诚挚感谢相关领导的扶持,感谢本书各位编委和人民邮电出版社各位编辑的辛勤工作!

以下是参与本书编写和技术审校人员名单。

编委:李学昭、刘水、吴兴勇、席友缘、杨晓芬、张娜。

技术审校:边婷婷、陈立健、丁汉吉、方勋、甘佐华、高伟伟、洪李栋、黄国淋、柯立堃、李芳凯、曲金泽、沈懿华、赵桃李、朱清亚。

参与本书编写和审校的老师虽然有多年从业经验,但因时间仓促,错漏之处在所难免,望读者不吝赐教,在此表示衷心的感谢。

本书常用图标

第1章 安全策略

火墙的基本目的是保护特定网络免受“不信任”网络的攻击,同时允许合法的通信。用于实现这一目的的就是安全策略。安全策略是管理员配置的业务规则,防火墙根据规则检查经过防火墙的流量。安全策略的配置决定了哪些流量可以通过防火墙,哪些流量应该被阻断。

安全策略是防火墙的核心,防火墙根据安全策略执行安全检查,保障网络安全。通过安全策略,防火墙可控制内网与外网之间的访问、内网不同子网之间的访问,也可以控制对防火墙自身的访问。

1.1 安全策略基础知识

本节首先介绍安全策略的组成和配置方式;然后说明安全策略的匹配规则,同时引出默认策略的概念,澄清本地安全策略与接口访问控制的关系;最后,给出安全策略的基本配置原则。

1.1.1 安全策略的组成

每一条安全策略都是由匹配条件和动作组成的,安全策略的组成如图1-1所示。防火墙接收到报文以后,将报文的属性与安全策略的匹配条件进行匹配。如果所有条件都匹配,则此报文成功匹配安全策略,防火墙按照该安全策略的动作处理这个报文及其后续双向流量。因此,安全策略的核心元素是匹配条件和动作。

安全策略的匹配条件描述了流量的特征,用于筛选出符合条件的流量。安全策略的匹配条件包括以下要素。

Who:谁发出的流量,即用户。在Agile Controller单点登录场景下,还可以指定用户的接入方式、用户使用的终端设备类型。

Where:流量的来源和目的。包括源/目的安全区域、源/目的IP(Internet Protocol,互联网协议)地址、源/目的地区和VLAN(Virtual Local Area Network,虚拟专用网)。

What:访问的服务、应用或者URL(Uniform Resource Locator,统一资源定位符)分类。

When:即时间段。在安全策略中指定时间段,可以控制安全策略的生效时间,进而根据时间指定不同的动作。

以上匹配条件,在一条安全策略中都是可选配置;但是一旦配置了,就必须全部符合才认为匹配,即这些匹配条件之间是“与”的关系。一个匹配条件中如果配置了多个值,多个值之间是“或”的关系,只要流量匹配了其中任意一个值,就认为匹配了这个条件。

一条安全策略中的匹配条件越具体,其所描述的流量越精确。用户可以只使用五元组(源/目的IP地址、源/目的端口、协议)作为匹配条件,也可以利用防火墙的应用识别、用户识别能力,更精确、更方便地配置安全策略。防火墙使用“对象”来定义各种匹配条件,关于如何在安全策略中使用对象,请参考第1.3节。

安全策略的基本动作有两个:允许和禁止,即是否允许流量通过。

如果动作为允许,可以对符合此策略的流量执行进一步的内容安全检查。华为防火墙的内容安全检查功能包括反病毒、入侵防御、URL过滤、文件过滤、内容过滤、应用行为控制、邮件过滤、APT(Advanced Persistent Threat,高级持续性威胁)防御、DNS(Domain Name Service,域名服务)过滤等。每项内容安全检查都有各自的适用场景和处理动作。防火墙如何处理流量,由所有内容安全检查的结果共同决定。

如果动作为禁止,可以选择向服务器或客户端发送反馈报文,快速结束会话,减少系统资源消耗。

用户、终端设备、时间段、源/目的IP地址、源/目的地区、服务、应用、URL分类等匹配条件,在防火墙上都以对象的形式存在。用户可以先创建对象,然后在多个安全策略中引用,具体方法请参考第1.3节。

为了便于管理,安全策略还提供了如下属性。

名称:用于唯一标识一条安全策略,不可重复。为每一条安全策略指定一个有意义的名称(如安全策略的目的),能提高维护工作效率。

描述:用于记录安全策略的其他相关信息。例如,可以在这个字段记录触发此安全策略的申请流程序号。这样,在例行审计时可以快速了解安全策略的背景,比如什么时间引入此安全策略,谁提出的申请,其有效期为多久,等等。

策略组:把相同目的的多条安全策略加入一个策略组中,从而简化管理。可以移动策略组,启用/禁用策略组等。

标签:标签是安全策略的另一种标识方式,用户可以给一条安全策略添加多个标签,通过标签可以筛选出具有相同特征的策略。例如,用户可以根据安全策略适用的应用类型,添加高风险应用、公司应用等标签。在为安全策略设置标签时,建议使用固定的前缀,如用“SP_”代表安全策略,并用颜色区分不同的动作。这会使标签更容易理解。

1.1.2 安全策略的配置方式

华为防火墙提供了多种配置方式,用户可以选择命令行、Web界面或者北向接口来配置安全策略。接下来,本书将以一个实例来展示最常用的Web界面和命令行配置。

如图1-2所示,为了保证trust区域内的192.168.1.0/24和192.168.2.0/24网段的设备能够正常上网,需要创建一条表1-1所示的安全策略。

使用Web界面配置安全策略如图1-3所示。

使用命令行配置安全策略如下。

<sysname> system-view
[sysname] security-policy
[sysname-policy-security] rule name "Allow access to the Internet"
[sysname-policy-security-rule-Allow access to the Internet] source-zone trust
[sysname-policy-security-rule-Allow access to the Internet] destination zone untrust
[sysname-policy-security-rule-Allow access to the Internet] source-address 192.168.1.0 mask 24
[sysname-policy-security-rule-Allow access to the Internet] source-address 192.168.2.0 mask 24
[sysname-policy-security-rule-Allow access to the Internet] service http https
[sysname-policy-security-rule-Allow access to the Internet] action permit
[sysname-policy-security-rule-Allow access to the Internet] quit
[sysname-policy-security]

1.1.3 状态检测与会话机制

前面介绍了安全策略的组成和配置方式,那么到达防火墙的流量是如何跟安全策略匹配的呢?在介绍匹配规则之前,我们首先介绍一下防火墙的状态检测和会话机制。

早期包过滤防火墙产品采取的是“逐包检测”机制,即对防火墙收到的所有报文都根据包过滤规则逐一检查,以决定是否放行该报文。如图1-4所示,PC(Personal Computer,个人计算机)和Web服务器分别位于防火墙的两侧,其通信由防火墙控制。我们希望PC可以访问Web服务器。

当PC向Web服务器发起访问时,防火墙上必须已经配置了序号为1的安全策略,允许符合此条件的报文通过防火墙。PC在访问Web服务器时使用的源端口可能是1024~65535范围内的任意一个端口。这个值是不确定的,所以这里设定为任意端口(any)。有了这条安全策略,PC发出的报文才能顺利通过防火墙,成功到达Web服务器。然后,Web服务器返回的响应报文也要穿过防火墙,才能到达PC。在包过滤防火墙上,用户还需要配置序号为2的安全策略,允许响应报文通过。同样的,由于PC的端口号是不确定的,这里的目的端口只能设置为任意端口。

这就意味着,序号为2的安全策略开放了PC的所有端口。攻击者只要伪装成Web服务器,就可以畅通无阻地穿过防火墙,访问PC上的任意服务。这必然带来极大的安全风险。此外,采用包过滤机制,防火墙要逐个检查每一个通过防火墙的报文,也严重影响了防火墙的转发效率。

为了解决这个问题,“状态检测防火墙”应运而生。我们仍以图1-4所示的组网为例,来看一下何谓“状态检测”。首先,我们还是要在防火墙上配置序号为1的安全策略,允许PC访问Web服务器,当PC访问Web服务器的报文到达防火墙时,防火墙检测安全策略,允许该报文通过。其次,防火墙为本次访问建立一个会话,会话中包含了本次访问的源/目的IP地址和源/目的端口等信息。会话是通信双方建立的连接在防火墙上的具体体现,代表双方的连接状态,一个会话就表示通信双方的一个连接。防火墙上多个会话的集合就是会话表(session table)。

[sysname] display firewall session table
Current Total Sessions : 1
  http VPN:public --> public 10.1.1.10:2049-->10.1.2.10:80

从上面的会话表中,我们可以清楚地看到,防火墙上有一条HTTP(Hypertext Transfer Protocol,超文本传送协议)会话,会话的源IP地址为10.1.1.10,源端口为2049,目的IP地址为10.1.2.10,目的端口为80。源地址、源端口、目的地址、目的端口和协议这5个元素是会话的重要信息,我们将这5个元素称为“五元组”。这5个元素相同的报文即可被认为属于同一条流,在防火墙上通过这5个元素就可以唯一确定一条连接。

当Web服务器回复给PC的响应报文到达防火墙时,防火墙会把响应报文中的信息与会话中的信息进行比对。如果响应报文中的信息与会话中的信息相匹配,并且该报文符合HTTP规范的规定,就认为这个报文属于PC访问Web服务器行为的后续报文,直接允许这个报文通过。PC和Web服务器之间的后续报文都将匹配会话表转发,不再匹配安全策略。

采用状态检测机制以后,我们只需要为业务请求的发起方向配置安全策略,就不需要图1-4中序号为2的安全策略了。当攻击者伪装成Web服务器向PC发起访问时,攻击者发出的报文不属于PC访问Web服务器行为的响应报文,无法匹配会话表。同时防火墙上也没有开放Web服务器访问PC方向的安全策略,防火墙不会允许这些报文通过。这样,既保证了PC可以正常访问Web服务器,也避免了大范围开放端口带来的安全风险。

状态检测防火墙使用基于连接状态的检测机制,将通信双方之间交互的属于同一连接的所有报文都作为整体的数据流来对待。在状态检测防火墙看来,同一个数据流内的报文不再是孤立的个体,而是存在联系的。为数据流的第一个报文建立会话,数据流内的后续报文直接匹配会话转发,不需要再检查安全策略。这种机制极大地提升了安全性和防火墙的转发效率。

会话表是防火墙转发报文的重要依据,会话表中记录的信息也是定位防火墙转发问题的重要参考。在查看会话表的命令中使用verbose参数,可以看到会话的更多信息。

<sysname> display firewall session table verbose
   Current total sessions: 1
   HTTP VPN: public --> public ID: a387f35dc86d0ca3624361940b0
   Zone: trust --> untrust Slot: 11 CPU: 0 TTL: 00:15:00 Left: 00:14:51
   Recv Interface: XGigabitEthernet0/0/3 Rev Slot: 12 CPU: 0
   Interface: XGigabitEthernet0/0/4 NextHop: 10.1.2.1
   <--packets: 30003 bytes: 4,488,438 --> packets: 15098 bytes: 3,113,948
   10.1.1.10:2049 --> 10.1.2.10:80 PolicyName: No1
   TCP State: fin-1

会话表中记录的关键信息如表1-2所示。

上述信息中有两个重点信息需要说明一下,首先是会话的老化时间,即TTL。会话是动态生成的,但不是永远存在的。如果长时间没有报文匹配,就说明通信双方已经断开了连接,不再需要这个会话了。此时,为了节约系统资源,防火墙会在一段时间后删除会话,该时间被称为会话的老化时间。

老化时间的取值非常重要。如果某种业务会话的老化时间过长,就会一直占用系统资源,有可能导致其他业务的会话不能正常建立;会话的老化时间过短,有可能导致该业务的连接被防火墙强行中断,影响业务运行。华为防火墙已经针对不同的协议,设置了默认的老化时间,如ICMP(Internet Control Message Protocol,互联网控制报文协议)会话的老化时间是20秒,DNS会话的老化时间是30秒等。通常情况下采用这些默认值就可以保证各个协议正常运行。如果需要调整默认值,可以通过firewall session aging-time命令来设置。例如,将DNS会话的老化时间调整为20秒。

[sysname] firewall session aging-time service-set dns 20

其次是报文统计信息,会话中“←”和“→”这两个方向上的报文统计信息非常重要,可以帮助我们定位网络故障。通常情况下,如果我们查看会话时发现只有“→”方向有报文的统计信息,“←”方向上的统计信息都是0,那就说明PC发往Web服务器的报文顺利通过了防火墙,而Web服务器回应给PC的报文没有通过防火墙,双方的通信是不正常的。有可能是防火墙丢弃了Web服务器回应给PC的报文,防火墙与Web服务器之间的网络出现故障,或者Web服务器本身出现故障。这样我们就缩小了故障的范围,有利于快速定位故障。

1.1.4 匹配规则与默认策略

通常,防火墙上会配置大量的安全策略。那么,防火墙收到报文时是如何匹配的呢?防火墙接收到业务发起方的第一个报文后,按照安全策略列表的顺序,从上向下依次匹配。一旦某一条安全策略匹配成功,则停止匹配。防火墙按照该安全策略指定的动作处理流量,并使用会话表记录该条流量的连接状态。该流量的后续报文直接根据会话表来处理。

假设客户端访问服务器的首包到达防火墙时,按照安全策略列表顺序匹配,命中ID为3的安全策略,如图1-5所示。防火墙停止策略匹配流程,根据该安全策略指定的动作,放行首包,同时建立会话表,记录会话状态。服务器收到首包以后,返回给客户端的响应报文到达防火墙,首先查找和匹配会话表,根据会话表转发。

防火墙出厂时就存在一条显式的默认策略“default”,默认禁止所有的域间流量。默认策略永远位于策略列表的最底端,且不可删除。用户创建的安全策略,按照创建顺序从上往下排列,新创建的安全策略默认位于策略列表底部,默认策略之前。如果流量跟所有手工创建的安全策略都不匹配,必将命中默认策略,防火墙根据默认策略阻断流量。

基于防火墙的安全策略匹配规则以及默认策略的设计,我们知道:安全策略的顺序至关重要,在创建安全策略之后,还要根据业务需要手动调整安全策略的顺序,以保证策略匹配结果符合预期;建议保持默认策略的动作为禁止,不要修改,默认策略的目的是保证所有未明确允许的流量都被禁止,这是防火墙作为一个安全产品所遵循的基本设计理念。

例如,安全策略列表中已经有一条名为“Block high-risk ports”的101号安全策略,阻断了所有高风险服务。现在,用户要为来自trust区域的管理终端访问位于DMZ(Demilitarized Zone,非军事区)的服务器开放RDP(Remote Desktop Protocol,远程桌面协议)的远程桌面服务,新增了一条名为“Allow RDP for admin”的201号安全策略,如表1-3所示。

因为101号安全策略完全包含了201号安全策略的匹配条件,按照安全策略的匹配规则,201号安全策略永远也不会被命中。来自trust区域的远程桌面访问命中101号安全策略,就按照其动作被阻断了。因此,新增201号安全策略之后,用户需要手动调整其顺序,把它放到101号安全策略前面,如表1-4所示。调整后安全策略的序号自动变化。

1.1.5 本地安全策略和接口访问控制

防火墙作为一种安全产品,其基本设计理念就是管理网络中的业务,决定哪些流量可以通过,哪些不能通过。这里说的业务,也包括从防火墙发出的流量、访问防火墙的流量。针对这些流量的安全策略,其源安全区域或目的安全区域为local区域(代表防火墙自身),因此也叫本地安全策略。

如图1-6所示,从管理终端ping防火墙的接口地址,是访问防火墙的流量。从防火墙ping服务器的地址,属于从防火墙发出的流量。为它们开放的安全策略即为本地安全策略(表1-5中101号、102号策略)。为了对比,这里也提供了从管理终端ping服务器的安全策略(103号策略)。

为了使用ping功能定位网络问题,用户需要在防火墙上专门开放安全策略。这确实有一点复杂,但是安全。

为了简化管理,防火墙提供了常见管理协议的接口访问控制功能,用来替代101号安全策略这样的访问防火墙设备自身的安全策略。如果用户想ping防火墙的GE0/0/1接口,只需要在这个接口下启用接口访问控制功能,并指定允许的协议(ping)即可。

interface GigabitEthernet 0/0/1
 ip address 10.1.1.1 255.255.255.0
 service-manage enable                //开启接口的访问控制功能
 service-manage ping permit           //允许通过ping访问此接口

默认情况下,防火墙带外管理的MGMT接口已经启用接口访问控制功能,并且允许通过HTTP、HTTPS(Hypertext Transfer Protocol Secure,超文本传送安全协议)、ping、SSH(Secure Shell,安全外壳)、Telnet、NETCONF(Network Configuration Protocol,网络配置协议)和SNMP(Simple Network Management Protocol,简单网络管理协议)访问防火墙。其他接口也启用了接口访问控制功能,但是未允许任何协议。

需要注意的是,接口访问控制功能优先于安全策略。举例来说,如果只启用了接口访问控制功能,而未允许通过ping访问此接口,即使配置了101号安全策略,也无法访问防火墙。如果启用了接口下的ping访问功能,不需要配置101号安全策略就可以访问防火墙了。因此,如果需要通过上述协议访问防火墙,用户有两个选择:选择接口访问控制,启用接口访问控制功能,并允许指定的协议;选择安全策略,关闭接口访问控制功能,为访问指定协议的流量开放精细的安全策略。

另外,如果想要从管理终端ping防火墙的GE0/0/2接口,也需要开启GE0/0/1接口的访问控制功能,因为流量是从GE0/0/1接口进入防火墙的。

1.1.6 安全策略的配置原则

在华为防火墙的实现中,并不是所有业务都需要开放安全策略。了解这些配置原则,有助于规避可能的问题。

安全策略仅控制单播报文,用户需要为所有合法的单播报文开放安全策略。默认情况下,组播报文和广播报文不受防火墙的安全策略控制。防火墙直接转发组播报文和广播报文,不需要开放安全策略。

特别值得提醒的是,这个规则同样适用于常见的网络互连互通协议,包括BGP(Border Gateway Protocol,边界网关协议)、BFD(Bidirectional Forwarding Detection,双向转发检测)、DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)、DHCPv6、LDP(Label Distribution Protocol,标签分发协议)、OSPF(Open Shortest Path First,开放最短路径优先)。用户需要为它们的单播报文配置安全策略。这是防火墙与路由器和交换机最大的不同。如果想要快速接入网络,用户也可以使用undo firewall packet-filter basic-protocol enable命令取消这个策略。取消以后,上述协议的单播报文不受安全策略控制。

对于二层组播报文,用户也可以启用安全策略控制功能。使用firewall l2_multicast packet-filter enable命令启用此功能以后,用户需要为二层组播报文(二层邻居发现组播报文除外)配置安全策略。

对于访问防火墙的管理协议,如果启用了接口访问控制,不需要配置安全策略。接口访问控制适用于常见的管理协议,优先级高于安全策略,具体请参阅第1.1.5节。

对于多通道协议,比如FTP(File Transfer Protocol,文件传送协议),只需要为控制通道配置安全策略。众所周知,多通道协议需要在控制通道中动态协商出数据通道的地址和端口,然后根据协商结果建立数据通道连接。用户需要为多通道协议启用ASPF(Application Specific Packet Filter,应用层包过滤)功能,防火墙从协商报文中记录地址和端口信息,生成Server-map表,并根据Server-map表转发报文。Server-map表相当于一个动态创建的安全策略。

华为防火墙是状态检测防火墙,用户只需要为报文发起方配置安全策略。防火墙收到发起方的首包报文以后,执行安全策略检查,记录会话表。后续报文和回程报文只需要命中会话表即可通过,不再检查安全策略。如果通信双方都可能发起连接,用户需要为双向报文分别配置安全策略。

源地址和目的地址在同一个安全区域内的域内流量,默认不需要配置安全策略。按照安全区域的设计理念,域内的设备具有相同的安全等级,域内流量默认直接转发,不需要安全检查。用户可以为某些域内(源/目的安全区域为同一个)流量配置安全策略,阻断特定的流量,或者为某些放行的流量添加内容安全检查。如果用户有更高的安全需求,也可以使用default packet-filter intrazone enable命令,让域内流量受默认安全策略控制。在这种情况下,需要为所有域内流量配置安全策略。

防火墙转发流程中跳过安全策略检查的业务,不需要配置安全策略。例如,当防火墙配置了认证策略,且用户访问请求触发Portal认证时,不需要为Portal认证开放安全策略。再如,防火墙双机热备组网中,不用为两台防火墙之间的HRP(Huawei Redundancy Protocol,华为冗余协议)报文配置安全策略。

毋庸置疑的是,防火墙的安全性带来了一定的复杂性,而配置和管理的复杂性也会破坏安全性。用户需要熟悉并理解这些规则和配置开关,并根据自己的业务需求和安全需求,找到中间的平衡点。

1.2 配置安全策略

深刻理解和掌握业务内部的协议交互流程,对配置安全策略至关重要。开放安全策略的前提是足够了解业务,包括业务本身的基本原理(协议、端口、报文交互过程)、业务在网络中的访问关系(源/目的IP地址、源/目的安全区域)。本节提供了常见业务的配置指导,以此展示分析业务和配置安全策略的思路与方法。更多业务的安全策略配置,需要用户结合业务的实际情况自行分析。本书在介绍其他特性时,也会同步提供安全策略的配置方法。

1.2.1 为管理协议开放安全策略

管理协议指的是用于管理网络设备的协议,根据业务目的的不同,可以用于管理防火墙,也可以通过防火墙管理其他网络设备。对于管理防火墙的流量,大部分常用的管理协议都可以通过开启接口访问控制来放行。但是,接口访问控制不能控制流量来源,而管理协议直接关系到网络设备本身的安全。因此,强烈建议关闭接口访问控制功能,设置精确的安全策略,仅向特定发起方开放访问。

常见的管理协议,如Telnet、SSH、FTP,具有相似的业务模型。图1-7以Telnet为例,展示了网络中可能存在的3种业务访问关系。

入方向(Inbound)流量:从管理终端Telnet防火墙的接口地址,是访问防火墙的流量。

出方向(Outbound)流量:从防火墙Telnet服务器的地址,属于从防火墙发出的流量。

穿墙(Transmit)流量:从管理终端Telnet服务器的地址,是经过防火墙的穿墙流量。

3种流量对应的安全策略如下。请注意源/目的安全区域、源/目的地址所体现出来的访问关系差异。

security-policy
 rule name “Allow inbound traffic”           //设置安全策略名称,带空格时需要使用引号
  source-zone trust
  destination-zone local
  source-address 10.1.1.10 24
  destinatoin-address 10.1.1.1 24
  service telnet                             //指定开放的服务
  action permit
 rule name “Allow outbound traffic”
  source-zone local
  destination-zone untrust
  source-address 10.1.2.1 24
  destinatoin-address 10.1.2.10 24
  service telnet
  action permit
 rule name “Allow transmit traffic”
  source-zone trust
  destination-zone untrust
  source-address 10.1.1.10 24
  destinatoin-address 10.1.2.10 24
  service telnet
  action permit

上述安全策略可以用表1-6的形式表示。为了节省篇幅,后续安全策略示例均采用表格形式介绍。

FTP是多通道协议,客户端首先向服务器的端口21发起连接请求,建立控制通道。开放FTP控制通道的安全策略如表1-7所示。

建立控制通道以后,客户端和服务器通过协商来确定数据通道的端口。根据FTP工作模式的不同,其协商过程也不同。

主动模式:客户端随机选择一个端口,发起PORT命令,通知服务器自己使用该端口来接收数据。服务器从端口20向该端口发起新的连接。

被动模式:客户端发起PASV命令,服务器随机选择一个端口,通知客户端向该端口发起数据请求。

不管是哪种工作模式,数据通道使用的端口都是随机的,用户无法为数据通道配置精确的安全策略。这个时候,用户需要在安全区域之间启用ASPF功能来解决这个问题。

firewall interzone trust untrust
  detect ftp
  quit

以FTP服务器(10.1.2.10)工作于主动模式为例,客户端(10.1.1.10)和服务器之间会建立两个会话。如下所示,ftp表示控制通道会话,客户端主动访问服务器;ftp-data表示数据通道会话,服务器主动访问客户端。

<sysname> display firewall session-table
Current Total Sessions : 2
  ftp VPN :public-->public 10.1.1.10:64752+->10.1.2.10:21
                   //ftp表示此会话为ftp控制通道,+->表示该会话进入ASPF流程
  ftp-data VPN:public-->public 10.1.2.10:20-->10.1.1.10:31050
                   //ftp-data表示此会话为FTP数据通道
<sysname> display firewall server-map
Type: ASPF, 10.1.2.10 --> 10.1.1.10:31050, Zone: ---
   Protoco l:tcp(Appro:ftp-data),Left-Time:00:00:15
                   //ftp-data表示防火墙通过ASPF流程识别此数据流为FTP数据流
   VPN: public --> public

TFTP(Trivial File Transfer Protocol,简单文件传送协议)与FTP的主要不同之处在于:TFTP基于UDP(User Datagram Protocol,用户数据报协议)传输;使用端口69建立控制通道,因此,需要在安全策略中指定服务为tftp(UDP:69);TFTP跟FTP一样动态协商数据通道端口,但不是ASPF默认支持的协议,需要自定义配置。

acl 3000
  rule permit udp destination-port eq 69
  quit
firewall interzone trust untrust
  detect user-defined 3000 outbound
  quit

其中,detect user-defined 3000 outbound命令中,outbound表示客户端从高优先级的安全区域访问位于低优先级的安全区域的服务器,反之则为inbound。

Telnet、FTP、TFTP存在安全风险,建议使用SSH协议执行远程登录和文件传送。SSH是一种在不安全的网络环境中,通过加密机制和认证机制,实现安全的远程访问以及文件传送等业务的网络安全协议。STelnet是华为对SSH远程登录功能的叫法,以突出其相对于Telnet的安全性。SCP(SecureCopy,安全复制)协议和SFTP(Secure File Transfer Protocol,安全文件传送协议)都是基于SSH协议的文件传送协议。

SSH默认使用TCP端口22建立连接,也支持自定义端口,表1-8的安全策略以默认端口为例。

SNMP是使用最广泛的网络管理协议。网管软件作为SNMP管理者,向被管设备中的SNMP代理发出管理操作的请求。被管设备在检测到异常时,也会通过SNMP代理主动向SNMP管理者发送Trap信息。也就是说,网管软件和被管设备都会主动发起连接,如图1-8所示。

因此,用户需要开放两条安全策略,让网管软件可以主动管理设备,设备可以主动向网管软件发送Trap信息,设备上需要配置的安全策略如表1-9所示。

NETCONF是一种基于XML(eXtensible Markup Language,可扩展标记语言)的网络管理协议,它提供了一种对网络设备进行配置和管理的可编程方法。

图1-9是NETCONF的典型组网。网管软件作为NETCONF客户端,向作为NETCONF服务器的设备发起连接请求,建立SSH连接,NETCONF会话就承载在SSH连接之上。RFC 6242规定,NETCONF服务器(被管设备)默认使用TCP 830端口接收NETCONF客户端的SSH连接请求。多数网络设备都提供了修改NETCONF over SSH的端口的方法,用户需要根据网络设备的配置,确定开放哪些端口。

另外,在某些场景中,被管设备需要主动向网管软件注册,即call-home。此时,被管设备主动向网管软件发起连接,需要开放相应方向的安全策略。NETCONF的安全策略示例如表1-10所示。

NETCONF使用不同传输协议时,采用不同的通信端口。当网络中有异构设备组网时,请务必确认其与网管软件(NETCONF客户端)通信的端口。

1.2.2 为路由协议开放安全策略

不同于路由器和交换机产品,默认情况下,防火墙的路由协议(包括OSPF和BGP)的单播报文受安全策略控制,用户需要为它们的单播报文配置安全策略。如果想要快速接入网络,用户也可以使用undo firewall packet-filter basic-protocol enable命令取消这个控制。不同型号、不同版本的防火墙产品,其基础协议控制开关的默认情况不同,控制的协议种类也不同。具体情况请参考产品文档。

OSPF邻接关系的建立过程如图1-10所示。

OSPF根据链路层协议类型,将网络分为4种类型。在不同类型网络中,建立邻接关系的过程中发送OSPF报文的方式也不同,如表1-11所示。对某一种网络类型来说,只要建立邻接关系的任何一个环节使用了单播报文,就需要开放安全策略。因此,当网络类型是Broadcast、NBMA(Non-Broadcast Multiple Access,非广播多路访问)和P2MP(Point-to-Multipoint,点到多点)时,都需要开放安全策略。

考虑到OSPF邻接关系建立的过程中,邻接双方都需要主动发出OSPF报文,因此,用户需要开放双向安全策略,如表1-12所示。在防火墙参与路由计算的场景下,安全策略的源/目的安全区域是local区域(设备自身)和接口所连接的区域。OSPFv3跟OSPF类似,两者的协议号都是89。

如果未配置安全策略,或者安全策略配置错误,则不能成功交换DD报文、不能建立OSPF邻接关系,邻接状态将停留在ExStart状态。

BGP的运行是通过消息驱动的,共有Open、Update、Notification、Keepalive和Route-refresh等5种消息类型。邻接设备之间首先建立TCP连接,然后通过Open消息建立BGP对等体之间的连接关系,并通过Keepalive消息确认和保持连接的有效性。对等体之间通过Update、Notification和Route refresh消息交换路由信息、错误信息和路由刷新能力信息。

BGP所有消息交互都使用单播报文,需要开放双向安全策略,如表1-13所示。BGP使用TCP端口179。

1.2.3 为DHCP开放安全策略

同路由协议一样,DHCP默认情况下也受安全策略控制。如果想要快速接入网络,用户也可以使用undo firewall packet-filter basic-protocol enable命令取消这个控制。

DHCP组网中有3种角色:DHCP客户端、DHCP服务器和DHCP中继。当DHCP客户端和DHCP服务器位于不同网段时,需要部署DHCP中继。在不同的组网场景中,DHCP报文交互的流程略有不同,下面分别来看。

在同网段无DHCP中继场景中,DHCP报文交互过程如图1-11所示。

DHCP报文采用UDP封装。以DHCP客户端首次接入网络为例,其IP地址分配流程如下。

(1)DHCP Discover

DHCP客户端以广播方式发送DHCP Discover报文,源/目的地址分别为0.0.0.0和255.255.255.255,源/目的端口分别为68和67。DHCP客户端首次接入网络时,还没有获得过IP地址,也不知道DHCP服务器的地址,因此只能采用广播方式。在DHCP Discover报文中有一个Flag标志位,决定服务器以单播或广播方式发送响应报文,一般是单播方式(Broadcast Flag=0)。

(2)DHCP Offer

DHCP服务器收到DHCP Discover报文后,选择一个可用地址,通过DHCP Offer单播报文发送给DHCP客户端。此时报文中封装的目的IP地址是DHCP服务器提议分配给DHCP客户端的IP地址。

(3)DHCP Request

DHCP客户端仍然以广播方式发送DHCP Request报文,向选中的DHCP服务器请求使用的IP地址。报文中带有其选择的DHCP服务器标识符。当网络中有多个DHCP服务器时,广播DHCP Request可以通知所有DHCP服务器,未被选中的DHCP服务器也就可以更新提议的IP地址状态了。

(4)DHCP Ack

DHCP服务器通过DHCP Ack单播报文通知DHCP客户端,确认地址分配。

如果DHCP客户端非首次接入网络,可以申请曾经使用过的IP地址,则地址分配过程只有DHCP Request和DHCP Ack两个阶段。DHCP Request报文的源地址为当前IP地址。

当租期更新定时器到期时(租期的一半,即1800秒),DHCP客户端向DHCP服务器发送单播报文,申请更新租期。如果DHCP客户端不再使用当前地址,则发送DHCP Release单播报文,释放该IP地址。

在这个场景中,DHCP服务器和DHCP客户端都可能会主动发送单播报文。防火墙作为DHCP服务器时,安全策略配置示例如表1-14所示。

DHCP客户端的广播报文不能穿越不同网段。当网络中有多个网段时,通常使用DHCP中继来解决这个问题,其报文交互过程如图1-12所示。

在地址分配阶段,DHCP客户端广播DHCP Discover和DHCP Request请求。DHCP中继接收到报文以后,修改报文的源/目的地址为出接口地址和DHCP服务器的地址,并填充IP中继地址,然后单播转发给DHCP服务器。DHCP服务器向DHCP中继单播发送DHCP Offer和DHCP Ack报文。DHCP中继与DHCP服务器通信时,源/目的端口都使用UDP端口67。

DHCP客户端在地址分配阶段已经获得DHCP服务器的地址。在后续的租期更新和地址释放过程中,DHCP客户端以单播报文直接向DHCP服务器发起连接,不需要DHCP中继代理。防火墙作为DHCP中继时,安全策略配置如表1-15所示。

1.3 在安全策略中应用对象

在防火墙产品中,不仅配置安全策略会使用IP地址、服务等作为匹配条件,配置NAT(Network Address Translation,网络地址转换)策略、代理策略、认证策略、策略路由等,都会使用它们。为了简化配置操作,华为防火墙产品中引入了“对象”的概念。对象是通用元素(如IP地址、服务、应用等)的集合。创建了集合形式的对象,用户就可以在各种业务策略中直接引用该对象,而不需要一次次重复输入或选择。当需要修改多个业务策略的适用范围时,只需要修改其引用的对象,就可以快速完成多个策略的调整。使用对象,可以显著降低管理成本,提高维护效率。

1.3.1 地址对象和地址组

IP地址是最常用的安全策略匹配条件,地址对象和地址组是最广泛使用的对象。通常,在创建对象时,要将具有相同特征、需要相同访问权限的对象加入同一个集合。例如,所有的数据库服务器部署在同一个安全区域、占用一个连续的IP地址段,则可以将这个IP地址段加入一个地址对象,并在安全策略中引用此地址对象。

地址对象是地址的集合,可以包含一个或多个IPv4地址、IPv6地址、MAC(Medium Access Control,介质访问控制)地址。地址对象可以被各种业务策略直接引用,也可以加入一个或多个地址组中。

# 创建一个名为“Research_Dept”的地址对象,并指定起止范围。

ip address-set Research_Dept type object   //object表示地址对象
 address 10 range 192.168.1.1 192.168.1.120      //指定IPv4地址段的起止地址

使用起止地址指定地址对象范围是最常用的做法。用户也可以使用通配符或掩码、掩码长度来指定地址范围。

# 使用通配符指定地址范围。通配符为点分十进制,其二进制形式中的“0”位是匹配值,“1”位表示不需要关注。例如,192.168.1.1/0.0.0.255表示所有“192.168.1.*”形式的地址。

ip address-set Research_Dept type object
 address 11 192.168.1.1 0.0.0.255 //使用通配符指定地址范围

# 使用掩码指定地址范围。掩码为点分十进制,其二进制形式中的“1”位是匹配值,“0”位表示不需要关注。例如,192.168.1.1/255.255.255.0表示所有“192.168.1.*”形式的地址。

ip address-set Research_Dept type object
 address 11 192.168.1.1 mask 255.255.255.0       //使用掩码指定地址范围

# 使用掩码长度指定地址范围。

ip address-set Research_Dept type object
 address 11 192.168.1.1 mask 24     //使用掩码长度指定地址范围

在地址对象中添加MAC地址时,其格式可以为XXXX-XXXX-XXXX、XX:XX:XX:XX:XX:XX或XX-XX-XX-XX-XX-XX(其中X是1位十六进制数)。

ip address-set Research_Dept type object
 address 12 68-05-CA-90-A1-C9

地址组也是地址的集合。跟地址对象不同的是,地址组中不仅可以添加各种地址,也可以添加地址对象、地址组。这样,就可以更加方便地管理各种地址对象和地址组。

向地址组中添加地址的操作,跟向地址对象中添加地址的方法是一样的。下面重点介绍如何向地址组中添加地址对象和地址组。

ip address-set R&D_Dept type group  //group表示地址组
  address address-set Research_Dept    //将地址对象Research_Dept加入地址组R&D_Dept
  address address-set Test_Dept
ip address-set Product type group
  address address-set R&D_Dept     //将地址组R&D_Dept加入地址组Product

下面以禁止研发部R&D_Dept访问DMZ的财务服务为例,展示地址组的应用方法。

security-policy
  rule name “Deny R&D_Dept to Finance”
    source-zone trust
    destination-zone dmz
    source-address address-set R&D_Dept //以地址组方式指定源地址
        service FinanceService              //自定义的财务服务
    action deny

在安全策略中应用地址组的时候,还可以根据业务需要,排除该地址组中的某些特殊IP地址。以禁止研发部访问DMZ的财务服务为例,地址组R&D_Dept(192.168.1.1/24)中的192.168.1.66不受此安全策略控制,则可以在前述配置中排除该IP地址。

security-policy
  rule name “Deny R&D_Dept to Finance”
   source-zone trust
   destination-zone dmz
   source-address address-set R&D_Dept
                                  //以地址集方式指定源地址(192.168.1.1/24)
   source-address-exclude 192.168.1.66 32       //排除此地址
   service FinanceService                       //自定义财务服务
   action deny

1.3.2 地区和地区组

地区是公网IP地址在地理位置上的映射,地区组是地区的集合,因此,地区和地区组在本质上是IP地址组。使用地区和地区组,可以根据地理位置配置安全策略。例如,某企业对外提供Web服务,出于安全考虑,不允许A国家的用户访问。此时,可以配置源地址为“A国家”、动作为“禁止”的安全策略,禁止A国家的用户访问该Web服务。

为了简化用户操作,华为防火墙提供了地区识别特征库,即预定义地区。目前,国内的预定义地区支持到省和城市级别,国外支持到国家(地区)级别。

地区识别特征库是按照国家(地区)划分的IP地址组,由华为收集和维护,可以通过升级中心定期更新或者手动更新。由于地区识别特征库的更新有一定的滞后性,防火墙还提供了3种自定义配置手段。自定义配置的优先级高于预定义地区。

自定义地区:手动创建新的地区,并指定符合条件的IP地址。

向预定义地区中添加IP地址:当发现某地区中缺少某IP地址时,可以向预定义地区中添加。

排除预定义地区中的IP地址:当发现某地区中的IP地址归属错误时,可以将该地址加入正确的地区或者未知区域,以排除该地址。

自定义地区是孤立的,跟预定义地区没有归属关系。私网IP地址用于本地局域网,不属于任何地理意义上的国家(地区),默认归属为“未知区域”。如果需要从地区维度来管理和展示本地局域网的业务,可以为局域网的私网IP地址创建自定义地区。

# 创建自定义地区HangZhouBranch,并添加本地局域网地址段。

location
 geo-location user-defined HangZhouBranch
  description Hangzhou branch
  add address 10.10.1.0 mask 24

IP地址的缺失可能会影响正常的业务访问。例如,管理员配置了允许A地区访问Web服务的安全策略,结果A地区的某个PC无法访问Web服务。如果安全策略配置正确,说明此PC的IP地址错误地划入了其他地区,此时可以将此IP地址加入A地区。

# 在预定义地区HangZhou中添加IP地址段10.20.20.20~10.20.20.30。

location
 geo-location pre-defined HangZhou
  add address range 10.20.20.20 10.20.20.30

排除IP地址是通过在其他地区中添加IP地址来实现的,不能通过命令在当前地区中直接删除IP地址。如果用户清楚这些IP地址所属的真实地区,可以参照上一步,将这些IP地址添加到对应地区。如果不清楚,可以将这些IP地址添加到“未知区域”。

# 排除预定义地区HangZhou中的IP地址段10.10.10.1~10.10.10.20到未知区域。

location
 geo-location pre-defined unknown-zone
  add address range 10.10.10.1 10.10.10.20

下面以禁止某些国家(地区)访问DMZ的HTTPS服务为例,展示地区组的应用方法。

# 创建地区组Five。在命令行中添加国家(地区)时可以使用ISO标准定义的两位国家(地区)代码,或者直接输入国家(地区)名称。

location
 geo-location-set Five
  add geo-location AU          //以两位国家(地区)代码形式添加
  add geo-location CA
  add geo-location NewZealand  //直接输入国家(地区)名称,注意大小写并去掉空格
  add geo-location UnitedKingdom
  add geo-location UnitedStates

由于国家(地区)很多,且命令行严格限制了国家(地区)的输入规范,使用命令行配置地区组不方便,推荐在Web界面上操作,如图1-13所示。在“可选”区域的搜索框输入国家(地区)名,可以快速定位并选择该国家(地区)。

# 配置安全策略,禁止源地址为Five的流量访问HTTPS服务。

security-policy
  rule name “Deny Five”
    source-zone untrust
    destination-zone dmz
    source-address geo-location Five    //以地区组方式指定源地址
    service protocol https
    action deny

1.3.3 域名组

顾名思义,域名组是域名的集合。域名组的本质也是IP地址组。

在动态网络环境中,IP地址不断变化,网络管理员很难及时跟踪到IP地址的变化并更新安全策略。在这种情况下,可以使用域名组代替IP地址,作为安全策略的匹配条件。常见的场景如下。

① 放行或阻断所有去往指定域名的流量。例如,数据中心的Web服务器www.example.com要访问图片服务器img.hi4example.com。

② 阻断去往某个指定域名的流量,但是放行去往其子域名的流量。例如,禁止员工访问salesforce.com,但是允许访问公司站点huawei.my.salesforce.com。

③ 禁止员工访问外网,但是允许软件自动更新。例如,Windows系统要经常从WSUS(Windows Server Update Services,Windows Server更新服务)服务器下载补丁,杀毒软件要定期更新病毒库。

客户端以域名形式访问指定服务,首先需要向DNS服务器发起DNS请求。防火墙从DNS服务器的响应报文中解析出域名和IP地址的映射关系,确认该域名归属于某域名组,并记录到域名映射表中。在客户端向服务器发起业务访问时,防火墙根据域名映射表检查安全策略。在这种场景下,客户端的DNS请求报文必须经过防火墙,如图1-14所示。

如果客户端的DNS请求不经过防火墙,防火墙无法从DNS响应报文中解析域名和IP地址的映射关系。此时,需要在防火墙上配置DNS服务器,由防火墙主动发起DNS请求来获得域名映射关系。当TTL小于7分钟时,防火墙每隔3分钟主动发起一次DNS请求,以刷新域名映射表。受地理位置、时区、负载均衡配置等的影响,不同DNS服务器的域名解析结果可能不同。因此,在防火墙上配置的DNS服务器,必须与客户端使用的DNS服务器保持一致。

域名映射表存储在防火墙的内存中,当防火墙重启时,会清空域名映射表。此时,客户端已经记录了DNS缓存,不会再次发起DNS请求,防火墙也就不能再次获得域名映射表。在这种情况下,也需要在防火墙上配置DNS服务器。

考虑到防火墙重启的可能性,不管客户端DNS请求是否经过防火墙,都建议在防火墙上配置DNS服务器。

以Windows系统更新场景为例,域名组的完整配置包括3个步骤。

步骤一,配置域名组。Windows系统更新使用的域名较多,具体请以微软官方文档为准,此处仅为示例,不保证域名列表完整。

system-view
 domain-set name WindowsUpdate
  description WindowsUpdate
  add domain windowsupdate.microsoft.com
  add domain *.windowsupdate.microsoft.com
  add domain *.update.microsoft.com
  add domain *.windowsupdate.com
  add domain download.microsoft.com
  add domain wustat.windows.com

域名组中添加的域名信息,可以是具体的域名(download.example.com),也可以使用通配符(*.example.com)。以下域名都可以匹配*.example.com。

如果使用通配符,最多只能包含1个“*”且必须以“*”开头,其格式只能是表1-16支持的类型。

步骤二,在防火墙上配置DNS服务器,该DNS服务器必须与客户端使用的DNS服务器保持一致,此处以114DNS为例。

system-view
  dns resolve
  dns server 114.114.114.114
  dns server 114.114.115.115

步骤三,在安全策略中引用域名组的配置如下。注意,请务必为DNS请求报文配置安全策略。

security-policy
 rule name “Allow Windows update”
  source-zone trust
  destination-zone untrust
  source-address 10.1.1.10 24
  destinatoin-address domain-set WindowsUpdate   //引用已创建的域名组
  action permit
 rule-name “Allow DNS”
  source-zone trust    //允许客户端DNS请求经过防火墙
  source-zone local    //允许防火墙发送DNS请求报文
  destination-zone untrust     //DNS服务器所在区域
  destination-address address-set 114DNS         //目的地址是114DNS的地址
  service dns
  action permit

配置完成后,从客户端ping域名组中的域名,触发DNS解析,然后使用display domain-set verbose domain-name命令查看解析出来的IP地址。

<sysname> display domain-set verbose WindowsUpdate Domain-set: WindowsUpdate
Description: WindowsUpdate
Reference number(s): 1
Item number(s): 6
Item(s):
 Domain: windowsupdate.microsoft.com
 ID : 0
 Total IP Address:1
  IP Address: 52.185.71.28
  TTL : 38400 seconds
  Left Time : 38400 seconds
  Hit Times : 1
 Domain: *.windowsupdate.microsoft.com
 ID : 1
 Total IP Address: 0
 Domain: *.update.microsoft.com
 ID : 2
 Total IP Address: 0
 Domain: *.windowsupdate.com
 ID : 3
 Total IP Address: 0
 Domain: download.microsoft.com
 ID : 4
 Total IP Address: 0
 Domain: wustat.windows.com
 ID : 5
 Total IP Address: 0

域名解析失败的常见原因如下。

① 客户端的DNS请求不经过防火墙。请在防火墙上配置相同的DNS服务器。

② 客户端已有DNS缓存,未主动发起DNS请求。请在客户端或者防火墙上清除DNS缓存,命令如下:Windows客户端上的命令为ipconfig/flushdns;防火墙上的命令为reset dns dynamic-host。

③ 客户端的Hosts文件中配置了本地域名解析。请删除本地域名。

④ 域名组中指定的域名为别名。早期版本的防火墙仅支持type A,当域名组中使用别名时,DNS响应报文为type CNAME,防火墙不能解析出最终的IP地址。最新版本的防火墙同时支持type A和type CNAME,请将防火墙升级到最新版本。

1.3.4 用户和用户组

用户是访问网络资源的主体,表示“谁”在进行访问,是网络访问行为的重要标识,自然也是防火墙进行网络访问控制的重要维度。

在防火墙上部署用户管理与认证,可以将网络流量的IP地址识别为用户,并将用户与IP地址的对应关系记录在在线用户表中。基于用户配置安全策略,本质上就是针对该用户对应的IP地址应用安全策略。基于用户的安全策略可以提高访问控制的易用性和准确性:用户和用户组反映了真实的组织结构,基于用户的访问控制符合真实的业务需求,易于理解,提高了策略的易用性;在线用户表记录了用户当前登录状态下使用的IP地址,避免了IP地址动态变化场景下的访问控制问题,以不变的用户应对变化的IP地址。

防火墙中的用户组织结构是现实中的组织结构的映射,是基于用户进行访问控制的基础。用户组织结构有两种维度,体现为两种用户对象,如表1-17所示。

用户组/用户是“纵向”的组织结构,体现了用户的所属关系;安全组是“横向”的逻辑结构,体现了安全等级和业务访问权限。安全组有两种典型的应用场景:基于项目维度,组建跨部门的群组,可以把不同部门的用户划分到同一个安全组,从新的管理维度来设置访问控制策略;企业已经采用第三方认证服务器,且启用了横向群组(如AD服务器上的安全组、SUN ONE LDAP服务器上的静态组和动态组),为了基于这些群组配置策略,管理员需要创建安全组,与认证服务器上的组织结构保持一致。

有关用户组/用户、安全组的具体原理和配置方法,请参考产品文档。

在安全策略中引用用户组/用户、安全组作为安全策略的匹配条件,用户获得的访问权限是其所属用户组和安全组的权限的并集。值得注意的是,在安全策略中引用用户组/用户和安全组,组内用户的策略继承关系略有区别。

用户组/用户:用户组内的直属用户、所有下级子用户组内的用户都继承该用户组的安全策略和访问权限。

安全组:只有安全组内的直属用户继承该安全组的安全策略和访问权限,安全组内的子安全组的用户不继承上级安全组的安全策略和访问权限。

但是,当需要为某个用户组/用户配置继承策略之外的特殊权限时,用户组/用户策略的继承关系将失去意义。以图1-15为例,假设“研发部”所有员工都拥有相同的基础权限(资源A),同时“研发1部”还拥有特有权限(资源B)。

在这个场景中,针对研发部的基础权限,需要配置1条安全策略A,允许研发部员工访问资源A。那么针对研发1部的特有权限,这条安全策略B应该怎么配置呢?

首先,根据安全策略的匹配规则,针对研发1部的安全策略B必须置于安全策略A之前。否则,研发1部用户的访问请求会命中安全策略A,并不再继续向下匹配,因此只能获得访问资源A的权限。

其次,安全策略B中必须同时指定资源A和资源B。同样是因为安全策略的匹配规则,研发1部用户的访问请求命中安全策略B,并不再向下匹配,只能获得安全策略B指定的访问权限。也就是说,在这种场景下,子组无法继承父组的访问权限。

正确的安全策略配置方法如表1-18所示。

1.3.5 服务和服务组

服务是一个或多个应用协议的集合,由协议类型、源端口、目的端口等信息来指定。服务组是服务的集合,服务组的成员可以是服务,也可以是服务组。

防火墙可以根据服务和服务组识别常用的应用协议。如果数据流量的协议类型和端口号符合服务的条件,就会被认为是指定应用协议的流量。在安全策略中,指定服务或服务组是非常常见和必要的。

防火墙默认提供了常见的服务,即预定义服务,例如HTTP、FTP、Telnet、DNS等。在现实网络中,如果协议使用端口与预定义服务的端口不同,需要创建自定义服务。例如,预定义服务ILS(Internet Locator Server,互联网定位器服务器)的端口号为1002,但是某些旧版软件可能使用端口389来接收ILS报文。此时,用户需要自定义一个端口号为389的服务,才能在安全策略中引用。

system-view
 ip service-set new_ils type object          //object表示自定义服务
  service protocol tcp destination-port 389  //以目的端口指定ILS服务

对于TCP、UDP和SCTP(Stream Control Transmission Protocol,流控制传输协议)服务,可以通过源端口和目的端口来定义,通常只定义目的端口即可。

对于ICMP和ICMPv6服务,需要使用类型号和消息码来定义。ICMP服务常用于ping和Tracert,一般直接使用预定义的ICMP服务即可。但是,ICMP服务也经常被攻击者用来窥测网络或建立隐蔽通道。因此,如果用户对安全性有更高的要求,可以自定义服务,仅开放特定类型的ICMP报文。

以ping为例,如图1-16所示,ping需要使用两种类型的ICMP报文:Echo Request(Type 8)和Echo Reply(Type 0)。源端连续发送几个Echo Request报文,目的端收到之后,回送响应报文Echo Reply报文。如果在超时时间之内,响应报文到达源端,说明目的端可达。防火墙收到源端发出的Echo Request报文后,创建会话并转发报文,目的端返回的Echo Reply报文命中会话表转发。

在这种情况下,用户可以自定义一个ICMP Echo Request服务,用于安全策略。关于ICMP类型和消息代码更详细的说明可以参考RFC792。

system-view
 ip service-set ICMP_Echo_Request type object
  service protocol icmp icmp-type 8   //自定义ICMP type 8

trust区域的PC要ping untrust区域的交换机,安全策略配置如下。

security-policy
 rule name “Allow Ping”
  source-zone trust
  destination-zone untrust
  source-address 10.1.1.10 24
  destinatoin-address 10.1.2.10 24
  service ICMP_Echo_Request
  action permit

服务组中可以添加预定义服务(动态端口除外)和自定义服务,也可以添加服务组,其配置命令相同。

system-view
 ip service-set MgtProt4 type group      //group表示自定义服务组
  service service-set ftp                //添加预定义服务
  service service-set ICMP_Echo_Request //添加自定义服务
 ip service-set MgtProt type group
  service service-set MgtProt4          //添加服务组

1.3.6 应用和应用组

经过多年的发展,互联网已经渗透到工作和生活的方方面面,互联网上承载的服务已经发生了深刻的变化,丰富多彩的应用成为互联网的主流。面对层出不穷的应用,如何对其进行精细化管控,是管理员面临的最大问题,而管控的前提是首先识别出各类应用。

前一节提到,防火墙可以根据服务和服务组识别常用的应用协议。不过,识别服务依赖端口识别技术,其主要依据的是端口号,因此只能用于识别FTP、HTTP等基础协议。然而,大量应用承载在HTTP之上,仅识别出服务已经不能解决应用管控的问题了。

防火墙采用业务感知技术来精确识别应用。既然传统的端口识别技术只检测报文五元组信息,不能识别应用,那业务感知技术就费点力,继续检测报文的应用层数据。不同的应用软件发出的流量自有其特征,这些特征可能是特定的命令字或者特定的比特序列。这些特征就相当于应用软件的“指纹”,只要我们提取了能够唯一确认各种应用软件的指纹,建立一个指纹库,就可以用来跟流量进行比对。

华为安全能力中心采用业务感知技术,分析并提取大量互联网应用的流量特征,形成了超过6000种应用的特征库,分为5个大类57个小类。用户可以访问华为安全中心网站,在应用百科中查询当前的应用识别能力。在应用百科中,可以按照类别、子类别、标签、数据传输方式和风险级别筛选应用,也可以直接输入应用名称搜索。针对每一个应用,应用识别特征库还提供了多维度的描述信息,可以帮助用户制定有针对性的管控策略。

应用识别特征库加载到防火墙上,即为预定义应用。互联网上新的应用层出不穷,已有应用的特征也会发生变化,所以必须定期升级应用识别特征库,才能够保证更好的识别效果。

应用组是应用的集合,是为了管理方便而引入的概念。用户可以为具有相同访问策略的应用创建一个应用组,并在安全策略中引用。以创建一个“网盘”应用组为例,可以选择基于列表添加应用,或者基于树结构添加应用,如图1-17所示。

(1)基于列表添加应用

调出的界面如图1-18所示,用户可以根据类别、子类别、标签、数据传输方式和风险级别筛选应用,也可以直接输入应用名称来模糊查询。

(2)基于树结构添加应用

树结构是一种新的应用组织形式,如图1-19所示。用户可以直接按照应用类别和子类别的树形结构选择应用,也可以先按照标签/软件筛选出一类应用,再使用模糊搜索。

在安全策略中引用一组应用是常规操作,可以根据应用类别、子类别、标签、软件、自定义的应用组来选择应用,其操作界面和操作方法与基于树结构向应用组中添加应用类似。唯一不同的是,在安全策略中,用户可以直接选择已经创建的应用组。

在安全策略中引用单个应用时,需要考虑该应用的依赖应用和关联应用。

依赖应用是该应用的底层应用,相应的,该应用为其依赖应用的上层应用。在应用识别过程中,防火墙首先识别出依赖应用,然后才能识别出上层应用。在安全策略检查过程中,防火墙首先根据依赖应用查找安全策略。仅当依赖应用匹配的安全策略动作为允许时,才会继续识别上层应用、根据上层应用查找安全策略。因此,当需要放行某个应用时,需要同步放行该应用的依赖应用。

关联应用是与该应用具有关联关系的其他应用,通常为同一个公司开发的多款相近应用。它们具有相近的流量特征,当需要阻断某个应用时,需要在安全策略中同步阻断关联应用,以确保该应用被完全阻断。

在安全策略中引用单个应用时,依赖应用和关联应用的同步配置要求如表1-19所示,请关注防火墙提供的提示信息。

图1-20以“允许访问百度网盘,并执行反病毒检查和文件过滤”为例,展示防火墙的提示信息和配置界面。在安全策略中,设置应用为“百度网盘”,动作为“允许”,反病毒和文件过滤配置文件选择默认配置文件“default”。在配置下发的时候,防火墙会校验配置,并提示用户选择依赖应用。

单击提示信息中的“配置”链接,可以看到百度网盘的依赖应用包括HTTP、HTTPS、SSL,如图1-21所示。选择所有依赖应用,安全策略配置可以正常下发。

在安全策略中配置完成以后,需要向内容安全引擎发送流量进行应用识别。防火墙需要获取多个报文才能识别出应用。因此,在应用识别完成之前,防火墙不能确定命中的安全策略,即处于策略未决状态。防火墙会先根据首包匹配安全策略中应用以外的条件(主要是五元组),暂时放行流量并建立一条会话,其中应用信息保留为空。在应用识别完成后,重新匹配安全策略,并刷新会话信息。

1.3.7 URL分类

URL分类是根据网页内容划分URL地址类型的结果。华为采用机器学习和人工智能技术,扫描海量网页内容,划分URL地址类型。利用URL分类,可以控制用户的上网行为。

方法1:在安全策略中添加URL过滤配置文件,可以利用URL分类、URL黑白名单等功能,精确地控制网站访问。关于URL过滤的详细内容,请参考产品文档。

方法2:在安全策略中应用URL分类,实现简单的、基于URL分类的访问控制。在安全策略中应用URL分类以后,可以基于URL分类指定内容安全配置文件。例如,只为访问高风险URL分类的流量附加反病毒检查和文件过滤。

下面展示两个在安全策略中应用URL分类的配置实例。

场景1:限制访问特定类型的网站。

假设防火墙上已经配置了一条安全策略inside-out,允许所有人访问互联网,未做任何限制,如图1-22所示。

现在要禁止公司员工在工作期间访问社交网络和求职招聘类的网站。用户可以复制安全策略inside-out,修改其名称,指定URL分类,并将动作修改为禁止,如图1-23所示。

复制完成后,需要把inside-out-exclude调整到inside-out前面,如图1-24所示。

场景2:仅特定员工可以访问特定类型的网站。

根据某公司的信息安全政策,普通员工可以访问常用网站,并使用URL配置文件设置了详细的访问控制。同时,为了工作需要,允许IT员工访问IT相关网站。在这个场景中,用户需要配置两条安全策略,如图1-25所示。

策略1:允许IT员工(用户it)访问URL分类为“IT相关”的网站。

策略2:允许普通员工(不指定用户)访问常用网站。常用网站的范围由内容安全部分的URL过滤配置文件指定,其中不包含“IT相关”URL分类。

注意策略1必须位于策略2的前面。因为安全策略是按照顺序从上向下依次匹配的,当IT员工试图访问IT相关网站时,命中策略1并被允许访问。当其他员工(普通员工)试图访问IT相关网站时,命中策略2,并继续检查URL过滤配置文件。因为允许访问的常用网站范围中不包含“IT相关”URL分类,其他员工的访问请求被阻断。

防火墙需要先识别出HTTP应用,再识别URL分类,然后才能将识别结果反馈给安全策略模块去匹配。在识别出URL分类之前,此安全策略处于未决状态。防火墙会先根据URL分类以外的匹配条件建立一个会话,放行流量并继续检测。识别出URL分类之后,流量重新匹配安全策略。对于采用HTTPS的网站,需要配合SSL解密功能使用。

1.4 安全策略的最佳实践

防火墙的管理员面临着巨大的挑战。业务要求网络提供快速的连接,日益活跃的网络犯罪威胁着业务的安全,管理员需要在性能与安全之间寻求平衡。安全策略的配置和管理,无疑是一个关键的问题。根据咨询公司Gartner的报告,99%的防火墙问题是由误配置导致的。遵循这些最佳实践,不仅是为了保证正确配置安全策略,还可以为后续的管理和维护提供方便。

1.4.1 建立完善的安全策略管理流程

安全策略管理流程是信息安全策略的组成部分。它并不是具体的技术指导,而是保证技术为业务服务的管理方法。开始的时候,每一台防火墙的安全策略都比较简单。然而,新的服务、新的设备,都可能需要新的安全策略。安全策略列表日益庞大,变更和管理的复杂度都大幅提升。组织需要建立一个审核和测试所有策略申请的流程,并严格执行。策略管理流程可以根据业务需要来微调,通常应该考虑以下内容,以确保新增和修改是合理的、有据可查的。

① 业务方申请人发起新增安全策略请求,说明需要添加什么样的安全策略。业务主管评估安全策略的必要性以后,提交给安全团队。通常,业务方要提供如下信息:访问哪些服务、端口或应用;从哪里访问(通常是指某个子网,如果是从服务器侧发起访问,需要指定具体的IP地址);新增安全策略的用途和目的是什么;安全策略的有效期为多久(未注明则为长期策略)。

② 安全团队评估业务请求的风险,确定具体的安全策略实施方案。必要时,请跟业务方沟通。跟业务主管或申请人就新增安全策略申请进行沟通,可以帮助用户确认新的安全策略是否满足业务需求,也让业务方了解安全策略的复杂性和风险。

③ 部署和验证,确认安全策略达到了预期的效果。应请业务方和数据所有者(被访问的目的服务或应用)等关键角色参与验证,以确认配置是否正确,保证没有引入错误的安全策略。通过充分的验证,可以及时发现问题,避免问题长时间累积后难以处理。

④ 所有安全策略都应该记录在案。某些行业规范要求记录所有的申请和审批文档,并要求定期审计安全策略。虽然从执行上来说略显烦琐,但是长远来看,这种做法是合理且高效的。安全团队中的任何人都可以通过查看记录来了解每条安全策略的意图,并建立起安全策略与申请流程之间的关联。这对于审计和问题定位都大有裨益。建议安全策略记录至少要包含以下内容:业务方提供的安全策略申请的内容;业务方申请人和审批人;添加的日期和时间;安全团队的具体操作人。

如果组织具有完善的IT系统,则上述内容通常会记录在业务请求流程中,可以大大简化安全策略记录的工作。IT流程与防火墙的具体配置相结合,可以让策略管理工作更简单。例如,在安全策略的描述字段中记录创建时间、操作人或IT流程的编号,可以建立起安全策略和申请流程之间的联系,便于追溯和审计。

此外,网络变动也需要提前通知安全团队,以提前评估影响,同步制定安全策略调整方案。

1.4.2 使用安全区域划分网络

安全区域指的是具有类似安全要求和安全等级的子网。虽然安全区域是防火墙产品的一个特有概念,但是其根源于网络分段设计思想,在数据通信网络中具有普遍意义。网络分段是指将以太网按照一定的规则划分为若干个子网络(子网),不同子网之间互相隔离。数据报文仅在约定的子网内传播,而不是发送给网络中的所有设备。网络分段提升了网络性能,并提供了一定的安全性。防火墙部署在分段网络中,自然继承了网络分段的思想,并使用安全区域来增强其安全性。

防火墙默认提供untrust区域、trust区域、DMZ 3个安全区域,通常分别用于连接外网、内网和具有中间状态的DMZ。默认情况下,同一个安全区域内的设备可以互相访问,不同安全区域内的设备互访需要开放安全策略。这种设计在性能和安全性之间取得了良好的平衡。如果网络被入侵,攻击者只能访问同一个安全区域内的资源。攻击者必须突破安全区域和安全策略的控制,才能访问其他资源。这就把损失控制在一个比较小的范围内。

合理规划安全区域和部署资源,有助于提高网络的安全性和韧性。一些原则性的建议如下。

下面将通过图1-26所示的例子来解释安全区域划分和资源部署的最佳实践。

在这个例子中,防火墙把网络划分为4个安全区域。除了默认的trust区域、DMZ和untrust区域,新增了一个isolated区域。箭头表示允许的流量方向。

这样,即使面向互联网的服务器受到攻击,也能把威胁控制在DMZ内,把损害降到最低。

1.4.3 遵循最小授权原则

防火墙默认禁止所有的域间流量,所有未被明确允许的流量都被禁止。这是在防火墙上落实最小授权原则的基础。在此基础上,仅为合法流量开放安全策略,可以有效减小攻击面。

第一,为合法流量开放安全策略时,请谨慎使用any作为匹配条件,建议设置尽可能精确的匹配条件。所谓精确的匹配条件,包括两个方面:限制到具体的源/目的IP地址、服务;设置尽可能多的匹配条件,如用户、应用等。

如果组织需要对互联网开放某些服务(例如Web服务),则安全策略的源IP地址设置为any是合理的,其目的IP地址必须明确指定为对外开放的服务器/服务器组的地址,同时指定服务或端口。如果开放所有服务或端口,攻击者就可能利用字典攻击来实施暴力破解。

对于非公开服务,必须同时限定源IP地址范围。不能允许任意源IP地址访问数据库服务器等关键信息资产、服务器的管理服务(如SSH、RDP远程桌面服务)等敏感业务。建议同时指定可访问此类服务的用户。

应用识别是防火墙的关键能力,可以实现精细化的管控。分析网络中的流量,识别出合法应用是一个比较复杂的工作。用户也可以根据应用类型或者应用标签来设置安全策略的匹配条件,如允许带有“企业应用”标签的应用流量通过。

第二,请为临时安全策略设置时间段。例如,第三方合作伙伴需要访问某服务,除了限制访问具体的目的IP地址和服务,还应该设置安全策略的时间段。当合作结束时,安全策略自动失效,在序号前会有图标()提示。另外,组织通常不能为了安全性而影响业务的正常运行,因此,如果不能确认业务的所有匹配条件,也可能要开放临时安全策略。如果在安全策略中设置了时间段,请确保系统时间准确,推荐使用网络时间协议同步时间。

第三,请关注安全策略的方向。华为防火墙都是状态检测防火墙,只要允许业务的主动发起方建立连接,回程流量就可以顺利通过。只有在通信双方都需要主动发起连接的情况下,才需要配置双向安全策略。以Web服务器为例,通常情况下,Web服务器只要被动响应来自互联网的连接请求即可,并不需要主动访问互联网。服务器的系统和软件更新应通过统一的中央服务器获取,并在安全策略中限制到具体的域名或应用(如Windows更新)。

最小授权原则是最重要的安全原则。用户也许不能做到绝对精确的最小授权,但是必须向着这个方向努力。

1.4.4 注意安全策略的顺序

收到报文以后,防火墙按照安全策略列表的顺序来匹配。一旦匹配到某一条安全策略就不再向下匹配,否则会一直检查到策略列表底部,命中默认策略。因此,安全策略的顺序非常重要,相同的安全策略、不同的排列顺序,可能会导致不同的结果,还可能影响设备性能。

首先,精确的安全策略优先。在安全策略列表的顶部,应该是按照最小授权原则配置的、最精确的策略。请始终把更精确的安全策略放在前面,把更宽泛的安全策略放在后面。对于这些宽泛的安全策略,要持续分析,逐渐精确化,或者停用。

另一个经验法则是:把频繁命中的安全策略放在更前面。命中次数越多,说明匹配此安全策略的流量越多。让网络中主要的流量快速完成安全策略匹配,能显著提高性能。这样的好处在高负载环境中尤为明显。当然,把高命中率的安全策略放在更前面,并不等于按照命中率设置安全策略的顺序。用户需要评估对业务的影响,不能让高命中率的安全策略覆盖低命中率的安全策略(这样低命中率的安全策略就永远不会被命中了)。

关于安全策略的顺序,推荐参考以下顺序。

① 防欺骗的安全策略。如果来自公网的访问使用了私网地址,说明其有意伪装成内部设备发起的流量,需要禁止此类流量。华为防火墙提供了IP欺骗攻击防范功能(firewall defend ip-spoofing enable),但是应用场景受限,可使用安全策略规避。

② 允许合法的用户业务的安全策略。例如,允许内网用户访问外部Web服务的HTTP流量。

③ 允许合法的管理业务的安全策略。例如,防火墙与网管之间的SNMP流量,防火墙向网管发送SNMP Trap报文等。

④ 阻断非法流量的安全策略。对于明确需要禁止的非法业务,配置阻断策略,用于快速丢弃,以提高匹配速度。

⑤ 阻断可疑流量的安全策略。可疑流量通常需要管理员及时关注,因此需要在阻断的同时记录日志,以便分析和调整安全策略的动作。

有必要说明的是,虽然防火墙会默认阻断所有未被明确允许的报文,但是,让流量被默认策略阻断是非常不明智的。安全策略的匹配需要时间和设备系统资源,让每一条流量都完成整个安全策略列表的匹配,会严重影响设备性能。因此,请务必为已知的、需要被阻断的流量设置明确的禁止策略。

有两种调整安全策略顺序的方法。第一种方法是使用安全策略列表顶部的“移动”菜单,如图1-27所示。其对应的CLI(Call Level Interface,调用级接口)操作命令是rule move rule-name1 { { after| before } rule-name2 | up|down| top | bottom }。

第二种方法是拖曳。选中一条安全策略,按住鼠标左键,可以把该安全策略拖曳到任意位置,如图1-28所示。

1.4.5 识别和控制出入方向的流量

很多组织的安全人员存在一个认识上的误区,以为只要考虑如何保护内网资源免受外部攻击就万事大吉了。

攻击者可能主动从外网发起攻击,也可能在受害者经常访问的网站上挂马或设置陷阱,实施路过式下载或水坑攻击。这些守株待兔式的攻击手法,使得恶意软件隐藏在合法流量中进入内网。此外,攻击者渗透成功以后,通常还要继续下载恶意软件、连接C&C(Command and Control,命令控制)服务器、通过隐蔽通道向外传输数据等。另外,组织内部资产也可能被攻击者挟持,去攻击其他网络,无形中成为网络犯罪的“帮凶”。安全人员必须同时关注由内而外的安全威胁,保护自己,也避免攻击别人。

例如,用户需要建立一个合法网站和应用的白名单,只允许访问特定网站和应用的出站流量。攻击者需要下载恶意软件到内网,才能完全控制系统。限制用户上网行为可以极大地减小攻击面。

实施严格的出入方向流量控制是保证网络安全的关键手段。为了达成这个目标,安全人员需要了解攻击者常用的攻击手段,有针对性地设计和调整业务方案。在此基础上,通过安全策略来管控出入方向的流量。例如,渗透到内网的恶意软件通常都通过DNS隐蔽通道来建立C&C连接、窃取数据。一个最有效的办法就是限制DNS请求的目的地址为组织自建的DNS服务器,或者组织验证可信的DNS服务器。表1-20是限制DNS请求的例子。首先,允许内网所有设备向114DNS发起DNS解析请求,通常使用基于UDP的DNS服务就可以了;然后,禁止内网设备通过UDP和TCP方式访问其他DNS服务器。相应的,用户需要使用DHCP服务器为客户端分配114DNS服务器。

1.4.6 记录日志

日志记录了网络中的业务运行状态、流量分布、应用分布等信息,是获得网络可视性的基础。记录日志有助于问题定位、回溯取证和策略优化。与安全策略强相关的日志如表1-21所示。

请确保日志的保留时间足够长,以满足管理需要或必须遵从的法规。建议将日志转发到eLog或其他专业的日志管理系统中集中存储。

1.4.7 谨慎选择变更时机

建议在业务使用率低的时间窗口内实施安全策略变更,以最大程度减轻对防火墙性能和已建立会话的影响。这对高负载防火墙尤为重要。

为了提高安全策略的匹配速度,防火墙为安全策略建立索引,并采用加速查询方法(即索引匹配)来进行策略匹配(即策略加速)。当变更安全策略时,新的安全策略会立即生效。但是,防火墙需要等待一段时间(加速延迟时间,默认是60秒),确认本次变更已结束,才重新建立索引。在索引更新完成之前,防火墙采用常规匹配方法来进行策略匹配,速度大幅下降。为了解决这个问题,可以启用策略备份加速功能。当变更安全策略时,防火墙备份索引,并使用备份的索引来进行策略匹配。当防火墙重新建立了索引之后,使用新的索引来匹配,新的安全策略开始生效。

请根据网络业务情况,参考表1-22选择是否启用策略备份加速功能。

1.4.8 定期审计和优化安全策略

企业的网络不断变化,不断添加新用户、新设备、新服务和新应用,意味着企业需要新的安全策略。在网络环境的不断变化中,曾经热门的应用可能已经不再流行,安全策略也会过时。随着安全策略列表不断变长,管理复杂度飞速增加,安全风险可能被隐藏,防火墙的性能也开始受到影响。定期审计是解决这个难题的一个有效方法。表面上,审计工作带来了额外的投入,但是定期审计是在事情变得糟糕之前解决问题的好办法。一些行业法规要求组织必须定期审计安全策略,如PCI DSS(Payment Card Industry Data Security Standard,支付卡行业数据安全标准)要求组织每半年审计1次。

建议定期检查防火墙的安全策略。通过定期审计精简和优化安全策略,帮助防火墙在性能和安全性之间实现相对理想的平衡。

删除策略之前,建议先禁用策略,确认不影响业务之后再删除。一旦删除了安全策略,就很难恢复具体配置及其在策略列表中的位置了。禁用后,如果发现该安全策略还是必要的,可以快速启用。

安全策略的审计和优化是一项非常复杂的工作,其中,安全策略的分析尤其困难。华为防火墙提供了Smart Policy功能,可以实现单台设备的策略冗余分析、策略命中分析和应用风险调优。

1.5 安全策略的常用维护手段

安全策略决定了报文是否能够通过防火墙,在业务不通的时候,首先应考虑安全策略配置是否正确。本节提供了几种常用的安全策略维护手段。

在现实的网络环境中,安全策略是一个非常常见的故障点,很多时候都是由于安全策略拒绝报文通过而导致业务不通。常用的手段是通过display firewall statistic system discard命令查看防火墙的丢包统计信息,根据显示信息来判断是否涉及安全策略,如下所示。

[sysname] display firewall statistic system discard
  Discard statistic information:
                           Packet filter packets discarded: 2358
                     Packet default filter packets discarded: 5870
                       IPv6 packet filter packets discarded: 1106
                    IPv6 packet default filter packets discarded: 3721

其中,“Packet filter packets discarded”表示安全策略丢弃报文的数量,“Packet default filter packets discarded”表示默认策略丢弃报文的数量。如果防火墙丢包统计信息中出现上述显示信息,就说明安全策略导致丢包,此时就应该从安全策略入手排除故障。

防火墙提供了数据平面的报文示踪功能,可以展示数据报文的转发处理过程。当确认安全策略导致丢包时,可以启用报文示踪,查看导致丢包的安全策略是哪一条。

<sysname> debugging dataplane trace
... ...
# <11:0> 132 601239 interface:GigabitEthernet0/0/0 z one:trust VRF: public -> public
TCP flag:SYN 192.168.1.11:1000 -> 192.168.1.225:2003 pkt-id:0
Layer 3 process
packet filter recv packet            //收到报文
# <11:0> 132 601239 interface:GigabitEthernet0/0/0 z one:trust VRF: public -> public
TCP flag:SYN 192.168.1.11:1000 -> 192.168.1.225:2003 pkt-id:0
packet filter process
DROP: packet filter test deny        //报文命中安全策略test,被丢弃
# <11:0> 132 601239 interface:GigabitEthernet0/0/0 z one:trust VRF: public -> public
TCP flag:SYN 192.168.1.11:1000 -> 192.168.1.225:2003 pkt-id:0
Layer 3 process
DROP: Packet drop reason: PACKET FILTER               //丢包原因为安全策略

以上命令中从192.168.1.11访问192.168.1.225的报文命中安全策略test,被丢弃。

查看安全策略的概要信息,根据安全策略的命中计数,可以大致判断出策略匹配是否正确。

当安全策略的HITS值为0,说明没有报文命中此安全策略。接下来可以指定安全策略的名字,查看该安全策略的匹配条件是否配置无误。

<sysname> display security-policy rule name five
    (0 times matched)
    rule name five
    source-zone trust
    destination-zone untrust
    application app QQLive
    action permit

防火墙的会话表中记录了该会话命中的安全策略名称。检查会话表,可以确认业务是否命中了预期的安全策略。

<sysname> display firewall session table verbose
  Current Total Sessions : 1
  udp VPN: public --> public ID: b581fa1ceac4a0a1ea359236b23022
  Zone: trust --> untrust Slot: 2 CPU: 2 TTL: 00:02:00 Left: 00:01:44*
  Recv Interface: 40GigabitEthernet 0/0/1 Rev Slot: 2 CPU: 2
  Interface: 40GE1/1/0 NextHop: 172.16.2.1
  <--packets: 0 bytes: 0 --> packets: 3782387 bytes: 211,813,672
  172.16.1.1:1025 --> 172.16.2.1:1026 PolicyName: test

会话表中,每个会话信息的最后一行记录了命中的安全策略。上例中,该会话命中的安全策略是test。当该字段显示为“---”时,表示该会话处于策略未决状态,或者不用进行安全策略检查。

策略未决是指策略中引用了应用或者URL分类作为匹配条件,防火墙正在对报文进行应用识别或者URL分类查询,尚未确定命中的安全策略。应用识别或者URL分类查询完成后,该字段会显示命中的安全策略名称。

不用进行安全策略检查的情况很多,例如,启用接口访问管理后,访问防火墙自身的报文会跳过安全策略检查。

如果业务未命中预期的安全策略,请先检查安全策略的匹配条件。在匹配条件无误的情况下,应进一步检查和调整安全策略的顺序。

1.6 习题

相关图书

一书读懂物联网:基础知识+运行机制+工程实现
一书读懂物联网:基础知识+运行机制+工程实现
内网渗透技术
内网渗透技术
华为HCIA-Datacom网络技术学习指南
华为HCIA-Datacom网络技术学习指南
Dapr与.NET微服务实战
Dapr与.NET微服务实战
CCNP企业高级路由ENARSI  300-410认证考试指南
CCNP企业高级路由ENARSI 300-410认证考试指南
华为网络技术系列 园区网络架构与技术(第2版)
华为网络技术系列 园区网络架构与技术(第2版)

相关文章

相关课程