故障排除

本部分提供了关于在使用本应用程序及应用程序处理指南时常见问题的描述。如果您确实需要联络技术支持部门,本部分的内容将有助于您收集技术支持部门为您提供协助时所需的信息。

使用日志文件

如果您遇到与安全控制台或扫描引擎相关的问题,查阅故障排除日志文件可能会为您提供一些帮助。在例行维护和调试方面,日志文件也很有用。

本部分不包含与扫描事件相关的扫描日志。请参见查看扫描日志

查找每个日志文件并了解其用途

日志文件位于安全控制台上的 [installation_directory]/nsc/logs 目录及扫描引擎上的 [installation_directory]/nse/logs 中。下列日志文件可供您使用

在较早的产品版本中,API 信息被存储在 nsc.log 中。

日志文件的结构和内容

日志文件具有下列格式

[yyyy-mm-ddThh:mm:ss GMT] [LEVEL] [Thread: NAME] [MESSAGE]

例如

2011-12-20T16:54:48 [INFO] [Thread: Security Console] Security Console started in 12 minutes 54 seconds

日期和时间与生成消息的事件所发生的情况相对应。

每个日志消息都有一个严重性级别

级别 含义 例子
ERROR 阻止系统进程的顺利执行且可能阻止用户操作如扫描的异常事件 安全控制台无法连接数据库
WARN 阻止系统进程的顺利执行但不会完全阻止用户操作如扫描的异常事件 破坏安全控制台与远程扫描引擎的通讯
INFO 可预期的正常事件,在提供关于系统活动的有用信息方面值得注意 安全控制台试图与远程扫描引擎建立连接
DEBUG 可预期的正常事件,除进行调试外,无需查看 在安全控制台/扫描引擎协议内执行各种操作

为了对主要问题进行故障排除而读取日志文件时,您可能会发现首先查看 ERROR 和 WARN 级别的消息十分有用。

线程能够识别生成消息的进程。

对显示哪种日志严重性级别的配置

在默认情况下,所有日志文件均会显示 INFO 及更高严重性级别的消息。这表示,它们会显示 INFO、WARN、ERROR 消息,但不会显示 DEBUG 消息。您可以更改在日志文件中显示哪种严重性级别。例如,您可能希望过滤除 WARN 和 ERROR 严重性级别之外的所有信息。或者,您可能希望加入 DEBUG 消息,以进行维护和调试。

配置步骤对于安全控制台和分布式扫描引擎都是一样的。如需对显示哪种日志严重性级别进行配置,请执行以下操作

注意: 在 user-log-settings.xml 文件中,默认参考的是 nsc.log 文件或 nse.log 文件,具体情况取决于安装组件是安全控制台还是分布式扫描引擎。

  1. 在文本编辑器中,打开 user-log-settings.xml 文件,该文件位于 [installation_directory]/nsc/conf 目录中。
  2. 通过删除打开和关闭注释标签的方式,取消对下列行的注释<!-- -->

<!-- <property name="default-level" value="INFO"/> -->

  1. 如果您希望更改 nsc.log 文件适用于安全控制台安装或 nse.log 文件适用于扫描引擎安装的日志级别,请保持默认值不变。否则,请将该值更改为下列任一值,以指明不同的日志文件
  2. 将行内的值更改为您首选的严重性级别DEBUG、INFO、WARN 或 ERROR。例如<property name="default-level" value="DEBUG"/>
  3. 如需更改其他日志文件的日志级别,只需复制并粘贴取消注释的行,即可更改相应的值。例如

<property name="default-level" value="DEBUG"/>

<property name="auth-level" value="DEBUG"/>

<property name="access-level" value="DEBUG"/>

<property name="mem-level" value="DEBUG"/>

  1. 保存并关闭文件。

大约 30 秒后,即可应用更改。

向技术支持部门发送日志

在故障排除页面上点击发送日志,您就可以向技术支持部门发送由扫描引擎生成的日志。

注意: 在直接链接不可用的情况下,本应用程序也支持可选的 SMTP电子邮件传送机制。请联络技术支持部门,以了解更多信息。

