故障排除

本节提供在使用应用程序时经常遇到的问题的描述和处理这些问题的指导。如果您确实需要联系技术支持,本节将帮助您收集技术支持需要帮助您的信息。

使用日志文件

如果您在使用安全控制台或扫描引擎时遇到问题,您可能会发现查阅日志文件以进行故障排除很有帮助。日志文件对于例行维护和调试也很有用。

本节不涉及与扫描事件相关的扫描日志。看到查看扫描日志

定位每个日志文件并了解其用途

日志文件位于安全控制台的“[installation_directory]/nsc/logs”目录和扫描引擎的“[installation_directory]/nse/logs”目录。日志文件如下:

  • access.log(仅在Security Console上):该文件捕获有关正在被访问的资源的信息,例如Web界面中的页面。在INFO级别,access.log捕获有关API事件的有用信息,例如正在调用的API、API版本和API客户端的IP地址。这对于监视API使用和排除API问题非常有用。该文件被称为access_log在早期的产品版本中。
  • auth.log(仅在Security Console上):该文件捕获每个登录或注销以及身份验证事件,如身份验证失败和锁定。它对于跟踪用户会话很有用。这个文件叫做um_log在早期的产品版本中。
  • nsc.log(仅在安全控制台中):该文件捕获安全控制台中的系统和应用程序级事件。它有助于跟踪和排除与更新、操作调度或分布式Scan Engines通信问题相关的各种问题。此外,如果安全控制台进入维护模式,您可以作为全局管理员登录并使用该文件监视维护模式活动。
  • nse.log(在安全控制台和分布式扫描引擎上):此文件用于排除与漏洞检查相关的某些问题。例如,如果检查产生了意外的结果,您可以查看nse.log文件,以确定扫描目标是如何被指纹识别的。仅在分布式Scan Engines上,此文件还捕获没有记录在任何其他日志文件中的系统和应用程序级事件。
  • mem.log(在安全控制台和分布式扫描引擎上):该文件捕获与内存使用相关的事件。它对于内存密集型操作(如扫描和报告)的故障排除非常有用。
  • engine_communication.log:此文件包含安全控制台与远程扫描引擎通信的相关日志。
  • eso.log:该文件包含了自动操作的相关日志。
  • initdb.log:该文件包含数据库的相关日志。
  • audit.log:此文件记录安全控制台用户创建事件、删除事件、角色更改和站点配置更改。

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

日志文件的结构和内容

日志文件的格式如下:

         
1
[yyyy-mm-ddThh:mm:ss GMT] [LEVEL][线程名][MESSAGE]

例子:

         
1
2011-12-20T16:54:48 [INFO] [Thread: Security Console]安全控制台启动时间12分54秒

日期和时间对应于生成消息的事件的发生。

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

水平

意义

例子

错误

阻止系统进程成功执行的异常事件,可以阻止用户进行扫描等操作

安全控制台连接数据库失败

警告

阻止系统进程成功执行,但不能完全阻止用户操作(如扫描)的异常事件

安全控制台和远程扫描引擎之间的通信中断

信息

一个正常的、预期的事件,它值得注意,可提供有关系统活动的有用信息

安全控制台试图与远程扫描引擎建立连接

调试

正常的、预期的事件,除调试目的外不需要查看

在安全控制台/扫描引擎协议中执行操作

在阅读日志文件以排除重大问题时,首先查找ERROR和warn级别的消息可能会很有用。线程标识生成消息的流程。

配置显示的日志级别

缺省情况下,所有日志文件显示的消息级别为INFO及以上。这意味着它们显示INFO、WARN、ERROR消息,而不显示DEBUG消息。您可以更改日志文件中显示的严重性级别。例如,您可能希望过滤掉除WARN和ERROR级别以外的所有消息。或者,出于维护和调试的目的,您可能希望包含DEBUG消息。

使用日志的命令

可以使用控制台命令控制安全控制台和嵌入式扫描引擎日志级别。有关为分布式扫描引擎配置日志级别的步骤,请参阅使用文件系统部分。有关控制台命令的更多信息,请参见使用命令控制台

命令

描述

例子

日志列表

列出所有日志配置属性

日志列表

日志集[] [value]

将日志记录配置属性设置为指定值。省略了的名字参数将所有属性设置为指定的价值
使用日志列表查看可用的属性名称

日志设置调试
日志设置auth-level调试

日志重置(<名称>)

将日志记录配置属性重置为默认值。省略了的名字参数将所有属性重置为默认值。
使用日志列表查看可用的属性名称。

