在企业环境中配置最大性能

本节提供系统配置提示和最佳实践,以确保安全控制台在企业规模部署中的最佳性能。但是,较小的环境仍然可以从这些建议中获益,特别是关于优化数据库和灾难恢复的部分。

关于安全控制台主机

安全控制台是部署中操作的基础。它管理Scan Engines,并创建一个存储库,存储关于数据库中每次扫描、发现的每个资产和发现的每个漏洞的信息。每次扫描之后,Security Console都会更新存储库,同时维护所有关于扫描、资产和漏洞的历史数据。Security Console托管基于web的界面,用于配置和操作应用程序、管理站点和扫描、生成报告和管理用户。

安全控制台旨在满足企业级部署的扩展需求。一个安全控制台可以处理数百个扫描引擎、数千个资产和任意数量的报告,只要它运行在足够的硬件资源上并且配置正确。

在企业环境中,Security Console最消耗资源的活动是处理、存储和显示扫描数据。

有关不同规模所需资源的信息,请参见容量需求规划

选择承载安全控制台的操作系统

安全控制台有Linux和Windows版本,可以安装在组织的硬件上,运行受支持的操作系统。Rapid7建议为大型企业部署在受支持的Linux操作系统上安装安全控制台,以提高性能和可伸缩性。

有关官方支持的系统需求,请参阅暴露系统要求页面

配置最优RAID

Rapid7建议在高性能RAID阵列上部署安全控制台。

Rapid7建议将多个磁盘配置成条纹镜像,也称为RAID 1+0或RAID 10阵列。这提供了更好的随机磁盘I/O性能,而不会牺牲冗余。该RAID 10需要安装安全控制台和PostgreSQL。操作系统应该生成很少的磁盘I/O,它也可以共享这个阵列。

作为参考,Rapid7设备使用单个RAID 10配置,横跨8或16个硬盘。此配置提供了安全控制台和操作系统所需的存储性能。虽然安全控制台将受益于ssd,但它们不是必需的。

Rapid7建议将安全控制台安装在与操作系统分开的分区上。

调优PostgreSQL数据库

为了获得最佳性能,Rapid7建议调优PostgreSQL数据库。下面的小节提供了9.4和11.7版本PostgreSQL的调优指南。

配置安全控制台JVM内存

默认情况下,安全控制台将分配75%的系统内存给Java虚拟机(JVM)。当系统的内存达到32GB时,推荐使用此方法,而当系统的内存大于或等于64GB时,则应该减少分配给安全控制台的内存,并向PostgreSQL数据库提供更多的内存。

虽然安全控制台可以配置超过31GB的内存,但不建议使用32GB到48GB之间的值。有关为什么不推荐这些值的详细信息,请参阅下面的文章。https://blog.codecentric.de/en/2014/02/35gb-heap-less-32gb-java-jvm-memory-oddities/

适用于内存超过40GB的系统,创建一个CustomRuntimeEnvironment.env文件以限制安全控制台的JVM内存。例如,完成以下步骤将JVM内存限制为31GB:

  1. 创建您的CustomRuntimeEnvironment.env文件中/ opt / rapid7 / nexpose / nsc /
  2. 开放CustomRuntimeEnvironment.env在文本编辑器中添加以下行:
         
1
-Xmx31G
2
- xx: MaxNewSize = 7 g
  1. 保存CustomRuntimeEnvironment.env并重新启动PostgreSQL数据库服务。

对于内存小于40GB的系统:

  • 保持为安全控制台分配的默认75%内存。
  • 为操作系统预留3GB (Linux)或6GB (Windows)内存。
  • 使用剩余内存调优PostgreSQL数据库http://pgtune.leopard.in.ua/

下面是一个128GB内存系统的分配示例:

  • 操作系统(Linux): 3GB
  • 安全控制台:31 gb
  • PostgreSQL: 94 gb

