大家都是专业人才,太专业的我就不多介绍了,这次介绍的纯属是关于Nexpose产品本身相关的问题排查方法和思路,大多是跟环境相关的,其中因系统环境和网络环境导致的问题居多,供大家参考。
利用日志文件
如果您在安全控制台或扫描引擎中遇到问题,您可能会发现查找日志文件进行故障排除会很有帮助。不仅如此,日志文件还可用于日常维护和调试目的。
本节不介绍与扫描事件相关的扫描日志。请参阅查看以下内容。
定位每个日志文件并了解其用途
日志文件位于安全控制台上的 [installation_directory]/nsc/logs 目录中,在扫描引擎上位于 [installation_directory]/nse/logs 中。日志文件记录内容如下:
**access.log(仅在安全控制台上):**此文件捕获有关正在访问的资源的信息,例如 Web 界面中的页面。在信息层面,access.log 捕获有关 API 事件的有用信息,例如正在调用的 API、API 版本和 API 客户端的 IP 地址。这对于监视 API 使用和解决 API 问题非常有用。该文件在以前的access_log中称为"文件"。
**auth.log(仅在安全控制台上):**此文件捕获每个登录或注销以及身份验证事件,如身份验证失败和锁定。它可用于跟踪用户会话。此文件在早期产品版本中称为um_log。
**nsc.log(仅在安全控制台上):**此文件捕获安全控制台中的系统和应用程序级事件。它可用于跟踪和解决:更新、操作调度以及分布式引擎的通信问题。此外,如果安全控制台进入维护模式,您可以以全局管理员身份登录并使用该文件来监视维护模式活动。
**nsc.log(仅在安全控制台上):**此文件捕获安全控制台中的系统和应用程序级事件。它除了可用于跟踪和解决:更新、操作调度以及分布式引擎的通信问题。此外,如果安全控制台进入维护模式,您可以以全局管理员身份登录并使用该文件来监视维护模式活动。
**mem.log(在安全控制台和分布式扫描引擎上):**此文件捕获与内存使用相关的事件。它可用于解决内存密集型操作(如扫描和报告)的问题。
**engine_communication.log:**此文件包含安全控制台和远程扫描引擎之间的通信相关日志。
**eso.log:**此文件包含自动操作的相关日志。
**initdb.log:**此文件包含数据库的相关日志。
**audit.log:**此文件记录安全控制台用户创建事件、删除事件、角色更改和站点配置更改。
Tips:在较早的产品版本中,API 信息存储在 nsc.log 中。
日志文件的结构和内容
日志文件具有以下格式:
[yyyy-mm-ddThh:mm:ss GMT] [LEVEL] [Thread: NAME] [MESSAGE]
【年-月-日T时:分:秒 格林威治时间(换算成北京时间需+8)】【等级】【来源:名字】【详情】
示例:
2011-12-20T16:54:48 [INFO] [Thread: Security Console] Security Console started in 12 minutes 54 seconds
每个日志消息都有严重级别:
LEVEL
等级
意义
例子
ERROR错误
阻止系统进程成功执行并阻止用户操作(如扫描)的异常事件
安全控制台无法连接到数据库
WARN警告
阻止系统进程成功执行但并不完全阻止用户操作(如扫描)的异常事件
安全控制台和远程扫描引擎之间的通信中断
INFO信息
在正常预期事件内提供系统活动的有用信息
安全控制台尝试与远程扫描引擎建立连接
DEBUG调试
除调试目的外,不需要查看的正常预期事件
在安全控制台/扫描引擎协议内执行操作
在读取日志文件以排除主要问题时,您可能会发现最初查找 ERROR 和 WARN 级别消息非常有用。
配置显示哪些严重级别的日志
默认情况下,所有日志文件都显示严重级别为 INFO 和更高级别的消息。这意味着它们只会显示 INFO、WARN、ERROR的日志信息,但是不会不显示调试消息。您可以更改日志文件中显示的严重级别。例如,您可能希望筛选出除具有警告和错误严重性级别的消息之外的所有邮件。或者,您可能希望包括 DEBUG 消息以用于维护和调试目的。
使用日志命令
可以使用控制台命令控制安全控制台和嵌入式扫描引擎产生日志级别。有关分布式扫描引擎配置日志级别的步骤,请参阅本文的"使用文件系统"部分。有关控制台命令的信息,请访问_https://docs.rapid7.com/nexpose/using-the-command-console/_。
命令
描述
例子
Log list
列出所有日志记录配置属性
log list
Log set [] [value]
将日志记录配置属性设置为指定的值。省略参数以将所有属性设置为指定的。用于查看可用的属性名称
name value log list
log set DEBUGlog set auth-level debug
Log reset []
将日志记录配置属性重置为默认值。省略参数以将所有属性重置为默认值。用于查看可用的属性名称。namelog list
log resetlog reset auth-level
发出命令后,大约 30 秒后应用更改。
使用文件系统
安全控制台和分布式扫描引擎的配置步骤是相同的。若要对显示的日志严重性级别进行配置,请执行以下步骤:
Tips:在用户日志设置.xml 文件中,默认引用 nsc.log (安全控制台)文件或 nse.log (分布式扫描引擎)文件,具体取决于安装的组件是安全控制台还是分布式扫描引擎。
**1.**在文本编辑器中,打开位于 [installation_directory]/nsc/conf 目录中的user-log-settings.xml 文件。
**2.**通过删除开始和结束注释标记来取消对文件内容行的注释,如:
<!----><!-- <property name="default-level" value="INFO"/> -->
**3.**如果要更改 nsc.log(用于安全控制台安装)或 nse.log 文件(用于扫描引擎安装)的日志记录级别,请保持该值默认值不变。否则,请将该值更改为以下值之一以指定其他日志文件:
Auth
Access
Mem
**4.**将行中的值更改为首选严重性级别:DEBUG, INFO, WARN或 ERROR。例子:
<property name="default-level" value="DEBUG"/>
**5.**若要更改其他日志文件的日志级别,只需复制并粘贴未注释的行,相应地更改值。例子:
`<property name="default-level" value="DEBUG"/>``<property name="auth-level" value="DEBUG"/>``<property name="access-level" value="DEBUG"/>``<property name="mem-level" value="DEBUG"/>`
**6.**保存并关闭文件。
发出命令后,大约 30 秒后应用更改。
将诊断日志发送到 Rapid7 支持中心
安全控制台和扫描引擎生成的诊断日志可通过诊断页面发送到 Rapid7 支持:
在安全控制台中,导航到"Administration"页
在" Maintenance, Storage and Troubleshooting"部分下,单击" Diagnose"
检查所需的诊断框
单击Send Logs
通过代理服务器发送日志
如果安全控制台无法直接对 Internet 进行访问,您可以使用代理服务器将日志发送到 Rapid7 支持中心。
要配置用于发送日志的代理设置:
1.在安全控制台中,导航到" Administration"页
2.在" Global and Console Settings"部分下,单击" Administer"
3.单击" Proxy Settings"选项卡
4.在相应的字段中输入代理服务器信息
"Name or address"字段是指代理服务器的完全限定的域名或 IP 地址。
"Port"字段是安全控制台在发送日志文件时连接到的代理服务器上的端口号。
安全控制台使用"Domain"、" User ID"和"Password"字段中的信息在代理服务器上进行身份验证。
5.选中" Send support logs"框。
6.单击"Save"。
使用日志对扫描准确性进行故障排除
如果您的扫描结果不准确,例如误报、漏报或指纹不正确,您可以使用扫描日志记录功能来收集数据,从而帮助技术支持团队排除故障。增强日志记录是一种功能,用于收集在扫描期间可用于故障排除的信息,如 Windows 注册表项、SSH 命令执行和文件版本。
以下是增强型日志记录文件中的示例:
`<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>`
使用此功能涉及两个主要步骤:
使用已完全启用增强日志记录的模板对发生不准确结果的资产运行扫描
将包含增强日志记录数据的文件发送给技术支持
**Tips:**建议您针对单个资产或小站点启用增强日志记录。
在自定义扫描模板中启用增强日志记录
默认情况下,从资产配置导出扫描模板上启用了增强型日志记录。但是,您可能希望使用自定义模板进行扫描,该模板经过调整,在特定环境中性能更好。若要在自定义扫描模板上启用增强日志记录,请执行:
单击" Administration"图标。
在" Scan Options"区域中,在“Templates”中单击" Create"链接以创建新模板,或单击" Manage"链接以基于现有模板创建自定义模板。
如果单击" Manage"链接,请在" Copy"图标上选择要作为新模板基础的模板。
在新模板的配置中,单击" General"选项卡。
选择" Enhanced logging"复选框以启用" Enhanced logging"。
根据需要配置模板的其余部分并保存它。
使用开启增强日志记录的模板进行经过身份验证的扫描
如果要使用模板扫描整个站点,请将其添加到站点配置中,然后扫描网站。请参阅:_https://docs.rapid7.com/nexpose/selecting-a-scan-template/_。
Tips:增强的日志记录会收集大量数据,这可能会影响磁盘空间,具体取决于您扫描的资产个数。
如果要使用模板手动扫描特定资产,请将模板添加到扫描对话框中。请参阅:https://docs.rapid7.com/nexpose/running-a-manual-scan/
检查收集的增强型日志记录数据并将其发送到技术支持中心
访问所需扫描的摘要页以下载增强的日志记录扫描数据:
在安全控制台的"Home"选项卡上,浏览到" Sites"表。
单击" Scan Status"列中的相应链接,打开所需扫描的摘要页。
单击Download > Scan data。
将下载的 zip 文件发送到Rapid7 支持中心_https://rapid7support.force.com/customers/login_。
报告识别错误的操作系统
您可以通过单击"资产"或"节点"页面上,处于操作系统旁边的不正确标识图标来报告错误识别的操作系统。
运行诊断程序
您可以运行多种诊断函数来捕获可能影响系统性能的问题。
选择诊断案例
要运行内部应用程序问题的诊断:
单击"Administration"选项卡。
安全控制台显示管理页。
单击"Troubleshooting"旁边的"Diagnose"。安全控制台将会显示疑难解答页面。
单击要执行的每个诊断例程的复选框。
执行请求的诊断后,安全控制台将显示结果表。每个项目都包含一个红色或绿色图标,指示各个系统组件是否存在问题。
解决启动过程中的失败问题
如果在启动过程中发生子系统严重错误,后续应用程序将尝试排队维护以响应该故障。之后,它会在维护模式下重新启动。
如果您是管理员,可以登录并检查失败原因。如果需要,您可以采取某些步骤来解决此问题。
有两种类型的恢复任务可用:
当应用程序无法连接到配置的数据库时,将触发DBConfig任务。它允许您测试数据库配置设置,并在成功时保存它
恢复任务是在启动过程中发生未知故障时触发的常规恢复任务。这种情况非常少见,仅在找不到一个或多个配置文件或无效时才发生。此任务允许您查看失败的原因,并将支持日志上载到安全日志服务器,以便用于故障排除
如果维护 Web 服务器没有默认端口 3780 可用,则应用程序可能无法在维护模式下重新启动。如果出现极其严重的故障。如果已有实例正在运行,或者一个或多个密钥配置文件无效或丢失,则可能会发生这种情况。这些文件具有扩展名,如.nsc、.xml和.userdb。
解决刷新会话失败的问题
当 Web 接口会话在空闲会话中时,安全控制台将显示登录窗口,以便用户可以刷新会话。如果 Web 如果浏览器和安全控制台 Web 服务器之间的通信发生问题阻止会话刷新,那么用户将看到页面返回错误消息。如果用户这时有没有保存的工作,那他/她不应离开页面或关闭浏览器,因为通讯问题解决后,工作内容不会丢失。
由于以下原因之一,可能会发生通信故障。如果其中任何一个是原因,请采取相应的操作:
安全控制台处于脱机状态。重新启动安全控制台
安全控制台已与 Internet 断开连接。将安全控制台重新连接到互联网
用户的浏览器已与 Internet 断开连接。将浏览器重新连接到互联网
安全控制台地址已更改。清除托管浏览器的计算机上的地址解析协议 (ARP) 表
安全控制台对用户刷新会话请求的响应出现极端延迟也可能导致失败消息出现。
重置帐户锁定
当用户尝试使用不正确的密码登录太多次时,应用程序会锁定该用户,直到该用户重置锁定。
默认锁定阈值为 4 次尝试。全局管理员可以在安全控制台配置 - Web 服务器页面上更改此参数。请参阅更改安全控制台 Web 服务器默认设置:
您可以使用以下三种方法之一重置锁定:
如果您是全局管理员请转到"用户"页面,然后单击锁定用户名称旁边的挂锁图标。
运行控制台命令:unlock account
重新启动安全控制台;如果锁定的用户是组织中唯一的全局管理员,这是唯一可以让用户解锁的办法。
扫描任务持续时间太长或扫描任务没响应
有时,扫描过程需要非常长的时间,或者似乎已经完全停止。
无法准确预测扫描应花多长时间。扫描时间因目标资产数量和扫描模板的彻底性或复杂性等因素而异。但是,您可以通过将扫描时间与以前的扫描时间进行比较来观察扫描是否需要非常长时间才能完成。
通常,如果扫描在单个主机上运行超过 8 小时,或在给定站点上运行超过 48 小时,则建议检查某些问题。
处理延迟扫描操作的提示
如果尝试启动、暂停、恢复或停止扫描,并且长时间出现一条操作正在进行中的消息,这可能是由于安全控制台与扫描引擎的通信中与存在网络相关的延迟。在带宽低或延迟高的网络中,延迟扫描操作可能会导致安全控制台/扫描引擎通信频繁出现反应过慢的现象,这可能会导致安全控制台接收扫描状态信息出现延迟。若要减少响应时间,可以增加扫描引擎响应时间设置。请参阅使用分布式扫描引擎配置安全控制台连接:
扫描内存问题
由于内存问题,扫描速度可能很慢,或者可能失败。请参阅内存不足问题:
https://docs.rapid7.com/nexpose/troubleshooting/#out-of-memory-issues
扫描复杂性
对于它发现的每个目标主机,应用程序在运行任何漏洞检查之前会扫描其端口。目标端口的范围是可以在扫描模板配置的。扫描时间随扫描的端口数成比例增加。
特别是,UDP 端口的扫描速度可能很慢,因为默认情况下,应用程序每天发送的 UDP 数据包不超过两个,以避免触发大多数网络设备内置于 TCP/IP 堆栈中的 ICMP 速率限制机制。
若要提高扫描速度,请考虑将扫描配置为仅检查已知端口或已知托管相关服务的特定端口。请参阅使用扫描模板和调优扫描性能。
https://docs.rapid7.com/nexpose/working-with-scan-templates-and-tuning-scan-performance
扫描引擎脱机
如果扫描引擎在扫描过程中掉线,扫描将显示为挂起。当扫描引擎在扫描过程中关闭时,数据库将需要从不完整的扫描中删除数据。此过程会留下类似于以下扫描日志的消息:
DBConsistenc3/10/09 12:05 PM: Inconsistency discovered for dispatched scan ID 410, removing partially imported scan results...
如果扫描引擎脱机,请重新启动它。然后,转到"Scan Engine Configuration panel"面板以确认扫描引擎处于活动状态。有关详细信息,请参阅分布式扫描引擎页面。
https://docs.rapid7.com/nexpose/configuring-distributed-scan-engines/
查看扫描日志
您可以下载已完成扫描的活动日志,或将扫描数据包直接发送给支持人员进行故障排除。
要访问这些日志选项:
在安全控制台的主页上,浏览到"Sites"表。单击要检查的站点的名称以打开它。
在"Site Scan Summary"部分中,单击"View Scan History"。
浏览到"Past Scans"表:
要下载您过去选择的扫描日志,请单击"Download Log"列中的相应图标。
若要将扫描数据包发送给支持人员以进行故障排除,请单击"Send log"列中的图标。
或者,还可以从过去扫描详细信息视图的"Scan Progress"部分获得扫描日志和数据选项。单击"Completed"列中的日期和时间链接,访问此页面可以查看特定的过去扫描。
Tips:Scan data也包括扫描日志,但要大得多,并且包含仅支持团队才能用于故障排除的信息。
用户停止扫描
如果其他用户停止扫描,则扫描将显示为已挂起。若要确定是否为这种情况,请检查日志中是否显示类似于以下内容的消息:
Nexpose3/16/09 7:22 PM: Scan [] stopped: "maylor" <>
详情请参阅查看扫描日志:
https://docs.rapid7.com/nexpose/troubleshooting/#viewing-the-scan-log
长时间未生成报告或生成报告未响应
有时,报告生成需要非常长时间,或者似乎已经完全停止。您可以在安全控制台日志中找到报告错误。
报告内存问题
由于内存问题,报表生成速度可能很慢,或者可能失败。请参阅内存不足问题:
https://docs.rapid7.com/nexpose/troubleshooting/#out-of-memory-issues
陈旧的扫描数据
数据库速度会影响报告速度。随着时间的推移,来自历史扫描的数据将累积到数据库中。这会导致数据库变慢。
如果发现生成报告变慢,请查看安全控制台日志中报告持续时间与其他报告任务不一致的报告日志,如以下示例所示:
nsc.log.0:Reportmanage1/5/09 3:00 AM: Report task serviceVulnStatistics finished in 2 hours 1 minute 23 seconds
通常可以通过清理数据库来提高报表生成速度。定期数据库维护删除剩多余的扫描数据和主机信息。请参阅查看扫描日志和数据库备份/恢复和数据保留:
https://docs.rapid7.com/nexpose/database-backuprestore-and-data-retention/
内存不足问题
扫描和报告是内存密集型任务,因此与这些活动相关的错误通常可能是内存问题。您可以通过更改设置来控制内存使用。某些内存问题与系统资源控制方式有关。
java. lang. outofMemoryerror
如果应用程序已崩溃,您可以通过检查日志文件中有关以下消息来验证崩溃是由于内存不足造成的:java.lang.OutOfMemoryError: Java heap space
如果您看到此消息,请联系技术支持。否则不要重新启动应用程序。
修复内存问题
由于扫描是内存密集型的并且经常发生,因此控制内存在扫描时的使用量非常重要,这样内存问题就不会影响扫描性能。有许多策略可以对内存限制且不会影响扫描。
降低扫描深度和复杂性
随着目标主机数量的增加,存储扫描信息所需的内存量也会增加。如果正在扫描的主机存在过多的漏洞,则扫描可能会由于内存不足而挂起。
若要降低预定扫描的复杂性,请尝试以下几种方法:
通过排除站点配置中的 IP 地址来减少目标主机的数量
通过从扫描模板中排除低优先级检查来减少目标漏洞的数量
修补一次扫描发现的任何漏洞后,将排除的 IP 地址或漏洞添加到站点配置中,然后再次运行扫描。
有关详细信息,请参阅分布式扫描引擎和使用扫描模板和调整扫描性能:
https://docs.rapid7.com/nexpose/working-with-scan-templates-and-tuning-scan-performance/
减少扫描任务
同时运行多个扫描可能会导致安全控制台内存不足。减少同时运行的扫描任务数量以节省内存。
升级主配
如果扫描始终会耗尽内存,请考虑向服务器添加更多内存。若要添加内存,可能也有必要升级服务器操作系统。在 64 位操作系统上,应用程序需要比在 32 位操作系统上运行时更多的内存。而且,它需要至少 8 Gb 的内存才能在 64 位操作系统上运行。
有关管理扫描相关资源的信息
有关使扫描更有利于内存的更多详细信息,请参阅以下章节,规划部署:
https://docs.rapid7.com/nexpose/planning-a-deployment/
使用扫描模板和调优扫描性能:
https://docs.rapid7.com/nexpose/working-with-scan-templates-and-tuning-scan-performance/
更新失败
有时,系统更新将不成功。您可以通过检查系统日志来找出具体原因。
更新表出现损坏
应用程序在更新表中跟踪以前应用的更新。如果更新表变为损坏,应用程序将不知道需要下载和应用哪些更新。
如果由于损坏的更新表而无法安装更新,则扫描控制台日志将包含类似于以下内容的消息:
`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)`
如果发生这种情况,请联系技术支持。请参阅查看扫描日志(文档:故障排除#查看扫描日志:
https://docs.rapid7.com/nexpose/troubleshooting/#viewing-the-scan-log
更新中断
默认情况下,应用程序会自动下载并安装更新。有时候应用程序会下载更新,但其安装尝试可能失败。
您可以通过查看扫描日志来了解是否发生这种情况。
检查显示长时间不活动状态的更新时间戳。
`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
单击"Administration"选项卡转到"管理"页。
单击"故障排除"部分中的"运行控制台"命令。将显示命令控制台页面。
在文本框中输入"update now"命令,然后单击" Execute"
安全控制台会显示一条消息,提示更新尝试是否成功。请参阅查看扫描日志。
https://docs.rapid7.com/nexpose/troubleshooting/#viewing-the-scan-log
文件损坏
如果应用程序由于文件损坏而无法执行更新,则扫描控制台日志将包含类似于以下内容的消息:
`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)`
如果更新由于文件损坏而失败,则意味着更新文件已成功下载,但无效。如果发生这种情况,请联系技术支持。请参阅查看扫描日志。
https://docs.rapid7.com/nexpose/troubleshooting/#viewing-the-scan-log
与更新服务器的连接中断
如果无法在安全控制台和更新服务器之间建立连接,则该连接将显示在日志中,并出现类似于以下内容的消息:
`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"命令提示符手动重新尝试更新。请参阅中断更新和查看扫描日志的相关内容:
https://docs.rapid7.com/nexpose/troubleshooting/#interrupted-update
https://docs.rapid7.com/nexpose/troubleshooting/#viewing-the-scan-log