如需发送日志

  1. 故障排除页面上点击发送日志

安全控制台会显示一个供上传日志使用的方框。

  1. 从下拉列表中选择一种上传方法。
  2. 输入与日志一同发送的消息。

此消息可能涉及扫描错误、支持实例或异常系统行为的报告。

  1. 点击发送日志

使用代理服务器发送日志

如果安全控制台不能直接访问互联网,您可以使用代理服务器向技术支持部门发送日志。

如需配置更新的代理设置

  1. 点击管理标签。

将显示管理页面。

  1. 管理页面,点击安全控制台管理链接。

安全控制台配置面板会显示出来。

  1. 进入代理设置页面并找到该页面上的支持代理部分。
  2. 在相应字段输入关于代理服务器的信息
  3. 当您输入信息后,请点击保存

s_proxy_settings_sendlogs.jpg 

安全控制台配置面板 - 向技术支持部门发送日志的代理设置

通过日志对扫描准确性问题进行故障排除

如果您的扫描产生了不准确的结果,例如误报、漏报或指纹不正确,您可以使用扫描日志功能收集可帮助技术支持团队进行故障排除的数据。资产配置导出 (ACES) 是一种日志功能,可在扫描时收集对故障排除有用的信息,例如 Windows 注册密钥、SSH 命令执行和文件版本。

以下是 ACES 日志文件中的示例

<ace:collected_object>

<ace:source-id>0</ace:source-id>

<ace:thread-activity>do-unix-create-system-fingerprint@example.com:22</ace:thread-activity>

<ace:remote_execution_item id="42">

<ace:command>freebsd-version</ace:command>

<ace:rc datatype="int">0</ace:rc>

<ace:stdin status="does not exist"/>

<ace:stdout>10.0-RELEASE

</ace:stdout>

<ace:stderr status="does not exist"/>

<ace:start_time datatype="int">1443208125966</ace:start_time>

<ace:end_time datatype="int">1443208125982</ace:end_time>

</ace:remote_execution_item>

</ace:collected_object>

使用此功能包括两个主要步骤

  1. 用在出现不准确结果的资产上全面启用的具有 ACES 日志功能的模板运行扫描。
  2. 向技术支持部门发送一份包含 ACES 日志数据的文件。

注意: 我们建议您扫描单项资产或者启用了 ACES 日志功能的小站点。

在自定义扫描模板中启用 ACES

“资产配置导出”扫描模板默认启用 ACES 日志功能。但是,您或许希望用可在您的特定环境中发挥更高性能的调节后的自定义模板进行扫描。若要在自定义扫描模板中启用 ACES

  1. 点击管理图标。
  2. 在“扫描选项”区域,点击“创建”链接以创建新模板,或者点击“管理”链接基于现有模板创建自定义模板。
  3. 如果您点击了“管理”链接,则选择您想要新模板借鉴的模板,然后点击“复制”图标。
  4. 点击新模板配置中的“日志”标签。
  5. 选择全面设置,启用 ACES 日志功能。

注意: 默认设置目前不提供任何 ACES 日志功能;但是,在未来的更新版本中,它将提供部分 ACES 日志功能。

  1. 根据需要配置模板的其余部分,并保存该模板。

用启用了 ACES 的模板运行认证扫描

如果您想用该模板扫描整个站点,请将其添加至站点配置中,然后扫描该站点。请参见选择扫描模板

注意: ACES 日志功能收集了大量重要的数据,这些数据可能会影响磁盘空间,这取决于您扫描的资产数量。

如果您想用该模板手动扫描特定的资产,请将该模板添加至扫描对话框。请参见运行手动扫描

检索收集的 ACES 数据并将其发送给技术支持部门

每次启用 ACES 日志功能进行扫描都会在您的扫描目录中保存一份 ACES 数据的 Zip 压缩文件。您可以在以下地址中找到该文件
[installation_directory]/nse/scans/[silo_ID]/[scan_ID]/ACES.zip。

