在本节课中,你将了解FortiOS的体系结构。
在完成这节课之后,你应该能够达到这张幻灯片上显示的目标。
在本节中,你将了解数据包的生命周期。
PPP使用防火墙策略配置从一组并行选项中选择,以确定处理数据包的最佳路径。由PPP识别的路径由数据包必须通过的各种进程组成。硬件,如CP8、CP9或网络处理器,可以减轻和加速许多这些进程。FortiGate硬件和软件配置会影响数据包的路径。
这张幻灯片显示了一个数据包在进入、通过和离开FortiGate时所经过的所有步骤。此场景适用于没有网络处理器的FortiGate。
FortiGate在包生命周期的早期执行一些安全检查,如DoS检查、反向路径转发(RPF)检查和IP完整性报头检查。FortiGate这样做是为了确保包在允许包通过其余流程之前处于可接受的参数范围内。
FortiGate将IPsec VPN加密和解密以及基于流的检查交给SPU(如果它们存在于FortiGate硬件上)。此外,一些FortiGate型号支持网络处理器,如NP6或NPGlite。FortiGate将不需要UTM或NGFW处理的数据包卸载给这些网络处理器以加速。
在本节中,你将了解FortiGate如何使用内存。
要了解FortiGate如何使用其内存,你需要了解FortiOS的体系结构。FortiOS的核心是它的内核。FortiGate在内核中做出一些最基本和重要的决策,比如如何路由数据包,或者何时将会话卸载到NPU处理器。FortiOS运行在硬件上。设备驱动程序连接内核和硬件。用户空间位于内核之上。多个应用程序进程或守护进程在用户空间中运行。在内核和用户空间之上是配置层。
FortiOS是64位体系结构,因此内核不需要使用内存分页来访问整个内存空间。内核可以直接访问所有内存空间。
本幻灯片中显示的命令显示:
● 系统内存的总量
● 可用内存的总量
FortiGate分配内存有五个主要目的:
● 内核内存板
● 系统输入输出缓存
● 缓冲区
● 共享内存
● 进程内存
在本课中,你将了解到这些目的。
内核内存板是具有共同目的的对象的集合。内核使用它们在内存中存储信息。
这张幻灯片展示了一些板的例子。有一些板用于存储有关TCP会话的信息。路由缓存中的条目也存储在内存板中。
要检查有多少内存被分配给内核板,请使用本幻灯片中显示的命令。
第一列显示了板名称。第二列显示活动对象的总数,第三和第四列显示可用对象的数量以及每个对象的大小。
你可以通过将可用对象的数量乘以它们的大小来计算分配给每个板类型的内存总量。
你可以使用这个命令的输出来确定会话表使用了多少内存。如果该值过高,则可能表明配置需要进行一些调整(例如,设置更短的会话TTL),或者FortiGate型号对于跨越设备的通信量太小。
没有直接读和写硬盘或闪存盘。每次访问都是通过存储在内存中的缓存—系统I/0缓存来完成的。
系统I/O高速缓存用于加快对存储在硬盘和闪存磁盘存储器中的信息的访问。有些进程(如日志记录、WAN优化和显式代理)将信息存储在硬盘中,因此它们获得了这种内存分配所提供的性能提升。
当一个I/O缓存页面最近被使用或修改时,它被标记为活动的。它在一段时间未被使用后进入非活动状态。如果需要,不活动的页可以由内核回收。
本幻灯片中显示的命令显示了为I/O缓存分配的内存总量。缓存值是所有活动页面和非活动页面的总和。
在内核层之上,运行着多个应用程序进程或守护进程。操作系统为每个进程分配单独的内存块。进程可以访问分配给它的内存,但不能访问分配给任何其他进程的内存。因此,一个进程不能通过向分配给另一个进程的内存中读取或写入数据来与另一个进程共享信息。为此,操作系统动态分配共享内存(SHM)。多个进程可以访问SHM,从而允许它们共享信息。
这张幻灯片展示了如何查看每个进程使用了多少内存空间。幻灯片上显示的命令显示了最后一列中显示的信息。对于每个进程,该命令还显示ID号、状态和CPU使用情况。你可以指定刷新频率和要显示的行数。
在运行该命令时,可以按Shift+P按CPU使用情况对进程进行排序,或按Shift+M按内存使用情况对进程进行排序。要停止该命令,按Ctrl+C或Ctrl+Q。
这张幻灯片上的表格展示了一些最常见的过程。
这张幻灯片上的表格显示了更多最常见的进程。
命令diagnostic sys top显示每个进程的状态。进程可以处于以下四种状态之一:休眠(S)、运行(R)、不受干扰(D)或僵死(z)。
S和R状态是正常的。如果进程短暂地进入D状态,这也是正常的。Z状态是不正常的。另外,如果进程长时间处于D状态,这是不正常的。这通常表明进程没有正常工作。
In this section, you will learn about general system troubleshooting commands.
在本节中,你将了解一般的系统故障排除命令。
本幻灯片中显示的命令通常是故障排除时首先使用的调试命令之一。输出显示固件版本、FortiGuard数据库版本、许可证状态、操作模式、VDOM数量和系统时间。
本幻灯片中显示的命令显示了内存和CPU的总体使用情况。它还显示会话创建率、捕获的病毒数量和IPS阻止的攻击数量。最后一行显示系统正常运行时间,该输出让你快速了解设备正在处理多少流量。
实时调试命令实时生成有关特定FortiGate进程或特性正在执行的操作的信息。
调试级别是位掩码值,用于指定要显示的消息类型。调试值的含义取决于每个进程。但是,对于所有情况,调试级别为0表示没有输出(禁用),而调试级别为-1表示启用所有可能的消息类型。
这张幻灯片展示了用于启用IPsec实时调试输出的两个命令。你还可以启用将系统时间提前到每个调试行的选项。在使用任何实时调试之后禁用它是很重要的,因为它们会消耗FortiGate资源,而且有些可能是CPU密集型的。
应用层测试命令并不实时显示信息,但它们确实显示了关于特性或过程的统计信息和配置信息。你还可以使用其中的一些命令重新启动进程或对其操作执行更改。
在本节中,你将研究保护模式,现在你对FortiGate如何使用内存有了更好的理解。
保护模式是一种保护机制,当FortiGate没有足够的可用内存来处理流量时触发。内容检查(特别是基于代理的)增加了简单防火墙策略之外的内存使用。换句话说,当反病毒启用时,FortiGate更有可能使用更多内存,这可能导致FortiGate进入保护模式。你可以通过运行CLI命令diagnosis sys top来识别是否反病毒进程或任何其他进程使用了太多内存。
FortiGate只有一种保护模式。它是根据内存使用情况触发的。你可以在CLl上配置三个内存阈值:
● 极端:FortiGate开始删除新的会话的阈值
● 红色:FortiGate进入保护模式的阈值
● 绿色:FortiGate退出保存模式的阈值
你可以使用此幻灯片中显示的命令更改默认的保护模式阈值。
此幻灯片显示了当FortiGate进入内存保护模式时在事件日志中生成的条目。如果GUl负载过重,它可能没有响应,导致GUI日志无法访问。在这种情况下,你可以在CLI上查看保护模式消息的崩溃日志。这张幻灯片展示了一个典型的保护模式崩溃日志条目的示例。
使用此幻灯片中显示的命令来控制FortiGate如何处理保护模式期间需要基于代理的内容检查的流量。
有两种设置——av-failopen-session和av-failopen。启用av-failopen会话时,FortiGate应用在av-failopen中配置的操作。默认情况下,FortiGate会阻塞新的会话(av-failopen-session disable)。
所有基于流量的检查都由IPS引擎处理。当FortiGate处于保存模式时,你可以配置IPS failopen设置来管理基于流量的检查。
当你使用基于代理的检查混合了UTM配置文件,并且FortiGate上启用了基于流的检查时,nTurbo就不起作用了。在这种情况下,所有用于基于流检查的数据包都需要通过套接字缓冲区并交付给IPS。当套接字缓冲区已满时,该事件被记录为故障打开事件,并使用会话行为反映故障打开设置。默认情况下,IPS故障打开是禁用的,这意味着IPS引擎将删除所有需要基于流检查的新会话,但将尝试处理所有现有会话。如果启用IPS故障打开,IPS引擎将不执行任何扫描,但将允许新包。
如果你拥有所有基于流的UTM配置文件,nTurbo将处理除三向握手之外的所有数据包,并且它不需要任何软件套接字缓冲区。
此幻灯片上显示的命令用于识别FortiGate设备当前是否处于保护模式。
FortiGate还有一个机制可以在内存不足时释放内存。如果内核不能分配更多的内存页,它会删除最老的会话。本幻灯片中显示的命令显示内核由于这种机制而删除的会话数量。
FortiGate有一种机制来保护内存使用免受某些形式的DoS攻击。FortiGate将会话表中的条目分类为临时会话,如果该条目是未完全建立的TCP会话(三路握手未完成),或者是只接收到一个包的UDP会话。在一些Dos攻击中。这类会话的数量会不正常地增加,可能会消耗单位内存。FortiGate设置了会话表中可以同时存在的临时会话的最大数量的硬限制。
如果FortiGate频繁进入保护模式,或者它的内存利用率过高,你可以做什么?在本节中,你将了解如何通过微调FortiGate配置来优化内存使用。
许多FortiGate进程,如DLP或AV扫描,是内存密集型的。因此,内存优化是重要的,特别是在小型设备中,以保证这些进程不会强迫FortiGate进入内存保存模式。这张幻灯片展示了一些优化内存使用的建议。在经常进入保护模式的设备中,这些技巧可能会显著增加可用内存。
第一步也是最合理的一步是禁用不需要的功能。例如,如果网络已经有一个反垃圾邮件的设备,管理员不需要在FortiGate做反垃圾邮件。而且,通常不是所有的IPS签名都是必需的。
另一个建议是减少要检查的最大文件大小,默认设置为10MB。你可以将此值减小到2或3MB,而不会显著降低病毒捕获率,因为典型的病毒大小小于1MB。
此外,还可以减少分配给某些缓存的内存量,比如用于FortiGuard和DNS的缓存。
FortiGate会话表可以消耗内存的重要部分,特别是在流量高的网络中。默认情况下,没有流量的会话在表中最多保留一个小时。
尽管某些应用程序可能需要这么高的TTL,但在大多数网络中,你可以减少会话TTL。当你减小TTL时。FortiGate将空闲会话更快地释放出来,从而增加了可用内存的数量。
在FortiGate配置中有四个地方可以减少会话TTL。其中两个是:
● 全局,所有流量
● 基于IP协议和端口号
你可以减少会话TTL的其他两个地方是:
● 对于每个防火墙策略
● 对于每个应用控制
如果应用程序需要高会话TTL,你可以将TTL的全局值减少到5分钟。但是,你也可以为特定的应用程序端口号或防火墙策略设置一个更高的数字。
你还可以减少大多数TCP会话计时器的默认值,而不会给应用程序造成问题。这张幻灯片展示了一些等于或低于默认值的推荐值。使用这些推荐值来优化内存使用。
tcp-halfopen-timer控制在一个SYN包之后,一个没有SYN/ACK的会话在表中保留多久。
tcp-halfclose-time控制在FIN包之后,没有FIN/ACK的会话在表中保留多长时间。
tcp-timewait-timer控制一个会话在FIN/ACK包之后在表中保留多久。一个关闭的会话在会话表中保留几秒钟,以允许任何无序的数据包。
在本节中,你将了解FortiOS工作空间模式。
工作区模式允许管理员进行批量更改,这些更改直到提交事务时才实现。在提交之前,可以根据需要恢复或编辑更改,而不会影响当前操作。
在工作区模式下编辑对象时,将锁定该对象,防止其他管理员编辑该对象。将显示一条警告消息,让管理员知道该对象当前正在另一个工作区事务中配置。
所有管理员都可以使用工作空间模式;工作区模式下的权限与帐户配置文件中定义的权限相同。
如果没有活动,工作空间模式事务将在五分钟内超时。当事务超时时,将丢弃所有更改。将显示一条警告消息,让管理员知道超时即将来临或已经发生。
工作区模式仅在FortiGate CLI中可用。
命令config-transaction status显示当前管理员是否正在提交挂起的工作区上工作。如果是这样,输出将显示工作空间的事务ID。
要查看有关所有活动工作空间事务(来自多个并发管理员)的信息,请使用confiq-transaction show txn-info命令。输出显示每个事务及其过期时间的标识符。它还显示在每个工作空间上工作的管理员的用户名,以及关于这些管理员如何连接以及从何处连接的信息。
你可以使用configtransaction show txn- clio -commands命令列出要在工作区中提交的挂起的CLI更改。
在本节中,你将学习如何排除系统崩溃的故障。
在一些FortiGate型号中,可以配置设备将所有控制台日志存储在闪存中。这在排除意外重启和设备随机失去响应时特别有用。一旦FortiGate存储了日志,你可以在CLI上显示它们,或者从GUl下载它们,以便进一步分析。
此幻灯片显示用于启用、显示和清除控制台日志的命令。
当设备崩溃时,通常通过控制台端口生成故障转储消息。故障转储消息可以为Fortinet开发人员提供有用的信息。如果问题是FortiGate意外重启,你应该检查日志、控制台日志和崩溃日志。如果FortiGate型号不支持控制台日志,保持笔记本电脑连接到控制台端口并等待另一个崩溃发生。
FortiGate在停止处理流量时冻结,你不能连接到它,也不能访问它的控制台端口。只有反复开电源才能解决这个问题。在这些情况下,你可以捕获控制台端口中的任何故障转储。此外,对于具有多个CPU的型号,你可以启用NMI watchdog功能,当最近10分钟内没有计划新的守护进程时,该功能会自动导致系统崩溃(并强制执行故障转储)。这表明机组没有正常运行,可能被冻结。
一些FortiGate型号也有一个外部NMI按钮。如果设备被冻结并且没有生成故障转储,你可以按NMI按钮强制崩溃并生成故障转储。
每次应用程序崩溃或关闭时,崩溃日志中都会生成一个条目。当应用程序崩溃时,该条目包含应用程序的名称、崩溃时间和终止信号。
这张幻灯片展示了崩溃日志中的崩溃样本。在本例中,失败的应用程序是管理SSL VPN连接的sslvpnd进程。终止信号为11,这是一个分割故障。
这张幻灯片上的表格包含了最常见的终止信号数。任何管理员都可以使用本幻灯片所示的命令手动终止进程,然后是终止信号号和进程ID。命令diagnostic sys top列出了进程ID号。在正常情况下通常不需要手动终止进程。如果你必须杀死一个进程,使用终止信号9不恰当地杀死一个进程会使一个FortiGate系统不稳定。
请注意,并不是所有的信号数都会生成崩溃日志。
那么,你怎么知道崩溃日志是否正常呢?
在大多数情况下,崩溃日志中的条目是正常的。如果崩溃日志条目与FortiGate功能失败或FortiGate异常行为同时发生,则可以认为是可疑的。
例如,当设备意外重启时生成的崩溃日志条目可能会提供有关原因的信息。当所有SSL VPN用户断开连接时,sslvpnd进程中的崩溃也是相关的。崩溃日志包括关于崩溃的详细信息,以及Fortinet开发可用于识别触发问题的代码的信息。
这张幻灯片展示了你在这一课中涵盖的目标。
通过掌握本课所涉及的目标,你了解了Fortios的体系结构。