日志重置
日志重置auth-level

发出命令后,大约30秒后应用更改。

使用文件系统

安全控制台和分布式扫描引擎的配置步骤相同。执行以下步骤配置显示的日志级别。

在user-log-settings.xml文件中,default是指nsc.log文件或nse.log文件,具体取决于安装的组件是安全控制台还是分布式扫描引擎。

  1. 在文本编辑器中打开user-log-settings.xml文件,该文件位于[installation_directory]/nsc/conf目录下。
  2. 通过删除开始和结束注释标记来取消下面一行的注释:<!----><!-- -->
  3. 如果要更改nsc.log(用于安全控制台安装)或ns .log文件(用于扫描引擎安装)的日志级别,请保留该值默认的不变。否则,将该值修改为以下任意一种,以指定不同的日志文件:
    • 身份验证
    • 访问
    • mem
  4. 将行中的值更改为您喜欢的严重性级别:DEBUG、INFO、WARN或ERROR。例子:<属性名= "默认级别" value = "调试" / >
  5. 要更改附加日志文件的日志级别,只需复制并粘贴未注释的行,并相应地更改值。例子:
         
1
<属性名= "默认级别" value = "调试" / >
2
<属性名= " auth-level " value = "调试" / >
3.
<属性名= "访问级别" value = "调试" / >
4
<属性名= " mem-level " value = "调试" / >
  1. 保存并关闭文件。

大约30秒后应用更改。

将诊断日志发送到Rapid7 Support

安全控制台和扫描引擎生成的诊断日志可以通过诊断页面发送到Rapid7 Support:

  1. 在安全控制台中,导航到政府页面。
  2. 在“维护、存储和故障处理”区域,单击诊断
  3. 检查所需的诊断框。
  4. 点击发送日志

通过代理服务器发送日志

如果安全控制台不能直接访问internet,您可以使用代理服务器将日志发送到Rapid7 Support。

设置日志发送的代理设置。

  1. 在安全控制台中,导航到政府页面。
  2. 在“全局和控制台设置”部分,单击管理
  3. 单击代理设置选项卡。
  4. 在适当的字段中输入代理服务器信息。
    • “名称或地址”是代理服务器的完全限定域名或IP地址。
    • Port字段是Security Console发送日志文件时连接的代理服务器的端口号。
    • 安全控制台使用“域”、“用户ID”和“密码”字段中的信息在代理服务器上进行身份验证。
  5. 勾选“发送支持日志”框。
  6. 点击保存

用日志解决扫描准确性问题

如果您的扫描产生了不准确的结果,例如假阳性、假阴性或不正确的指纹,您可以使用扫描记录功能来收集数据,以帮助技术支持团队排除原因。增强的日志记录功能可以在扫描过程中收集对故障排除有用的信息,比如Windows注册表项、SSH命令执行和文件版本。

下面是一个增强日志文件的示例:

         
1
<王牌:collected_object >
2
<王牌:源id > 0 < / ace:源id >
3.
<王牌:线程活动> do-unix-create-system-fingerprint@example.com: 22 < / ace:线程活动>
4
<王牌:remote_execution_item id = " 42 " >
5
<王牌:命令> freebsd-version > < / ace:命令
6
<王牌:rc数据类型=“int”> 0 < / ace: rc >
7
8
<王牌:stdout > 10.0版本
9
< / ace: stdout >
10
11
<王牌:start_time数据类型=“int”> 1443208125966 < / ace: start_time >
12
<王牌:end_time数据类型=“int”> 1443208125982 < / ace: end_time >
13
< / ace: remote_execution_item >
14
< / ace: collected_object >

使用该特性包括两个主要步骤:

  1. 在出现不准确结果的资产上,使用完全启用增强日志记录的模板运行扫描。
  2. 将包含增强日志数据的文件发送给技术支持。

建议您扫描单个资产或启用了Enhanced Logging的小型站点。

在自定义扫描模板中启用增强日志

资产配置导出扫描模板默认启用增强日志记录功能。但是,您可能希望使用自定义模板进行扫描,该模板已在您的特定环境中进行了调优,以实现更好的性能。启用自定义扫描模板的增强日志功能。

  1. 单击Administration图标。
  2. 在“扫描选项”区域,单击“创建”链接创建新模板,或单击“管理”链接根据已有模板创建自定义模板。
  3. 如果单击“管理”链接,请选择要基于新模板的模板,单击“复制”图标。
  4. 在新模板的配置中,单击Logging选项卡。
  5. 选择增强的日志复选框以启用增强的日志记录。
  6. 按照需要配置模板的其余部分并保存它。
