教程篇(7.4) 03. 会话、流量和网络 & 网络安全支持工程师 ❀ FORTINET认证解决方案专家

 在本课中,你将了解流量和会话监控。

 完成本课程后,你应该能够实现上图显示的目标。

  通过展示流量和会话监控能力,你将能够解释会话表中的信息,使用内置嗅探器捕获流量,分析调试流的输出,并配置和故障除会话助手。

 在本节中,你将了解会话表条目。

 FortiGate会话表包含有关在FortiGate经过或终止的每个IP连接的详细信息。

  你可以使用上图显示的命令来显示活动VDOM中的会话总数,并查看每个会话的简要摘要。

  session list命令在每行上列出一个会话,包括协议、源IP地址、目标IP地址和端口等信息。你可以使用此命令的grepa工具仅列出特定IP地址的会话。

 要显示有关会话的详细信息,请使用上图显示的命令。建议你先设置会话过滤器,因为未过滤的输出会显示所有现有会话的所有详细信息。

  对于高端设备,所有现有会话的列表可能是数千个甚至数百万个。你可以按策略ID、源IP地址、源端口、目标IP地址和目标端口过滤输出。请注意,会话过滤器的选项比上图显示的选项要多得多。

 一些配置更改,如安全配置文件更改或会话助手更改,仅适用于新会话。现有会话继续使用以前的配置,直到它们过期或终止。在解决问题时,记住这一点很重要。安全配置文件更改后,你应该清除与该更改相关的任何会话,并生成新会话。

  使用上图显示的命令删除与会话过滤器匹配的所有会话。你必须小心使用此命令,因为如果没有设置过滤器,它可能会清除所有现有会话。在清除任何会话之前,请使用适当的过滤器。

 上图显示了单个会话表条目的详细信息输出示例。突出显示以下信息:

  ● IP协议号和协议状态

  ● 会话到期前的时间长度(如果没有更多流量与会话匹配)

  ● FortiOS 7.4新增加了refresh_dir参数,指定了刷新现有会话的方向。在这个例子中,它是双向的。配置此选项可以帮助防止潜在的拒绝服务(DoS)攻击。

  ● 流量整形计数器

  ● 会话标志

  ● 接收和传输的数据包和字节计数器

  ● 流量的原始和回复方向。如果设备使用NAT,此部分显示每个流量方向的NAT类型(源或目的地)以及NAT IP地址。

  ● 匹配策略的ID

  ● 硬件加速计数器——npu信息字段的存在表明会话已卸载到硬件加速。

  对于IPv4流量使用CLI命令diagnose sys session list,对于IPv6流量使用命令diagnose sys session6 list。

  两个命令的输出相似(它以相同的顺序显示相同的字段)。

  会话表中的协议状态是一个两位数。对于TCP,第一个数字(从左到右)与服务器端状态有关,当会话不受任何检查(流或代理)时,是0。如果完成了流量或代理检查,那么第一个数字与0不同。第二个数字是客户端状态。

  上图显示的表格和流程图将数字值与不同的TCP会话状态相关联。这些值适用于服务器端和客户端状态。例如,对于客户端状态,当FortiGate收到SYN数据包时,第二个数字是2。当FortiGate收到SYN/ACK数据包时,它会更改为3。同样,对于服务器端状态,第一个数字在FortiGate发送SYN数据包后为2,然后在FortiGate发送SYN/ACK数据包后更改为3。此外,proto_state=11意味着服务器端和客户端的TCP三方握手已经完成(已确定)。

  当发送方和接收方都关闭会话时,FortiGate会将该会话在会话表中保留几秒钟,以允许在FIN/ACK数据包之后可能到达的任何异序数据包。这是状态值5。

 对于UDP,会话状态只能有两个值:当流量仅为单向时为00,当流量为双向时为01。对于ICMP,协议状态总是00。

 此表显示了最重要的会话标志的含义。

  例如,log标志表示正在记录会话。local标志表示会话从FortiGate开始或在FortiGate上终止。

  在使用FortiGate时,了解may_dirty和dirty会话的概念很重要。

  may_dirty会话是在匹配以accept为动作的防火墙策略后创建的防火墙会话。为了识别匹配策略,它执行防火墙策略查找,从上到下选择配置中的第一个匹配策略。大多数防火墙会话都包含may_dirty标志。然而,一些会话,如预期会话,不包含may_dirty标志,因为它们不是由于匹配防火墙策略而创建的。

  对于新会话,FortiGate在收到第一个数据包(按照原始方向)时执行路由和防火墙策略查找。FortiGate还对第一个回复数据包执行路由查找,但不执行防火墙策略查找。然后,FortiGate将路由查找产生的信息(要使用的传出接口和网关)以及防火墙策略查找策略ID、地址转换、检查、身份验证、日志记录等保存到会话中。

  FortiGate不会对会话执行额外的查找,除非会话被标记为dirty。

  默认情况下,如果有路由、防火墙策略或接口更改,FortiGate会将所有may_dirty会话标记为dirty。FortiGate必须重新评估每个dirty会话。在重新评估期间,它会检查dirty会话的两个方向。

  路由更改后,受影响会话的路由信息被刷新。对于没有源NAT(SNAT)的会话进行路由更改后,默认的重新评估过程如下:

  ● 如果受影响的会话卸载到网络处理单元(NPU),FortiGate指示NPU将下一个数据包从会话的每个方向发送到CPU。这确保了会话由CPU处理,从而重新评估。如果会话没有卸载到NPU,那么数据包总是由CPU处理,并且不需要此步骤。

  ● 在原始方向上,FortiGate为第一个数据包执行路由和防火墙策略查找。

  ● 在回复方向上,FortiGate仅对第一个数据包执行路由查找。

  ● FortiGate使用新的路由和防火墙策略信息更新会话,并删除dirty标志。

  ● 如果匹配的防火墙策略操作仍然被接受,FortiGate将转发数据包。

  ● 如果匹配的防火墙策略操作被拒绝,FortiGate会将会话标记为block,丢弃数据包,并将会话保留在会话表中,直到它过期。FortiGate还会删除与会话匹配的任何其他数据包。

  ● 如果FortiGate仍然满足NPU卸载要求,它们最终会再次将允许的会话卸载到NPU。

  上图显示了ICMP会话在路由更改后从may_dirty过渡到dirty,然后返回may_dirty。请注意,仅显示会话的相关行。

  在路由更改之前,会话被标记为may_dirty。会话输出显示正在使用的传出接口的索引号(19),以及网关信息(gwy)。

  路由更改后,会话被标记为dirty。请注意,may_dirty标志仍然存在,并且刚刚添加了dirty标志。网关信息也被刷新了。

  重新评估后,删除dirty标志,并根据新路由更新传出接口和网关信息的索引号。

  请注意,防火墙策略(policy_id)没有更改。这是因为重新评估期间的防火墙策略查找导致了相同的防火墙策略,但情况并非总是如此。

  默认情况下,在影响会话的路由更改后,SNAT会话不会被标记为dirty。如果正在使用的路由仍在FIB中,则为真。但是,如果路由从FIB中删除,那么FortiGate会将会话标记为dirty,刷新传出接口和网关信息,然后在收到的下一个数据包上重新评估会话。

  为了在相关路由更改后强制重新评估SNAT会话,无论正在使用的路由是否仍在FIB中,请启用snat-route-change设置,如上图所示。

  请注意,在重新评估SNAT会话期间,如果新的路由和防火墙策略查找导致SNAT IP地址的更改,那么FortiGate会丢弃数据包并清除会话。这意味着受影响的应用程序可能必须启动新的连接才能恢复网络连接,特别是如果应用程序是基于TCP的。

  上图显示了重新评估期间SNAT会话的调试流输出。由于新路径(192.2.0.9)的SNAT IP地址与当前路径(192.2.0.1)的SNAT IP地址不同,FortiGate丢弃数据包并清除会话。这也意味着,从连接的角度来看,只有当会话的新路径使用相同的SNAT IP地址时,才启用snat-route-change是有意义的,这可以使用IP池实现。

  当你更改防火墙策略时,所有带有标志的现有会话可能会变为dirty状态。然后,FortiGate对每个现有会话收到的第一个数据包执行防火墙策略查找;它更新会话表条目,并将标志重置为may-dirty。然后,它根据新的防火墙设置处理下一个数据包。

  如果防火墙处理大量会话,将会话标记为dirty,并为会话执行防火墙策略查找,可能会导致高CPU利用率。为了防止这种情况,你可以通过将firewall-session-dirty设置为check-new来将FortiGate配置为仅将新会话标记为dirty。结果是FortiGate仅根据新的防火墙策略配置评估新会话。

  firewall-session-dirty设置在VDOM和防火墙策略级别上可用。默认情况下,它被设置为check-all,这指示FortiGate将所有会话标记为dirty。要指示FortiGate遵循防火墙策略级别设置,你必须将VDOM级别设置设置为check-policy选项。请注意,只有当VDOM级设置设置为check-policy选项时,防火墙策略级别设置才可用。

  上图显示了当firewall-session-dirty设置为check-new时已建立的SSH会话的详细信息。

  请注意会话中存在persistent标志,以及没有may_dirty标志,这表明如果配置发生变化,FortiGate不会执行新的防火墙策略查找。

  在本节中,你将了解两个有用的故障排除工具:内置嗅探器和调试流,以及它们如何受到硬件加速的影响。

  现在你将了解内置嗅探器。当你启用此工具时,你可以从六个详细级别中进行选择。上图的表格显示了每个级别显示的信息。4级通常用于检查流量的流动情况,以及FortiGate是否丢弃数据包。3级或6级通常用于将输出转换为数据包捕获(PCAP)格式,你可以稍后使用Wireshark等工具进行分析。

  要嗅探所有接口中的流量,请使用关键字any作为接口名称。

  按ctrl+c停止嗅探器,并检查有没有丢弃的数据包。如果在嗅探器过程中丢弃数据包,这意味着无法捕获所有与嗅探器过滤器匹配的流量。因此,你可能需要使用更严格的过滤器再次捕获流量。

  如果你没有为时间戳指定选项,调试将显示自开始运行以来的时间(以秒为单位)。正如你在课程前面所学到的,你可以预先设置本地系统时间,以轻松地将数据包与另一个记录的事件相关联。

   在GUI的网络>诊断程序>网络捕获上,你可以执行上上图描述的相同功能,而无需使用CLI命令。

  在FortiOS 7.4及更高版本中,你可以同时运行多个数据包捕获,以同时捕获入口和出口流量。你还可以将捕获的数据包保存为PCAP。

  另一个有用的FortiGate故障排除工具是调试流。

  调试流也称为内部嗅探器,因为它的工作原理与内置嗅探器相似,但输出显示分步和细节,内核正在对每个数据包做什么。

  上图显示了调试流输出的示例。在本例中,调试流捕获了TCP三次握手的三个数据包。SYN数据包的输出显示内核何时创建新会话(及其会话ID),找到到目的地的路由,并应用NAT。它还显示与此流量匹配的策略ID。

  SYN/ACK和ACK数据包的输出显示会话ID和NAT信息。

  此工具对于许多故障排除案例非常有用,例如当你需要了解为什么数据包采取特定路由,或者为什么应用特定的NAT IP地址时。

 调试流还可以帮助你识别FortiGate丢弃数据包的原因。在这些情况下,调试流通常会显示一条错误消息,解释数据包被丢弃的原因。

  上图显示了当FortiGate丢弃数据包时,你在调试流输出中通常看到的三条消息:

  ● Denied by forward policy check (policy 0) 表示没有防火墙策略允许流量,或者尚未接受免责声明。

  ● Denied by quota check 表示数据包因流量整形超过其阈值之一而被丢弃。

  ● No matching IPsec selector, drop 意味着试图穿越VPN隧道的流量的源或目标IP地址不包含在IPsec第2阶段快速模式选择器中。

  上图显示了两个更常见的调试流错误消息。第一条错误消息表明数据包未通过反向路径转发检查。

  第二条错误消息通常指示以下情况之一:

  ● 该数据包目的地为FortiGate IP地址(例如,管理流量),但该服务未启用

  ● 该服务正在使用不同的端口

  ● 源IP地址不包含在受信任列表中

  ● 数据包匹配动作为拒绝的本地策略

  就像嗅探器工具一样,你可以从GUl运行调试流。完成后,你可以将输出保存为CSV文件。

  为了使数据包嗅探器和调试流接收流量,所有数据包都必须到达CPU。

  这可以通过禁用硬件加速来实现。你可以在防火墙级别或全局级别禁用硬件加速。

  你应该仅出于故障排除目的禁用硬件加速。永久禁用硬件加速会显著降低FortiGate的性能。

  禁用后,CPU会处理所有数据包,嗅探器和调试流可以显示流量信息。

  你可以通过将auto-asic-offload设置为禁用来禁用单个防火墙策略的硬件加速。当已知故障排除流量的范围特定于一个防火墙策略时,这可能会有用。

  你还可以全局禁用硬件加速。

  你可以通过两种方式在全局范围内禁用硬件加速:

  ● 使用diagnose命令。根据FortiGate型号,必须禁用一个或多个NP6单元。在本例中,显示了FortiGate 1500D上diagnose npu np6 port-list的部分输出。由于这是一个诊断命令,当FortiGate重新启动时,快速路径会自动重新启用。

  ● 使用config命令。默认情况下启用快速路径。这将禁用所有流量的所有网络处理器卸载。此命令适用于NP6和NP7。

  在设备级全局禁用硬件加速可能会对CPU性能产生重大影响。你应该仅出于故障排除目的禁用硬件加速。完成故障排除后,重新启用硬件加速。

  对于上图显示的故障排除方案,你的方法是什么?

  管理员正在尝试使用HTTPS访问FortiGate A,但无法这样做。SSH访问正常。

  你开始解决这个问题的方法是什么?

  你的第一步应该是确认管理员发送的HTTPS数据包到达FortiGate A,并且通信是双向的。为此使用的最佳工具是数据包嗅探器。你可以看到FortiGate A没有将SYN/ACK数据包返回给管理员。

  现在你必须找出为什么FortiGate没有响应。为此使用的最佳工具是调试流。FortiGate正在删除流量,并显示错误消息“iprope_in_check () check failed on policy 0, drop”

  本课前面介绍过,错误消息可能有多种含义,包括:

  ● 服务未启动

  ● 服务使用了不同的端口

  ● 源IP地址不在可信主机列表中

  ● 数据包匹配本地策略的拒绝操作

  在这个场景中,HTTPS管理端口从443更改为10443。浏览TCP端口10443上的FortiGate以解决问题。

  没有建立会话,因此会话表没有TCP端口443流量的条目。

  从管理员IP地址建立的唯一会话是用于故障处理的SSH会话。

  在本节中,你将了解FortiGate如何为预期但尚未到达的流量创建会话。

  要了解会话助手的功能,请查看上图显示的网络协议示例,该示例在网络设备执行NAT时可能会出现问题。该示例显示FTP协议在主动模式下工作。

  任何FTP文件传输都由两个TCP会话组成:一个用于控制通道,一个用于数据传输。控制通道始终从客户端启动到服务器,并用于发送FTP命令。FTP命令允许客户端在服务器文件夹中移动,指定文件传输类型,并启动数据通道以上传或下载文件。

  FTP有两种模式:主动和被动。该模式决定了哪个设备启动数据通道。在被动模式下,客户端启动数据通道。在主动模式下,客户端通过控制通道发送端口命令。该命令包括客户端IP地址和传入数据通道的TCP端口。然后,服务器向端口命令指定的IP地址和端口号启动TCP会话。

  如果控制通道穿过执行NAT的网络设备,并且没有会话助手,则主动FTP不起作用。在上图显示的示例中,FTP客户端正在连接到主动模式FTP服务器。中间的路由器正在客户端IP地址10.0.1.10到NAT IP地址10.200.1.1上执行NAT。

  控制通道启动后,客户端发送端口命令,其IP地址10.0.1.10作为数据通道的目标。

  当该FTP数据包穿过路由器时,IP头中的源IP地址从10.0.1.10更改为10.200.1.1。然而,FTP端口命令中的IP地址没有转换为10.200.1.1。

  服务器收到该FTP命令后,会尝试为数据通道调出TCP会话。它将SYN数据包发送到IP地址10.0.1.10。此地址可能无法路由,因为它是执行NAT的设备背后的私有IP地址。

  文件传输失败。

  FTP会话助手通过将路由器替换为FortiGate来解决这个问题。

  当带有FTP端口命令的数据包到达FortiGate时,FortiGate不仅会翻译IP头中的源IP地址,而且会话助手还会翻译FTP端口命令中的IP地址。如果源端口也在TCP标头中翻译,则会话助手在端口命令中也这样做。

  会话助手的另一个重要功能是为来自服务器的数据通道连接临时创建一个预期的会话(或针孔)。这意味着管理员不需要手动创建防火墙策略来允许这些传入的TCP会话(使用随机TCP端口号)。会话助手会自动创建会话,并为传入连接打开大门。

  之后,服务器将数据通道连接到正确的IP地址:10.200.1.1。会话助手之前创建的预期会话允许传入的TCP连接,即使没有防火墙策略允许。

  在上图中,你可以看到使用会话助手时显示的调试流消息。在本例中,run helper-ftp消息表示正在使用FTP会话助手。

  你还可以看到FortiGate创建了一个期望会话,并打开了来自IP地址为93.157.14.94的服务器的预期返回流量的针孔端口。

  上图显示了在端口命令到达FortiGate之前对之前的FTP流量的数据包捕获。你可以看到原始客户端IP地址,10.0.1.10。

  上图显示了另一个数据包捕获,这次是在端口命令穿过FortiGate之后。会话助手已将端口命令中的IP地址转换为10.200.1.1。

  上图显示了你在本课中涵盖的目标。

  通过掌握本课中涵盖的目标,你了解了流量和会话监控。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值