教程篇(7.4) 02. 系统资源 & 网络安全支持工程师 ❀ FORTINET认证解决方案专家

 在本课中,你将了解FortiOS系统资源。

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

  通过展示对FortiOS系统资源的充分理解,你将能够识别FortiOS如何处理数据包和使用内存。你还将能够诊断高资源利用率,以及保护模式问题和优化内存使用。

 在本节中,你将了解数据包的生命周期。

 PPP使用防火墙策略配置从一组并行选项中进行选择,以确定处理数据包的最佳路径。PPP识别的路径由数据包必须通过的各种进程组成。硬件,如CP8、CP9或网络处理器,可以卸载和加速其中许多进程。FortiGate硬件和软件配置会影响数据包的路径。

  接下来的几张图片提供了流程图,显示了几个场景中数据包处理的示例。请注意,这些示例没有涵盖所有可能的情况,也没有显示检查期间的每个步骤或过程数据包。这些图片的目的是提供FortiGate上数据包流的常见示例。

 上图显示了会话的第一个数据包在进入、通过和退出FortiGate时所经历的步骤。此场景适用于带有安全处理单元(SPU)的FortiGate。

  FortiGate在数据包生命周期的早期执行一些安全检查,例如ACL、HPE和IP完整性标头检查。FortiGate这样做是为了在允许数据包通过其余进程之前,确保数据包在可接受的参数范围内。这些检查由网络处理器处理,以尽量减少对FortiGate CPU的影响。

  每个版本的网络处理器都有标准来定义哪些流量可以卸载。网络处理器允许卸载的会话在会话建立和会话密钥安装在网络处理器中后绕过FortiGate CPU,从而提高了整体性能。网络处理器还可以处理IPsec VPN加密和解密操作,其中硬件支持配置的加密和散列算法。

  内容处理器的功能就像FortiGate CPU的协处理器,通过卸载某些任务来提高整体系统性能,例如与入侵防御系统(IPS)引擎进行基于流的UTM检查的模式匹配,用于深度SSL检查的SSL/TLS解密和加密,以及支持算法的IPsec加密和解密操作。

  请注意,虚拟FortiGate设备的数据包处理是相同的,唯一的区别是CPU处理所有进程,而不是能够将其中一些卸载到网络和内容处理器。

 上图显示了未配置UTM/NGFW检查的既定会话中的后续数据包在卸载到网络处理器后如何由FortiGate处理。在网络处理器中安装会话密钥后,卸载会话的后续数据包会跳过路由和内核处理器,绕过FortiGate CPU,并由网络处理器转发到出接口。

  一个重要的考虑因素是卸载对故障排除的影响。当会话卸载到网络处理器时,你无法通过diagnose sniffer packet或diagnose debug flow CLI命令或GUI上的数据包捕获功能查看这些加速数据包。

 上图显示了FortiGate如何处理基于流的UTM/NGFW配置的既定会话中的后续数据包,其中支持并启用了NTurbo和IPS加速(IPSA)。

  NTurbo是一个功能,可以使基于流的UTM/NGFW会话由NP6或NP7网络处理器加速到IPS引擎。

  IPSA是一个功能,允许将基于流的安全配置文件检查所需的基本或高级模式匹配操作卸载到CP8或CP9内容处理器。启用IPSA后,将编译基于流的模式匹配数据库,并从IPS引擎和IPS数据库下载到内容处理器。

  在网络处理器中安装会话密钥后,加速会话跳过路由和内核处理器的后续数据包,但UTM/NGFW操作仍然由CPU处理,IPSA卸载模式与CP8或CP9内容处理器匹配。

 上图展示了FortiGate如何处理基于代理的UTM/NGFW配置的既定会话中的后续数据包。

  网络处理器不会卸载配置基于代理功能的会话,因此FortiGate CPU通过IPS引擎和FortiOS代理的组合来处理数据包处理和检查。在将数据包交给IPS引擎之前,网络处理器仍然会进行一些早期安全检查,并且仍然可以用于IPsec隧道解密和加密。

  如果配置了SSL深度检查,FortiGate CPU可以利用内容处理器来处理SSL/TLS加密和解密。请注意,当配置SSL深度检查时,数据包流会被修改。

  如果IPS引擎确定会话需要解密:

  ● IPS引擎将数据包发送到代理进行解密。

  ● 代理通过将操作关闭到内容处理器来解密SSL/TLS数据包。

  ● 代理将解密的数据包发回IPS引擎,用于IPS和应用程序控制检查。

  ● IPS引擎将解密的数据包发送回代理,以进行配置的基于代理的检查。

  ● 代理通过将操作卸载到内容处理器来加密SSL/TLS数据包。

 在本节中,你将了解FortiGate如何使用内存。

 要了解FortiGate如何使用其内存,你必须先了解FortiOS的架构。FortiOS的核心是它的内核。内核是FortiGate做出一些最基本和最重要的决定的地方,例如如何路由数据包,或何时将会话卸载到NPU处理器。

  FortiOS在硬件上运行。设备驱动程序将内核与硬件桥接在一起。用户空间位于内核上方。几个应用进程或守护进程在用户空间中运行。在内核和用户空间上方是配置层。

  FortiOS是一个64位架构,因此内核不需要使用内存分页来访问整个内存空间。内核可以直接访问所有内存空间。

  上图显示的命令显示:

  ● 系统内存总量(MemTotal)

  ● 可用内存总量(MemFree)

  FortiGate为五个主要目的分配内存:

  ● 系统I/O缓存

  ● 内核内存板

  ● 缓冲区

  ● 进程内存

  ● 共享内存

  在本课中,你将了解这些目的中的每一个。

  没有对硬盘或闪存盘进行直接读取和写入。每次访问都通过存储在内存中的缓存(系统I/O缓存)完成。

  系统I/O缓存用于加快对存储在硬盘和闪存盘的信息的访问。一些过程,如日志记录、广域网优化和显式代理在硬盘上存储信息,因此它们可以获得此内存分配提供的性能提升。

  I/O缓存页面在最近使用或修改时被标记为活动。在一段时间未使用后,它进入非活动状态。如果需要,内核可能会回收非活动的页面。

  使用上图显示的命令显示为I/O缓存分配的内存总量。在对高内存问题进行故障排除以确定内存分配位置时,此命令非常有用。例如,分配给Active的大量内存可能表明用户进程正在使用大量资源。同样,如果Slab使用大量内存,你可以调查Slab或内核内存,看看哪个对象是罪魁祸首。

  内核内存板是具有共同目的的对象集合。内核使用它们在内存中存储信息。

  上图展示了一些slabs示例。有些slabs用于存储有关TCP会话信息。路由缓存中的条目也存储在内存slabs中。

  要检查分配给内核板的内存量,请使用命令diagnose hardwaresysinfo slab。

  第一列显示了slab名称。第二列显示活动对象的总数,然后是可用对象的数量,然后是每个对象的大小。

  这个值取决于资源的使用情况。例如,如果FortiGate上的tcp会话增加,该slab的可用对象也会增加。

  你可以通过将可用对象的数量乘以其大小来计算分配给每种slab类型的内存总量。

  接下来,检查diagnose system top的输出。它列出了使用CPU或内存最多的进程。

  一些常见的进程包括:

  ● ipsengine、scanunitd和其他检查进程

  ● reportd

  ● fgfmd用于FortiManager连接

  ● forticron用于计划任务

  ● 管理进程(newcli、miglogd、cmdb、sshd和httpsd)

  要按最高CPU使用率对列表进行排序,请按c。要按最高RAM使用率排序,请按m。

  上图的表格显示了一些最常见的进程。

  命令diagnose system top显示每个进程的状态。一个进程可以处于四种状态之一:休眠(S)、运行(R)、不要打扰(D)或僵尸(Z)。

  S和R状态是正常的。如果一个过程短暂地进入D状态,这也是正常的。Z状态不正常。此外,如果一个进程在D状态中停留很长时间,这是不正常的。这通常表明该进程无法正常工作。

 在内核层上方,有多个应用程序进程或守护程序正在运行。操作系统为每个进程分配单独的内存块。一个进程可以访问分配给它的内存,但它不能访问分配给任何其他进程的内存。因此,一个进程不能通过将数据读取或写入分配给另一个进程的内存中来与另一个进程共享信息。

  为此,操作系统动态分配共享内存(SHM)。多个进程可以访问SHM,允许他们共享信息。

  在本节中,你将了解一般系统故障排除命令。

  上图显示的命令通常是你在故障排除时使用的第一批调试命令之一。

  输出显示固件版本、FortiGuard数据库版本、许可证状态、操作模式、VDOM数量和系统时间。

  上图显示的命令显示整体内存和CPU使用情况。它还显示了会话创建率、捕获的病毒数量以及被IPS阻止的攻击数量。最后一行显示系统运行时间。

  此输出可让你快速查看设备正在处理的流量。

  在本节中,你将检查保护模式,现在你已经更好地了解了FortiGate如何使用内存。

  保护模式是一种保护机制,当FortiGate没有足够的内存来处理流量时触发。内容检查(特别是基于代理的)增加了简单的防火墙策略之外的内存使用。换句话说,当启用反病毒软件时,FortiGate更有可能使用更多的内存,这可能会导致FortiGate进入保护模式。可以通过运行CLI命令diagnose sys top来识别反病毒或任何其他进程是否使用了过多的内存。

  FortiGate只有一个保护模式。它是根据内存使用情况触发的。你可以在CLI上配置三个内存阈值:

  ● 极端:FortiGate开始放弃新会话的阈值。

  ● 红色:FortiGate进入保护模式的阈值。

  ● 绿色:FortiGate退出保护模式的阈值。

  你可以使用上图显示的命令来更改默认的保护模式阈值。

  上图显示了FortiGate进入内存保护模式时事件日志中生成的条目。如果GUl负载过重,它可能没有响应,使GUl日志无法访问。在这种情况下,你可以使用上图显示的命令在CLI中查看日志。你还可以在CLI上查看保护模式消息的崩溃日志。

  上图显示了一个典型的保护模式崩溃日志条目的示例。

  使用上图显示的命令来识别FortiGate设备当前是否处于保护模式。

  FortiGate在保护模式下采取哪些行动来保护内存?

  FortiGate激活以下保护措施来恢复内存空间:

  ● FortiGate不接受配置更改,因为它们可能会增加内存使用量。

  ● FortiGate不会运行任何隔离操作,包括将可疑文件转发到FortiSandbox。

 av-failopen设置定义了应用于任何基于代理的检查流量的操作,而Fortigate处于保护模式(只要内存使用量不超过极端阈值)。此设置也适用于基于流的反病毒检查。

  你可以配置三种不同操作之一:

  ● off:所有启用内容扫描的新会话都不会通过,但FortiGate会处理当前的活动会话。

  ● pass(默认):所有新会话都未经检查即可通过,直到FortiGate切换回非保护模式。

  ● one-shot:类似于未经检查的流量通过。然而,即使在离开保护模式后,它也会继续绕过反病毒代理。管理员必须更改此设置,或重新启动FortiGate以重新启动反病毒扫描

  然而,如果内存使用量超过极端阈值,则无论FortiGate配置如何,新会话总是会被丢弃。

  FortiGate不希望看到的另一种状态是av-fail-open会话模式。此模式启动,不是在高内存情况下,而是当FortiGate上的代理用完可用套接字以处理更多基于代理的检查流量时。

  如果启用了av-failopen-session,FortiGate将允许所有会话。否则,默认情况下,它会阻止需要基于代理检查的新会话,直到新套接字可用。

  FortiGate还有一种机制,当没有太多内存可用时可以释放内存。如果内核无法分配更多内存页面,它将删除最早的会话。

  上图显示的命令显示内核因此机制而删除的会话数量。

  FortiGate有一种机制可以保护内存使用免受某些形式的DoS攻击。当它是未完全建立的TCP会话(三次握手未完成)或仅接收一个数据包的UDP会话时,FortiGate将会话表中的条目归类为临时会话。

  在一些DoS攻击期间,这些类型的会话数量往往会异常增加,可能会消耗设备内存。FortiGate对会话表中可以同时存在的临时会话的最大数量设置了硬限制。

  在本节中,你将学习如何通过微调FortiGate配置来优化内存使用。

  许多FortiGate进程,如DLP或反病毒扫描,都是内存密集型的。因此,内存优化很重要,特别是在小型设备中,以保证这些过程不会迫使FortiGate进入内存保护模式。上图展示了一些优化内存使用的建议。这些提示可能会显著增加经常进入保护模式的设备中的可用内存。

  第一步也是最合乎逻辑的步骤是禁用不需要的功能。例如,如果网络已经有用于反垃圾邮件的FortiMail设备,管理员无需在FortiGate上配置反垃圾邮件。此外,通常不需要所有IPS签名。

  另一个建议是减少要检查的最大文件大小,默认设置为10MB。你可以将此值减少到2或3 MB,而不会显著降低病毒感染率,因为典型的病毒大小小于1MB。

  此外,你可以减少分配给某些缓存的内存数量,例如FortiGuard和DNS缓存。

  FortiGate会话表也可以消耗重要部分内存,特别是在高流量的网络中。默认情况下,没有流量的会话在表中保留长达一小时。

  虽然一些应用程序可能需要这么高的TTL,但在大多数网络中,你可以减少会话TTL。当你减少TTL时,FortiGate会更快地老化空闲会话,从而增加可用内存量。

  FortiGate配置中有四个地方可以减少会话TTL。其中两个是:

  ● 全局,对于所有的流量

  ● 基于IP协议和端口号

  另外两个可以减少会话TTL的地方是:

  ● 对于每个防火墙策略

  ● 对于每个应用程序控制

  如果应用程序需要高会话TTL,你可以将全局TTL减少到5分钟。但是,你也可以将其设置为特定应用程序端口号、防火墙策略的更高数字,或者通过使用CLl设置session-ttl选项与应用程序控制应用程序覆盖项一起使用。

 你还可以将大多数TCP会话计时器从其默认值中减少,而不会给应用程序带来问题。上图显示了一些等于或低于默认值的推荐值。使用这些推荐值来优化内存使用。

  tcp-halfopen-timer控制在SYN数据包之后,没有SYN/ACK的会话在表中保留多长时间。

  tcp-halfclose-timer控制在FIN数据包之后,没有FIN/ACK的会话在表中保留多长时间。

  tcp-timewait-t imer控制FIN/ACK数据包后,会话在表中保留多长时间。关闭会话在会话表中再保留几秒钟,以允许任何乱序分组。

  在本节中,你将学习如何对系统崩溃进行故障排除。

  在某些FortiGate型号上,你可以将设备配置为将所有控制台日志存储在闪存中。这在对意外重新启动和随机失去响应的设备进行故障排除时特别有用。一旦FortiGate存储了日志,你可以在CLI上显示它们或从GUl下载它们以进行进一步分析。

  上图显示了启用、显示和清除控制台日志的命令。

  当设备崩溃时,通常通过控制台端口生成崩溃转储消息。崩溃转储消息可以为Fortinet开发人员提供有用的信息。如果问题是FortiGate设备意外重新启动,你应该检查日志、控制台日志和崩溃日志。如果FortiGate型号不支持控制台日志,请将笔记本电脑连接到控制台端口,并等待再次崩溃。

  FortiGate停止处理流量时会死机,你无法连接到它,也无法访问其控制台端口。只有断电重启才能解决问题。在这些情况下,你可以捕获控制台端口中的任何崩溃转储消息。此外,对于具有多个CPU的型号,你可以启用NMI看门狗功能,当过去10分钟内没有安排新的守护程序时,该功能会自动导致系统崩溃(并强制崩溃转储)。这表明设备无法正常运行,可能会死机。

  一些FortiGate型号还有一个外部NMI按钮。如果设备死机且没有生成崩溃转储消息,你可以按NMI按钮强制崩溃并生成崩溃转储消息。

  每次应用程序崩溃或关闭时,都会在崩溃日志中生成一个条目。当应用程序崩溃时,该条目包含应用程序的名称、崩溃的时间和终止信号。

  上图显示了崩溃日志中的崩溃示例。在这个例子中,失败的应用程序是miglogd进程,它处理日志记录。终止信号是11,这是一个分段故障。

  上图显示的表格包含最常见的终止信号号码。任何管理员都可以使用上图显示的命令手动终止进程,然后是终止信号号码和进程ID。diagnose system top命令列出了进程ID号。在正常情况下,通常不需要手动终止流程。如果你必须终止一个进程,请使用终止信号9。不当终止进程可能会使FortiGate系统不稳定。

  请注意,并非所有信号号都会生成崩溃日志。

  进程也可以通过GUI在admin>系统管理>进程监视器下终止。如果你想生成崩溃日志,请在终止进程字段中选择终止&追踪

 那么,你如何知道崩溃日志是否正常?

  在大多数情况下,崩溃日志中的条目是正常的。如果崩溃日志条目与FortiGate功能的故障或FortiGate的异常行为同时发生,你可以认为崩溃日志条目是可疑的。

  例如,设备意外重新启动时生成的崩溃日志条目可能会提供有关原因的信息。当所有SSL VPN用户断开连接时,sslvpnd进程的崩溃也是相关的。崩溃日志包括有关崩溃的详细信息,以及Fortinet support可用于识别哪个代码触发了问题的信息。

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

  通过掌握本课程中涵盖的目标,你学会了如何使用和优化FortiOS系统资源。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值