使用增强的启用日志记录的模板运行经过身份验证的扫描

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

增强的日志收集大量的数据,这可能会影响磁盘空间,这取决于您扫描的资产数量。

如果您想用模板手动扫描特定资产,请在扫描对话框中添加模板。看到运行手动扫描

检索收集的增强日志数据并将其发送给技术支持

访问所需扫描的摘要页面,下载增强的日志扫描数据:

  1. 首页选项卡,浏览到“站点”表。
  2. 点击“扫描状态”列对应的链接,打开您想要扫描的摘要页面。
  3. 点击下载>扫描数据
  4. 将下载的zip文件发送到Rapid7支持支持门户

请注意

如果zip文件大于25MB, Rapid7支持工程师将为您提供安全的文件传输。

报告错误识别的操作系统

单击“”,可以报告指纹错误的操作系统报告识别错误的资产图标旁边列出的操作系统资产节点页面。

运行诊断

您可以运行多个诊断函数来捕获可能影响系统性能的问题。

选择诊断程序

要对内部应用程序问题运行诊断:

  1. 单击政府选项卡。
  2. 安全控制台显示政府页面。
  3. 点击诊断旁边故障排除.安全控制台显示故障排除页面。
  4. 单击要执行的每个诊断例程的复选框。

在执行请求的诊断之后,Security Console将显示一个结果表。每个项目都包含一个红色或绿色图标,指示各自的系统组件是否存在问题。

处理启动过程中的故障

如果在启动过程中发生了子系统关键错误,那么应用程序将尝试将适当的维护任务排队以响应该故障。随后,系统进入维护模式重新启动。

如果您是管理员,可以登录并查看失败原因。如果需要,您可以采取某些步骤来排除问题。

恢复任务有两种类型:

  • DBConfig任务在应用程序无法连接到配置的数据库时触发。它允许您测试数据库配置设置并在成功后保存它。
  • 复苏任务是一种通用的恢复任务,在启动过程中出现未知故障时触发。这种情况非常少见,只有在一个或多个配置文件找不到或无效时才会发生。通过该任务,您可以查看故障原因,并将支持日志上传到安全日志服务器,以便进行故障处理。

如果维护Web服务器没有可用的默认端口3780,则应用程序可能无法在维护模式下重新启动。如果已经有一个实例在运行,或者一个或多个关键配置文件无效或丢失,可能会发生这种情况。这些文件有扩展名,比如.nsc. xml,.userdb

寻址失败刷新会话

当Web界面会话在空闲会话中超时时,安全控制台会显示登录窗口,以便用户刷新会话。如果Web浏览器和Security Console Web服务器之间的通信问题阻止了会话刷新,用户将看到一条错误消息。如果用户有未保存的工作,他或她不应该离开页面或关闭浏览器,因为在通信问题解决后,工作可能不会丢失。

以下原因之一可能导致通信失败。如果原因是上述任何一种,请采取适当的行动:

  • 安全控制台离线。重新启动安全控制台。
  • 安全控制台已与Internet断开连接。重新连接安全控制台到Internet。
  • 用户的浏览器已与Internet断开连接。重新连接浏览器到Internet。
  • 安全控制台地址已更改。在托管浏览器的计算机上清除地址解析协议(ARP)表。

安全控制台响应用户刷新会话请求的极端延迟也可能导致出现失败消息。

重置帐户锁定

当用户使用错误密码多次尝试登录时,应用程序将锁定该用户,直到该用户的锁定被重置。

默认锁定阈值为4次。全局管理员可以修改该参数安全控制台配置- web服务器页面。看到更改安全控制台Web服务器的默认设置

复位锁定有以下三种方式:

  • 如果您是全局管理员,请访问用户页面,然后单击出现在被锁定用户名字旁边的挂锁图标。
  • 运行console命令解锁帐户使用命令控制台
  • 重新启动安全控制台。如果被锁定的用户是组织中唯一的全局管理员,那么这是唯一可行的方法。

长扫描或挂扫描

偶尔,扫描会花很长时间,或者看起来完全停止了。

准确预测一次扫描需要多长时间是不可能的。扫描时间取决于目标资产的数量和扫描模板的完整性或复杂性等因素。但是,您可以通过将扫描时间与以前的扫描时间进行比较,来观察一次扫描是否花费了非常长的时间来完成。

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