要调优PostgreSQL数据库,请编辑/ opt / rapid7 / nexpose / nsc / nxpgsql / nxpdata / postgresql.conf使用pgtune中的推荐设置。下面的调优片段使用前面的示例分配数字,用于硬盘驱动器上的Linux安装。

警告-请确保为数据库版本提供正确的调优设置

这些示例中显示的调优设置包含的参数对于每个版本的PostgreSQL都是唯一的。将基于9.4的调优参数应用到11.7数据库(反之亦然)将阻止数据库启动。要特别注意应用与数据库当前PostgreSQL版本相对应的调优设置。如果您需要验证您的数据库运行的是哪个版本的PostgreSQL,请导航到管理>全局和控制台设置>管理>数据库这样做。

针对9.4数据库的调优

         
bash
1
# DB版本:9.4
2
#操作系统类型:linux
3.
# DB类型:web
4
#总内存(RAM): 94 GB
5
#连接数:100
6
#数据存储:hdd
7
8
max_connectionsOne hundred.
9
shared_buffers24064 mb
10
effective_cache_size72192 mb
11
maintenance_work_mem2 gb
12
checkpoint_completion_target0.7
13
wal_buffers16 mb
14
default_statistics_targetOne hundred.
15
random_page_cost4
16
effective_io_concurrency2
17
work_mem246415 kb
18
checkpoint_segments32

针对11.7数据库进行调优

         
bash
1
# DB版本:11
2
#操作系统类型:linux
3.
# DB类型:web
4
#总内存(RAM): 94 GB
5
#连接数:100
6
#数据存储:hdd
7
8
max_connectionsOne hundred.
9
shared_buffers24064 mb
10
effective_cache_size72192 mb
11
maintenance_work_mem2 gb
12
checkpoint_completion_target0.7
13
wal_buffers16 mb
14
default_statistics_targetOne hundred.
15
random_page_cost4
16
effective_io_concurrency2
17
work_mem123207 kb
18
min_wal_size1 gb
19
max_wal_size4 gb

维护数据库

考虑到应用程序生成的数据量,强烈建议定期执行计划备份。在数据库备份过程中,安全控制台进入维护模式,无法运行扫描。规划部署涉及协调备份周期和扫描窗口。备份数据库所需的时间取决于数据量,可能需要几个小时才能完成。

有关执行数据库备份和维护的信息,请参见数据库备份/恢复和数据保留

PostgreSQL还有一个自动真空功能,可以在后台执行一些必要的数据库维护任务。它在默认情况下是启用的,并且应该保持启用状态。

灾难恢复方面的考虑

如前所述,一个安全控制台足以处理企业级的所有活动。但是,对于您的组织的关键系统的灾难恢复计划,可能需要额外的备用安全控制台。如果灾难恢复计划开始生效,这个“冷备份”安全控制台将需要一个数据库恢复例程来包含最新的数据。

灾难恢复可能无法保证将数据中心的扫描引擎数量增加一倍。相反,恢复计划可以指示手头有许多备用部件来执行最低限度的扫描需求—例如,每周而不是每天—直到生产条件恢复正常。例如,如果您的组织在数据中心中有10个Scan Engines,那么额外的5个可以作为临时备份。拥有一些额外的扫描引擎也有助于处理偶尔出现的扫描峰值,比如每月的Microsoft补丁验证。

在服务器端使用杀毒软件

防病毒程序有时会影响依赖网络通信的重要操作,如下载更新、扫描等。阻止后者可能会导致扫描精度下降。如果你正在你的目标主机上运行杀毒软件,配置软件,让应用程序接收它需要的文件和数据,以实现最佳性能,以支持您的安全目标:

  • 将应用程序更新服务器updates.rapid7.com添加到白名单中,以便应用程序可以接收更新。
  • 将应用程序安装目录添加到白名单中,以防止反病毒程序删除该目录中与漏洞和利用有关的文件,否则它会认为这些文件是“恶意的”。

有关配置软件以使用应用程序的更多信息,请咨询您的杀毒软件供应商。