例如

/opt/rapid7/nexpose/nexpose/nse/scans/00000000/0000000000000001$/ACES.zip

若要确定具体的扫描 ID,请采取以下步骤

  1. 在安全控制台网页界面中,点击启用了 ACES 日志功能的扫描的链接。
  2. 在扫描页面的 URL 中查看扫描 ID。

确定您的扫描 ID

  1. 咨询技术支持部门了解发送数据的合适方法,然后将 ACES.zip 文件与扫描日志一同发送给技术支持部门。

运行诊断

您可以运行一些诊断功能,以发现可能对系统性能造成影响的问题。

选择诊断例行程序

如需运行针对内部应用程序问题的诊断

  1. 点击管理标签。
  2. 安全控制台将显示管理页面。
  3. 点击故障排除旁的诊断

安全控制台将显示故障排除页面。

  1. 点击您想要执行的每个诊断例行程序的复选框。

在执行被请求的诊断后,安全控制台将显示结果表格。每个项目都含有一个红色或绿色的图标,以指明各个系统组件是否存在问题。

解决启动过程中的故障

如果在启动过程中子系统出现严重错误,应用程序会尝试将适当的维护任务加入队列,以响应此故障。然后,它会在维护模式重新启动。

如果您是管理员,那么,您可以登录并检查故障的原因。如果需要,您可以采取某些措施对该问题进行故障排除。

两种类型的恢复任务可供您使用

如果维护网络服务器的默认端口 3780 不可用,那么,在出现极其严重故障的时候,应用程序可能无法在维护模式重新启动。如果已经存在正在运行的实例,或者如果一个或多个关键配置文件失效或丢失,则会出现这种情况。这些文件带有此类扩展名,如 .nsc、.xml 和 .userdb

解决刷新会话方面的故障

当网页界面会话在闲置会话中发生超时时,安全控制台会显示登录窗口,以便用户可以刷新会话。如果网页浏览器和安全控制台网页浏览器之间的通讯问题阻止刷新会话,则用户会看到一条错误消息。如果用户尚未保存工作,那么,他/她不应离开此页面或关闭浏览器,因为在解决通讯问题之后此工作可能会丢失。

以下原因可能会导致发生通讯故障。如果出现下列任何原因,请采取适当的措施

安全控制台对用户刷新会话请求的极度延迟也可能会导致出现故障消息。

重置账户封锁

当用户使用错误密码多次尝试登录时,应用程序会封锁用户,直至针对该用户重置封锁为止。

默认的封锁阈值为 4 次尝试。全局管理员可以在安全控制台配置—网络服务器页面上更改此参数。请参见 更改安全控制台网络服务器默认设置

您可以使用下列三种方法中的任意一种,以重置锁定

慢速扫描或搁置扫描

有时,扫描需要占用异常长的时间或者似乎已经完全停止。

人们无法准确地预测扫描应该占用多长时间。扫描时间会根据各种因素而发生变化,如目标资产的数量以及扫描模板的彻底性或复杂性。不过,您可以对比之前扫描的扫描时间,以观察扫描是否需要异常长的时间才能完成。

一般来说,如果扫描在单个主机上运行的时间超过 8 小时或在既定站点上运行的时间超过 48 小时,我们建议您检查某些问题。

解决延迟扫描操作的技巧

如果您尝试开始、暂停、恢复或停止扫描,且长时间显示一条指示操作正在进行的消息,这可能是在安全控制台与扫描引擎通讯的过程中出现了与网络相关的延迟。在低带宽或高延迟的网络中,延迟扫描操作可能会导致安全控制台/扫描引擎通讯中的频繁超时,而这种情况可能会造成安全控制台接收扫描状态信息的滞后。为了减少超时的发生,您可以增加扫描引擎响应超时设置。请参见 配置安全控制台与分布式扫描引擎的连接

扫描内存问题

由于内存问题的缘故,扫描可能会进展缓慢,或者可能会失败。请参见内存不足问题

扫描复杂度