处理延迟扫描操作的技巧

如果试图启动、暂停、恢复或停止扫描,并且出现了长时间的消息,表明操作正在进行中,这可能是由于安全控制台与扫描引擎通信中的网络相关延迟。在低带宽或高时延的网络中,延迟扫描操作可能会导致安全控制台/扫描引擎通信频繁超时,导致安全控制台接收扫描状态信息的时间延迟。要减少超时,可以增加扫描引擎响应超时设置。看到使用分布式扫描引擎配置安全控制台连接

扫描内存问题

由于内存问题,扫描可能会很慢,或者会失败。看到内存不足问题

扫描的复杂性

对于它发现的每个目标主机,应用程序在运行任何漏洞检查之前都会扫描其端口。目标端口的范围是可配置的扫描模板设置。扫描次数与扫描的端口数量成比例增加。

具体来说,UDP端口的扫描可能很慢,因为应用程序在默认情况下每秒发送不超过两个UDP包,以避免触发ICMP速率限制机制,这种机制内置在大多数网络设备的TCP/IP协议栈中。

要提高扫描速度,请考虑将扫描配置为只检查已知端口,或已知承载相关服务的特定端口。看到使用扫描模板并调优扫描性能

扫描引擎离线

如果扫描引擎在扫描期间脱机,扫描将显示为挂起。当扫描引擎在扫描过程中离线时,数据库将需要从未完成的扫描中删除数据。这个过程留下类似以下扫描日志的消息:DBConsistenc3/10/09 12:05 PM:发现调度扫描ID 410不一致,删除部分导入的扫描结果…

如果扫描引擎离线,请重新启动它。然后,进入扫描引擎配置面板,确认扫描引擎处于活动状态。看到分布式扫描引擎页以获取更多信息。

查看扫描日志

您可以下载完成扫描的活动日志,或直接将扫描数据包发送到Support以进行故障排除。

要访问这些日志选项:

  1. 首页页,浏览到“站点”表。单击要检查的网站的名称以打开它。
  2. 在“站点扫描摘要”部分,单击扫描历史观
  3. 浏览到“过去扫描”表:
  • 要下载您选择的过去一次扫描的扫描日志,请单击“下载日志”栏中相应的图标。
  • 若要将扫描数据包发送到Support以进行故障排除,请单击“发送日志”列中的图标。

另外,扫描日志和数据选项也可以从过去扫描详细信息视图的“扫描进度”部分获得。点击“完成”栏中的日期和时间链接,就可以进入该页查看特定的过去扫描。

扫描数据的包

扫描数据包还包括扫描日志,但要大得多,并且包含的信息仅供支持团队用于故障排除目的。

用户停止扫描

如果另一个用户停止扫描,扫描将显示已挂起。要确定是否为这种情况,请检查日志中类似以下的消息:

         
1
Nexpose3/16/09 7:22 PM: Scan [] stopped: "maylor" <> . / /停止扫描

看到查看扫描日志

长或挂的报告

偶尔,报告生成将花费异常长的时间,或似乎已经完全停止。您可以在安全控制台日志中找到报告错误。

报告内存问题

由于内存问题,报告生成可能会很慢,或者会失败。看到内存不足问题

陈旧的扫描数据

数据库速度影响报告速度。随着时间的推移,来自旧扫描的数据将在数据库中积累。这会导致数据库变慢。

如果您发现报告变慢了,请在安全控制台日志中查看与其他报告任务持续时间不一致的报告任务,如下面的示例所示:

         
1
nsc.log。0:Reportmanage1/5/09 3:00 AM:报表任务serviceVulnStatistics finished in 2 hours 1 minute 23 seconds

通常可以通过清理数据库来提高生成报告的速度。定期的数据库维护会删除剩余的扫描数据和主机信息。看到查看扫描日志数据库备份/恢复和数据保留

内存不足问题

扫描和报告是内存密集型任务,因此与这些活动相关的错误可能经常是内存问题。你可以通过改变设置来控制内存的使用。一些内存问题与如何控制系统资源有关。

java.lang.OutofMemoryError

如果应用程序崩溃了,你可以通过检查日志文件中的以下消息来验证崩溃是由于内存不足造成的:Java .lang. outofmemoryerror: Java堆空间

如果看到此信息,请联系技术支持。除非有指示,否则不要重启应用程序。

解决内存问题

由于扫描是内存密集型的,并且经常发生,因此控制扫描使用多少内存是很重要的,这样内存问题就不会反过来影响扫描性能。有许多策略可以确保内存限制不影响扫描。

