本部分提供了关于在使用本应用程序及应用程序处理指南时常见问题的描述。如果您确实需要联络技术支持部门,本部分的内容将有助于您收集技术支持部门为您提供协助时所需的信息。
如果您遇到与安全控制台或扫描引擎相关的问题,查阅故障排除日志文件可能会为您提供一些帮助。在例行维护和调试方面,日志文件也很有用。
本部分不包含与扫描事件相关的扫描日志。请参见查看扫描日志。
日志文件位于安全控制台上的 [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 及更高严重性级别的消息。这表示,它们会显示 INFO、WARN、ERROR 消息,但不会显示 DEBUG 消息。您可以更改在日志文件中显示哪种严重性级别。例如,您可能希望过滤除 WARN 和 ERROR 严重性级别之外的所有信息。或者,您可能希望加入 DEBUG 消息,以进行维护和调试。
配置步骤对于安全控制台和分布式扫描引擎都是一样的。如需对显示哪种日志严重性级别进行配置,请执行以下操作:
注意: 在 user-log-settings.xml 文件中,默认参考的是 nsc.log 文件或 nse.log 文件,具体情况取决于安装组件是安全控制台还是分布式扫描引擎。
<!--
和 -->
:<!-- <property name="default-level" value="INFO"/> -->
<property name="default-level" value="DEBUG"/>
<property name="default-level" value="DEBUG"/>
<property name="auth-level" value="DEBUG"/>
<property name="access-level" value="DEBUG"/>
<property name="mem-level" value="DEBUG"/>
大约 30 秒后,即可应用更改。
在故障排除页面上点击发送日志,您就可以向技术支持部门发送由扫描引擎生成的日志。
注意: 在直接链接不可用的情况下,本应用程序也支持可选的 SMTP(电子邮件)传送机制。请联络技术支持部门,以了解更多信息。
如需发送日志:
安全控制台会显示一个供上传日志使用的方框。
此消息可能涉及扫描错误、支持实例或异常系统行为的报告。
如果安全控制台不能直接访问互联网,您可以使用代理服务器向技术支持部门发送日志。
如需配置更新的代理设置:
将显示管理页面。
安全控制台配置面板会显示出来。
安全控制台配置面板 - 向技术支持部门发送日志的代理设置
如果您的扫描产生了不准确的结果,例如误报、漏报或指纹不正确,您可以使用扫描日志功能收集可帮助技术支持团队进行故障排除的数据。资产配置导出 (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>
使用此功能包括两个主要步骤:
注意: 我们建议您扫描单项资产或者启用了 ACES 日志功能的小站点。
“资产配置导出”扫描模板默认启用 ACES 日志功能。但是,您或许希望用可在您的特定环境中发挥更高性能的调节后的自定义模板进行扫描。若要在自定义扫描模板中启用 ACES:
注意: 默认设置目前不提供任何 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,请采取以下步骤:
确定您的扫描 ID
您可以运行一些诊断功能,以发现可能对系统性能造成影响的问题。
如需运行针对内部应用程序问题的诊断:
安全控制台将显示故障排除页面。
在执行被请求的诊断后,安全控制台将显示结果表格。每个项目都含有一个红色或绿色的图标,以指明各个系统组件是否存在问题。
如果在启动过程中子系统出现严重错误,应用程序会尝试将适当的维护任务加入队列,以响应此故障。然后,它会在维护模式重新启动。
如果您是管理员,那么,您可以登录并检查故障的原因。如果需要,您可以采取某些措施对该问题进行故障排除。
两种类型的恢复任务可供您使用:
如果维护网络服务器的默认端口 3780 不可用,那么,在出现极其严重故障的时候,应用程序可能无法在维护模式重新启动。如果已经存在正在运行的实例,或者如果一个或多个关键配置文件失效或丢失,则会出现这种情况。这些文件带有此类扩展名,如 .nsc、.xml 和 .userdb。
当网页界面会话在闲置会话中发生超时时,安全控制台会显示登录窗口,以便用户可以刷新会话。如果网页浏览器和安全控制台网页浏览器之间的通讯问题阻止刷新会话,则用户会看到一条错误消息。如果用户尚未保存工作,那么,他/她不应离开此页面或关闭浏览器,因为在解决通讯问题之后此工作可能会丢失。
以下原因可能会导致发生通讯故障。如果出现下列任何原因,请采取适当的措施:
安全控制台对用户刷新会话请求的极度延迟也可能会导致出现故障消息。
当用户使用错误密码多次尝试登录时,应用程序会封锁用户,直至针对该用户重置封锁为止。
默认的封锁阈值为 4 次尝试。全局管理员可以在安全控制台配置—网络服务器页面上更改此参数。请参见 更改安全控制台网络服务器默认设置。
您可以使用下列三种方法中的任意一种,以重置锁定:
unlock account
。使用命令控制台。有时,扫描需要占用异常长的时间或者似乎已经完全停止。
人们无法准确地预测扫描应该占用多长时间。扫描时间会根据各种因素而发生变化,如目标资产的数量以及扫描模板的彻底性或复杂性。不过,您可以对比之前扫描的扫描时间,以观察扫描是否需要异常长的时间才能完成。
一般来说,如果扫描在单个主机上运行的时间超过 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...
如果扫描引擎离线,请重新启动。然后,前往扫描引擎配置面板,以确认扫描引擎处于活动状态。请参见用户指南中的 配置分布式扫描引擎。
您可以查看正在进行或已完成的扫描的活动日志。
如需查看扫描日志:
控制台会显示扫描日志。
如果另一名用户终止扫描,则扫描会显示为已搁置。如需确定是否为此类情况,请检查日志,查看类似于下列内容的消息:
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 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
命令提示,以手动方式再次尝试更新:
命令控制台页面会显示出来。
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 是无法实现与更新服务器连接的标志。如果连接已经中断,那么,在本次更新失败之前的其他更新均已成功完成。