对于每一个已发现的目标主机,本应用程序在运行任何漏洞检查之前都会对其执行端口扫描。目标端口的范围属于可配置的扫描模板设置。扫描时间与扫描的端口数量成比例关系。

特别是,由于应用程序在默认情况下每秒发送不超过两个 UDP 数据包,以避免触发内置于大部分网络设备 TCP/IP 堆栈的 ICMP 速率限制机制,因此,UDP 端口扫描可能会进展缓慢。

为了提高扫描速度,请考虑将扫描配置为仅检查公认端口或已知主持相关服务的特定端口。请参见使用扫描模板和调整扫描性能

扫描引擎离线

如果扫描引擎在扫描过程中离线,扫描将会显示搁置。当扫描引擎在扫描过程中离线时,数据库需要从未完成的扫描中删除数据。此过程会留下类似于下列扫描日志的消息

DBConsistenc3/10/09 12:05 PM: Inconsistency discovered for dispatched scan ID 410, removing partially imported scan results...

如果扫描引擎离线,请重新启动。然后,前往扫描引擎配置面板,以确认扫描引擎处于活动状态。请参见用户指南中的 配置分布式扫描引擎

查看扫描日志

您可以查看正在进行或已完成的扫描的活动日志。

如需查看扫描日志

  1. 点击查看扫描日志

控制台会显示扫描日志。

  1. 点击您的浏览器上的后退按钮,可返回至扫描进程页面。

被用户终止的扫描

如果另一名用户终止扫描,则扫描会显示为已搁置。如需确定是否为此类情况,请检查日志,查看类似于下列内容的消息

InsightVM3/16/09 7:22 PM: Scan [] stopped: "maylor" <>

请参见查看扫描日志

慢速报告或搁置报告

有时,生成报告需要占用异常长的时间或者似乎已经完全停止。您可以在安全控制台日志中找到报告错误。

报告内存问题

由于内存问题的缘故,生成报告可能会进展缓慢,或者可能会失败。请参见内存不足问题

过期的扫描数据

数据库速度会影响报告速度。久而久之,旧时扫描数据将会在数据库内积聚。这种情况能够导致数据库运行缓慢。

如果您发现报告进程变得缓慢,请查看安全控制台日志,以检查持续时间内与其他报告任务不一致的报告任务,如下方例子所示

nsc.log.0:Reportmanage1/5/09 3:00 AM: Report task serviceVulnStatistics finished in 2 hours 1 minute 23 seconds

您通常可以通过清理数据库的方式来提高生成报告的速度。定期的数据库维护功能可以删除残余的扫描数据和主机信息。请参见查看扫描日志数据库备份/恢复以及数据保留

内存不足问题

扫描和报告都属于内存密集型任务,因此,与此类活动相关的错误通常可能就是内存问题。您可以通过更改设置的方式控制内存使用情况。一些内存问题与您控制系统资源的方式有关。

java.lang.OutofMemoryError

如果应用程序崩溃,您可以通过查看日志文件中的下列消息来验证崩溃的原因为内存不足

java.lang.OutOfMemoryError: Java heap space

如果您看到此消息,请联络技术支持部门。如果没有得到相关指示,请不要重新启动应用程序。

修复内存问题

由于扫描属于经常执行的内存密集型任务,您应该控制扫描所使用的内存量,以便内存问题不会反过来影响扫描性能,这一点至关重要。我们可以采取很多策略,以确保内存限制不会对扫描产生影响。

降低扫描复杂度

随着目标主机数量的增加,存储扫描信息所需的内存量也随之增加。如果正在接受扫描的主机含有过多数量的漏洞,那么,扫描会因内存不足而搁置。

如需降低既定扫描的复杂度,请尝试如下几种方法

对某次扫描未涉及的任何漏洞实施修补后,将已排除的 IP 地址或漏洞添加至站点配置中,并再次运行扫描。

如需了解更多信息,请参见的 配置分布式扫描引擎使用扫描模板和调整扫描性能

减少扫描计数

