教程篇(5.4) 03. 防火墙策略 ❀ 飞塔 (Fortinet) 网络安全专家 NSE4
在这节课中你将学习如何理解和应用防火墙策略,允许和拒绝流量通过FortiGate。其核心是FortiGate是防火墙,因此你的流量所做的几乎所有事情都与你的防火墙策略有关。
在本课程结束后,你应该能够正确地识别防火墙策略中使用的不同组件。你能够配置和测试你的防火墙策略,安排它们正确地匹配流量,并监视通过它们的流量。
首先,让我们讨论一下防火墙策略是什么。
防火墙策略定义了哪些流量匹配,以及如果有定义的话,FortiGate将会做什么。
流量应该允许通过吗?这是基于诸如源之类的简单标准来决定的。然后,如果策略本身不能阻止流量,那么FortiGate就会开始更昂贵的安全配置检查,通常称为统一威胁管理(UTM),如防病毒、应用程序控制和网络过滤,如果你在策略中选择了它。这些扫描有可能会阻碍流量,比如它含有病毒。否则,流量是允许通过的。
要应用NAT吗?需不需要认证?防火墙策略也决定了这一点。一旦处理完成,就会将包转发到目的地。
FortiGate从上到下寻找匹配的防火墙策略,如果找到匹配,则根据防火墙策略处理流量。如果没有找到匹配,则被默认的隐式拒绝策略放弃。
每个策略都与流量匹配,并通过引用你定义的对象,例如地址和配置文件来应用安全性。
其他防火墙策略类型又如何呢?是否存在IPv6或虚拟线路策略?是的。它们使用的是与它们类型相关的稍微不同的对象。在这节课中,我们讨论的是IPv4防火墙策略,因为它们是最常见的用例。
现在我们知道防火墙策略是什么了。在本节中,你将了解如何使用防火墙策略来匹配流量,并根据匹配策略采取适当的操作。
【提示】Matching:匹配;Criteria:标准;Actions:动作;
当一个包到达时,FortiGate如何找到匹配的策略?每个策略都有匹配的标准,你可以使用以下对象定义:
流入和流出
源和目标:IP地址、设备ID或用户
网络服务:IP协议和端口号
时间表:在配置时间时应用
动作:接受还是拒绝
一旦发现了一个匹配的策略,它就会将配置的设置应用到包处理中。是反病毒扫描还是网络过滤应用?源NAT会被应用吗?
例如,如果你想要阻止传入的FTP到所有的FTP服务器,那么你将定义FTP服务器的地址,选择哪些作为目标的服务器,并选择FTP作为服务。你可能不会指定一个源(通常在Internet上的任何位置是允许的)或时间表(通常是FTP服务器总是白天夜晚都可以用)。最后,你将设置动作为接受。
这可能已经足够了,但通常你需要更彻底的安全性。在这里,策略还对用户进行身份验证,对病毒进行扫描,并记录阻塞的连接尝试。
为了开始描述如何为每个包找到一个策略,让我们从接口开始。
数据包到达流入接口,路由决定了流出的接口。在每个策略中,你必须设置一个源和目标接口,即使一个或两个都被设置为any。这两个接口都必须匹配策略的接口标准,才能成功匹配。
例如,如果你在port3(LAN)和port1(WAN)接口之间配置策略,而数据包到达port2,则包将不匹配你的策略,因此由于在列表的末尾的隐式拒绝策略而被丢弃。即使策略是从port3(LAN)到任何出口,包仍然会被丢弃,因为它与流入的接口不匹配。
为了简化策略配置,你可以将接口分组到逻辑区域中。例如,你可以将port4分组到port7作为DMZ区域。可以从接口页面创建专区。但是,你应该注意到,一个区域中的接口不能单独引用,如果你需要从该区域删除接口,则必须删除该接口的所有引用(例如防火墙策略、防火墙地址等等)。如果你认为你可能需要单独引用接口,那么你应该在防火墙策略中设置多个源和目标接口。
默认情况下,你能选择一个接口作为流入接口和一个接口作为流出接口。这是因为选择多个接口或防火墙策略中的任何接口的选项都是在GUI中禁用的。但是,你可以启用功能选择页面下的多个接口策略来禁用单一的接口限制。
如果你在CLI中配置了防火墙策略,你也可以选择多个接口或任何接口,而不考虑缺省的GUI设置。
还值得一提的是,当选择any接口时,你不能为该接口选择多个接口。在本例中,因为任何被选为输出接口,你不能添加任何额外的接口。
接下来的匹配标准是包的源。
在每个防火墙策略中,你必须选择一个源地址对象。另外,还可以通过选择用户、组或特定设备来细化源地址的定义。如果你的组织允许BYOD(带你自己的设备),而不是三者的组合,则提供了更细粒度的匹配,以提高安全性。
注意:在FortiOS 5.4,当配置防火墙地址时,你可以允许防火墙地址对象名称在静态路由配置中可见,这可以在配置静态路由时使用。
当选择一个完全限定域名(FQDN)作为源地址时,它必须通过DNS解析,并在FortiGate中进行缓存。确保为DNS设置正确配置了FortiGate。如果FortiGate无法解析FQDN地址,它将显示一条警告消息,而包含FQDN的防火墙策略可能无法正常工作。
如果将用户添加为源的一部分,则必须在允许或拒绝基于防火墙策略的访问之前进行验证。用户可以通过不同的方式进行身份验证。对于本地用户,用户名和密码是在本地配置的。当本地用户进行身份验证时,它必须匹配在本地的FortiGate上配置的用户名和密码。
如果它是一个远程用户(例如LDAP或RADIUS),那么就会从远程用户那里接收用户名和密码,并将此信息传递给身份验证服务器。身份验证服务器验证用户登录凭证并更新FortiGate。一旦FortiGate接收到这些信息,就会根据防火墙策略对网络进行访问。
Fortinet单点登录(FSSO)用户通过登录在域控制器上的用户名和密码登录,并根据FortiGate的组信息授予访问权限。
有两种设备识别技术:一种是代理,一种是非代理。
无客户端使用该设备的流量。通过MAC地址对设备进行索引,有多种方式来识别设备:
HTTP “User-Agent:” 头部
TCP指纹
MAC地址OUI
DHCP(选项60类标识符,选项12主机名)
微软视窗浏览器服务(MWBS)
SIP用户代理
链接层发现协议(LLDP)
简单的服务发现协议(SSDP)
注意:FortiGate使用先到先服务来确定设备的身份。例如,如果一个设备是由HTTP用户代理检测到的,那么它就会用检测到的MAC地址来更新它的设备表,并且一旦确定了MAC地址的类型就会进行扫描。
基于代理使用FortiClient。FortiClient将信息发送到FortiGate,该设备被其唯一的FortiClient UID跟踪。
如果你在防火墙策略中启用了源设备类型,那么就可以在策略的源接口上启用设备检测和活动扫描。默认情况下,FortiGate使用设备检测(被动扫描),根据流量的到达来运行扫描。
什么是主动扫描?
如果被动检测不能在5分钟内检测到设备类型,那么主动扫描就会被触发,每三分钟扫描一次。如果主动扫描不能检测出设备类型,下一次扫描将在10分钟后进行。如果扫描失败,下一次15分钟后就会发生。FortiGate使用(N+1)5分钟算法进行扫描,其中N是已经完成的扫描次数。主动扫描会扫描设备类型、操作系统和OS版本。
设备列表显示了被检测到的设备的清单。它还显示了检测到的设备总数。你可以右键单击任何检测到的设备来编辑、删除或查看详细信息。详细信息包括会话、目的地、策略等。
你还可以为设备或设备组定义静态条目。默认情况下,设备被分组到定制设备组中。但是如果一个预定义的设备组与你的组织需求不匹配,你可以创建一个自定义组。
设备被MAC索引,并从多个来源识别。CLI命令〖diagnose user device list〗显示比Device Inventory页面更详细的清单,包括检测方法。在这个工作示例中,设备被源检测到TCP指纹、HTTP用户代理和FortiClient。
检测到的设备被保存到FortiGate的闪存中。因此,在重新启动时,FortiGate知道设备已经被识别,并且不需要重新对每个设备进行重新分类。
在设备信息中显示的用户只是一个标记,它不能用作身份验证策略的标识。
FortiGate可以通过FortiClient配置文件和注册来控制FortiClient设置。为了在FortiGate上注册FortiClient,必须在应用接口上启用FortiTelemetry。还有其他的配置设置值得提及,例如Enforce FortiTelemetry for all FortiClients,如果启用,非投诉设备将被阻塞,并被重定向到一个web门户,该门户解释了不遵从性,并提供了一个链接来下载FortiClient。你可以使用源或目标或服务来免除设备的强制执行。
一旦注册了FortiClient,它就会被添加到设备列表中。此外,FortiGate也将FortiClient的配置文件推送到注册的FortiClient。你可以配置默认的FortiClient配置文件或添加其他配置文件。
你还可以从FortiClient监视器页面查看FortiClient端点信息。
你可以运行〖diagnose user device list〗或〖diagnose endpoint registration list〗,以查看FortiClient唯一UID。
FortiClient设备有一个唯一的id,可以作为设备的索引。唯一的id代替了MAC地址,因为当一个设备有多个MAC地址(比如服务器或虚拟机),或者当设备没有第二层的可见性时,使用MAC地址可能会有问题。
在FortiGate的GUI仪表板上的许可证信息小部件显示注册设备的总数和可注册的设备总数。Windows和Mac OS X版本的FortiClient安装程序也可以从这个仪表板小部件中获得。
FortiClient是源设备类型的基于代理的方法。
如前面的幻灯片所示,在接口上启用了FortiClient强制执行。带有这个源接口的防火墙策略将强制用户在FortiGate下载或注册FortiClient。在FortiOS 5.2中,FortiClient基于策略对策略启用强制执行。
在这里,所有三个源选择器都可以识别用户组、设备类型和特定子网。
记住,用户和设备是可选的对象。它们在这里被用来使政策更加具体。如果你想要策略来匹配更多的流量,就不要定义用户和设备对象。
与包的源一样,FortiGate也会检查对应匹配的目标地址。
地址对象可能是主机名、IP子网或范围。如果你输入一个FQDN作为地址对象,请确保你已经用DNS设置配置了你的FortiGate。FortiGate使用DNS解析这些FQDN主机名到IP地址,这实际上是IP报头中出现的。
可以选择地理地址,这些地址是分配给一个国家的地址或地址范围。这些对象通过FortiGuard更新。
为什么没有选择用户或设备的选项?用户标识或设备标识是在流入接口中确定的,一旦用户或设备身份验证成功,包就会被转发到流出接口。
时间表为策略添加了时间元素。例如,允许备份软件的策略可以在夜间**,或者远程地址可以用于测试目的,而时间表提供了一个测试窗口。
时间表可以从时间表页面配置,并使用一个24小时的时钟。有一些配置设置值得一提:
循环:当配置重复的时间表时,如果停止时间比开始时间早,那么停止时间将在第二天发生。例如,如果你选择星期天为当天,10点作为开始时间,9点作为停止时间,那么时间表将在星期一9点停止。如果开始和停止时间是相同的,则计划将运行24小时。
一次性:开始日期和时间必须比停止日期和时间早。你还可以启用Pre-expiration事件日志,该日志将在时间表过期前生成一个事件日志,其中N可以从1到100天。
另一个用于匹配策略的标准是包的服务。
在IP层,协议号(例如TCP、UDP、SCTP等)与源和目标端口一起,定义每个网络服务。通常,只定义一个目的地端口(即服务器的侦听端口)。一些遗留应用程序可能使用特定的源端口,但是在大多数现代应用程序中,源端口在传输时是随机确定的,因此不是定义服务的可靠方法。
例如,预定义的服务对象HTTP是TCP目的地端口80,而预定义的服务对象为HTTPS是TCP目的地端口443。但是,源端口是短暂的,因此没有定义。
默认情况下,服务被组合在一起以简化管理,因此你可以按类别或按字母顺序查看服务。如果预定义的服务不能满足你的组织需求,你可以创建一个或多个新的服务、服务组和类别。
到目前为止,我们已经了解了防火墙策略匹配标准和FortiGate可以采取的行动。在本节中你将学习如何配置防火墙策略。
你从GUI配置一个新的防火墙策略时,必须为防火墙策略指定一个唯一的名称,因为它是默认启用的(但是在CLI中是可选的)。这有助于管理员快速确定他们正在寻找的策略。但是,你可以在功能选择页面的GUI中使这个功能成为可选的,允许在附加特性下允许匿名策略。
注意:当从先前的FortiGate固件版本(例如5.2)或从CLI配置的策略升级时,没有指定策略名称。但是,如果你从GUI修改现有的策略,则必须指定一个唯一的名称。
FortiGate平面GUI视图允许你通过单击或拖放在右边的列表中选择接口和其他对象。
你可以从防火墙策略中配置许多其他选项,如防火墙和网络选项、安全配置文件、日志记录选项,以及启用或禁用策略。
在创建防火墙对象或策略时,添加了一个全局唯一标识(UUID)属性,以便日志可以记录这些UUID,并在整合FortiManager或FortiAnalyzer时改进功能。
在创建防火墙策略时,请记住,FortiGate是有状态的防火墙。因此,你只需要创建一个与发起会话的流量方向相匹配的防火墙策略。FortiGate将自动记住一对源-目标,并允许回复。
防火墙策略可以应用的最重要的功能之一是安全配置文件,比如IPS和杀毒。安全配置文件检查流量中的每个包,其中会话已经有条件地接受了防火墙策略。
在检查流量时,FortiGate可以使用两种方法中的一种:基于流或基于代理。每种类型都支持不同的安全特性。
你还可以在防火墙策略上启用学习模式。当你设置动作为学习时,防火墙策略会自动应用默认的静态配置文件,并将流量传递到安全配置文件中进行监控。它还支持具有完整功能的日志记录,这些功能在日志中被标记为学习。
你可以从学习模式下的Learning Reports查看综合报告。该报告使用所有的学习日志,跨所有的流量和安全向量,生成一个完整的摘要报告。这使得用户可以很容易地实现监控执行过程。
如果在会话开始时启用生成日志,那么当会话开始时,FortiGate将创建一个流量日志。但是请记住,不断增加的日志记录会降低性能,所以只在需要的地方使用它。
如果你在策略中启用了日志记录,那么在防火墙策略关闭IP会话时,FortiGate将生成流量日志。
在会话期间,如果一个安全配置文件检测到一个违规,那么FortiGate将立即记录攻击日志。为了减少生成的日志消息量和提高性能,你可以启用一个会话表条目来减少流量。这将在会话表中创建被拒绝的会话,如果会话被拒绝,则该会话的所有包也将被拒绝。这个选项在CLI中,被称为拒绝通信。你还可以设置块会话的持续时间。这将确定会话表在会话表中保留多长时间,方法是在CLI中设置block-session-timer。默认情况下,它设置为30秒。
如果GUI选项没有显示在会话时生成日志,这意味着你的FortiGate设备没有内部存储。这个选项在CLI中,不管内部存储是什么,它被称为〖set logtraffic-start enable〗。
可以配置两种类型的流量整形:共享和每IP。
一个共享的流量整形适用于所有流量使用流量整形的总带宽,范围可以是每个策略或所有策略引用流量整形。FortiGate可以计算入口和出口的包等级到策略流量。
在FortiOS 5.4中,在流量整形策略页面上单独创建了流量整形策略。FortiGate允许你创建三种类型的流量整形策略:
共享策略整形:安全策略的带宽管理
每IP整形:用户IP地址的带宽管理
应用控制整形:应用程序的带宽管理
在创建流量整形策略时,你必须确保匹配的标准与你想要应用形成的防火墙策略相同。注意,这些应用程序同样适用于TCP和UDP,而UDP协议可能无法从包丢失中优雅地恢复。
到目前为止,你已经了解了如何配置防火墙策略。在本节中,你将了解如何管理和调整防火墙策略的设置。
防火墙策略出现在一个有组织的列表中。它要么是在接口对视图中进行组织,要么按顺序排列。
通常它会出现在接口对视图中。每个部分都包含了针对每对进出的策略。或者,你可以将你的策略看作一个单一的、全面的列表,通过在页面顶部的顺序选择。
在某些情况下,你将无法选择使用哪个视图。
如果你使用多个源和目标接口或防火墙策略中的任何接口,那么策略不能通过接口对将其划分为多个部分,有些可能是三个或更多。因此,策略总是显示在单个列表中(按顺序排列)。
为了帮助你记住每个接口的使用,你可以给它们别名。例如,你可以叫port3为Internal_network。这可以帮助你更容易地理解你的策略列表。
GUI中的防火墙策略主要由策略***来排序。策略序列编号定义了处理规则的顺序。策略ID是标识符。默认情况下,在GUI上显示的是***。然而,CLI命令使用策略ID。
小心不要意外地改错了策略。为了避免这样的错误,可以使用列设置将策略ID添加到GUI中。
还记得我们提到过只有第一个匹配策略被应用吗?把你的政策调整到正确的位置是很重要的。它影响了哪些流量被阻塞或被允许。在相同的一对接口中,FortiGate将从顶部开始寻找匹配的策略。所以通常你应该把更具体的策略放在最上面,否则,更一般的策略将首先与流量匹配,而你的更细粒度的策略将永远不会被应用。
在这里,我们正在移动一个策略(序号3,ID 8),它只匹配一个更一般的Full_Access(接受来自任何地方的所有东西)策略的syslog流量。否则,FortiGate将总是应用第一个匹配的Full_Access策略,永远不会到达Block_Syslog策略。
注意,在将此策略向上移动之后,***从3改为2,但是策略ID 8在GUI中保持不变。由于CLI只使用策略ID,在移动之前,策略ID 7在上面,在移动之后,策略ID 8就在顶部。
作为最佳实践,总是在GUI中添加策略ID列。当策略被移动时,序列编号会发生变化,而策略ID的值不会变。
为了减少在RAM中的防火墙策略数量并简化管理,你可以建立服务组和地址对象组。然后,你可以在防火墙策略中引用该组,而不是每次选择多个对象或制定多个策略。
在这里,我们看到了四个与策略相匹配的服务:HTTP、HTTPS、FTP和DNS。DNS通常是由HTTP使用的,因为人们记住了域名而不是IP地址。如果你需要为web和FTP流量制定许多策略,那么创建一个名为Web_FTP的服务对象是有意义的。这样,你就不必在每次制定策略时手动选择所有四个服务。策略可以参考Web_Ftp服务组。
另外,如果你注意到,你可以合并这两个防火墙策略,因为它们具有相同的源和目标,但是服务是不同的。您可以将源地址合并为源组,并创建一个包含web、FTP和电子邮件访问的所有服务的服务组。
在合并两个防火墙策略时,防火墙策略中的其他设置,如日志记录和安全配置文件,应该匹配。
我们刚刚展示了几个组件对象,可以在你制定策略时重新使用它们。如果你想删除一个对象呢?
如果对象已经被使用了,你就不能删除这个对象。首先,你必须重新配置当前使用它的对象。在FortiGate的配置中GUI提供了一种简单的方法来查找一个对象被引用的位置。查看Ref.列中的数字吗?它们是被使用的对象的数量。这个数字实际上是一个链接,所以如果你点击它,你就能看到哪个对象在使用它。
在本例中,地址组和两个防火墙策略都使用了地址。如果你选择了一个防火墙策略,你可以使用Edit、View List和View Properties选项卡。
编辑:它允许你编辑所选的对象。在本例中,它显示了防火墙策略ID 3的编辑页面。
视图列表:它允许你在它的类别中查看所选的对象。在本例中,它将向你显示所有防火墙策略的列表。
视图属性:它显示了对象在该配置中使用的位置。在本例中,address对象all被用于该防火墙策略的目的地址和源地址。
你可以右键单击任何防火墙策略序列,以查看不同的菜单选项来编辑或修改策略。这些选项包括启用或禁用防火墙策略、插入防火墙策略(上或下)、复制和粘贴策略,以及克隆反转(仅在该策略中禁用NAT)。
点击Edit in CLI从选择的防火墙策略或对象打开CLI控制。
右键单击对象可以为你提供添加或删除同一类型对象的选项,修改对象,并显示该对象的引用。
到目前为止,我们已经了解了如何管理防火墙策略。在本节中,你将了解如何使用策略查找特性监视和查找匹配的防火墙策略。
在FortiOS 5.4中,你可以根据策略查找输入标准找到匹配的防火墙策略。它基本上是在没有实际流量的情况下创建包流,它可以从流跟踪中提取策略ID,并在GUI策略配置页面上突出显示它。
根据所选择的协议(例如,TCP、UDP、IP、ICMP等),你需要定义其他输入条件。例如,当你选择TCP作为协议时,您需要定义源地址、源端口(可选)、目标端口和目标地址。当您选择ICMP作为协议时,您需要定义ICMP类型/代码、源地址和目标地址。
当FortiGate执行策略检查时,它会执行一系列的检查出入口和状态监测,以便在为匹配策略提供结果之前,从上到下对匹配的防火墙策略进行检查。
注意:如果防火墙策略状态设置为禁用,策略查找将跳过禁用策略,并检查列表中的下一个匹配策略。
根据输入条件,在单击Search之后,将在IPv4策略页面上选择并突出显示跟踪结果。
再次复习一下我们这节课上所讨论的主题:
包如何匹配防火墙策略
如何定义匹配的流量
配置防火墙策略
重新排序策略以匹配更细粒度的策略
使用策略查找来查找匹配策略
飞塔技术 - 老梅子 QQ:57389522