减少扫描的复杂性

随着目标主机数量的增加,存储扫描信息所需的内存量也会增加。如果被扫描的主机有过多的漏洞,扫描可能会由于内存不足而挂起。

为了降低给定扫描的复杂性,可以尝试以下几种方法:

  • 通过在站点配置中排除IP地址来减少目标主机的数量。
  • 通过从扫描模板中排除低优先级的检查来减少目标漏洞的数量。

修补一次扫描发现的漏洞后,将排除的IP地址或漏洞添加到站点配置中,并再次运行扫描。

有关更多信息,请参见分布式扫描引擎使用扫描模板并调优扫描性能

减少扫描数

同时运行多个扫描可能导致安全控制台耗尽内存。减少同时扫描的次数以节省内存。

升级主机

如果扫描始终耗尽内存,请考虑向服务器添加更多内存。要增加内存,可能还需要升级服务器操作系统。在64位操作系统上,应用程序可以比在32位操作系统上运行时寻址更多的内存。然而,它需要8gb内存才能在64位操作系统上运行。

关于如何使扫描对内存更友好的详细信息,请参阅以下章节:

更新失败

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

腐败的更新表

应用程序在更新表中跟踪以前应用过的更新。如果更新表损坏,应用程序将不知道需要下载和应用哪些更新。

如果由于更新表损坏而无法安装更新,则扫描控制台日志将包含类似如下的消息:

         
1
AutoUpdateJo3/12/09 5:17 AM: NSC更新失败:com.rapid7.updater。UpdateException: java.io.EOFException
2
在com.rapid7.updater.UpdatePackageProcessor。getUpdateTable(未知来源)
3.
在com.rapid7.updater.UpdatePackageProcessor。getUpdates(未知来源)
4
在com.rapid7.updater.UpdatePackageProcessor。getUpdates(未知来源)
5
在com.rapid7.nexpose.nsc.U。执行(未知源)
6
com.rapid7.scheduler.Scheduler _A.run美元(未知来源)

如果出现上述情况,请联系技术支持。看到查看扫描日志(医生:故障排除# viewing-the-scan-log。

中断更新

默认情况下,应用程序会自动下载和安装更新。应用程序可能下载更新,但其安装尝试可能不成功。

您可以通过查看扫描日志来确定是否发生了这种情况。

检查显示长时间不活动的更新时间戳。

         
1
AU-BE37EE72A11/3/08下午5:56:更新文件:nsc/ hroot /help/html/757.htm
2
NSC 11/3/08 9:57 PM:日志已初始化(系统时区为SystemV/PST8PDT)

你可以使用现在更新命令提示符重新尝试手动更新:

  1. 单击政府按TAB键去政府页面。
  2. 点击运行console命令。的命令控制台页面出现。
  3. 输入的命令现在更新在文本框中单击执行

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

腐败的文件

如果应用程序由于文件损坏而不能执行更新,Scan Console日志将包含类似以下的消息:

         
1
AU-892F7C6793/7/09 1:19 AM:申请更新id 919518342
2
AU-892F7C6793/7/09 1:19 AM:打开zip文件错误
3.
AutoUpdateJo3/7/09 1:19 AM: NSC update failed: com.rapid7.updater.UpdateException:
4
打开zip文件时出现错误
5
在com.rapid7.updater.UpdatePackageProcessor。B(未知源)
6
在com.rapid7.updater.UpdatePackageProcessor。getUpdates(未知来源)
7
在com.rapid7.updater.UpdatePackageProcessor。getUpdates(未知来源)
8
在com.rapid7.nexpose.nsc.U。执行(未知源)
9
com.rapid7.scheduler.Scheduler _A.run美元(未知来源)

如果更新失败是由于一个损坏的文件,这意味着更新文件下载成功,但无效。如果出现上述情况,请联系技术支持。看到查看扫描日志

与升级服务器的连接中断

如果无法在Security Console和更新服务器之间建立连接,它将出现在日志中,并显示类似如下的消息。

         
1
AU-A7F0FF3623/10/09下午4:53:下载更新:919518342
2
AutoUpdateJo3/10/09 4:54 PM: NSC更新失败:java.net.SocketTimeoutException

sockettimeoutexception是无法连接到更新服务器的标志。如果连接已经中断,则失败之前的其他更新将是成功的。

您可以使用update now命令提示符手动重新尝试更新。看到中断更新查看扫描日志