同时运行多个扫描可能会导致安全控制台用完内存。减少同时执行的扫描数量可以节约内存。

升级主机

如果扫描一直导致内存用完,请考虑为服务器添加内存。如需添加内存,您可能也有必要升级服务器操作系统。相较于 32 位操作系统,本应用程序在 64 位操作系统上可以处理更多内存。不过,64 位操作系统的运行需要占用 8 Gb 内存。

更多有关管理扫描相关资源的信息

请参见下列章节,以了解更多有关使扫描更具内存友好性的详细信息

更新失败

系统更新偶尔会遭遇失败。您可以通过检查系统日志来查明原因。

已损坏的更新表格

应用程序会在更新表格中记录先前应用的更新。如果更新表格已损坏,应用程序将无法确定需要下载和应用哪个更新。

如果由于更新表格已损坏而无法安装更新,扫描控制台日志会含有类似于下列内容的消息

AutoUpdateJo3/12/09 5:17 AM: NSC update failed: com.rapid7.updater.UpdateException: java.io.EOFException

at com.rapid7.updater.UpdatePackageProcessor.getUpdateTable(Unknown Source)

at com.rapid7.updater.UpdatePackageProcessor.getUpdates(Unknown Source)

at com.rapid7.updater.UpdatePackageProcessor.getUpdates(Unknown Source)

at com.rapid7.nexpose.nsc.U.execute(Unknown Source)

at com.rapid7.scheduler.Scheduler$_A.run(Unknown Source)

如果出现这种情况,请联络技术支持部门。请参见查看扫描日志

中断的更新

在默认情况下,应用程序能够自动下载并安装更新。应用程序可能会下载某个更新,但在尝试安装的过程中遭遇失败。

您可以通过查看扫描日志来查明是否出现这种情况。

请检查可以证明长时间不活动的更新时间戳。

AU-BE37EE72A11/3/08 5:56 PM: updating file: nsc/htroot/help/html/757.htm

NSC 11/3/08 9:57 PM: Logging initialized (system time zone is SystemV/PST8PDT)

您可以使用 update now 命令提示,以手动方式再次尝试更新

  1. 点击管理标签,进入管理页面。
  2. 在故障排除部分点击运行控制台命令。 

命令控制台页面会显示出来。

  1. 在文本框中输入命令 update now 并点击执行

安全控制台会显示一条消息,以指明更新尝试是否成功。请参见查看扫描日志

已损坏的文件

如果应用程序由于文件已损坏而无法执行更新,扫描控制台日志会含有类似于下列内容的消息

AU-892F7C6793/7/09 1:19 AM: Applying update id 919518342

AU-892F7C6793/7/09 1:19 AM: error in opening zip file

AutoUpdateJo3/7/09 1:19 AM: NSC update failed: com.rapid7.updater.UpdateException:

java.util.zip.ZipException: error in opening zip file

at com.rapid7.updater.UpdatePackageProcessor.B(Unknown Source)

at com.rapid7.updater.UpdatePackageProcessor.getUpdates(Unknown Source)

at com.rapid7.updater.UpdatePackageProcessor.getUpdates(Unknown Source)

at com.rapid7.nexpose.nsc.U.execute(Unknown Source)

at com.rapid7.scheduler.Scheduler$_A.run(Unknown Source)

如果由于文件已损坏而发生更新失败,这表示更新文件已被成功下载,但是该文件是无效的。如果出现这种情况,请联络技术支持部门。请参见查看扫描日志

与更新服务器中断连接

如果安全控制台和更新服务器之间的连接无法实现,日志中会显示类似于下列内容的消息

AU-A7F0FF3623/10/09 4:53 PM: downloading update: 919518342

AutoUpdateJo3/10/09 4:54 PM: NSC update failed: java.net.SocketTimeoutException

java.net.SocketTimeoutException 是无法实现与更新服务器连接的标志。如果连接已经中断,那么,在本次更新失败之前的其他更新均已成功完成。

您可以使用 update now 命令提示,以手动方式再次尝试更新。请参见中断的更新查看扫描日志