在企业环境中配置最大性能
本节提供系统配置提示和最佳实践,以确保安全控制台在企业规模部署中的最佳性能。但是,较小的环境仍然可以从这些建议中获益,特别是关于优化数据库和灾难恢复的部分。
关于安全控制台主机
安全控制台是部署中操作的基础。它管理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:
- 创建您的
CustomRuntimeEnvironment.env
文件中/ opt / rapid7 / nexpose / nsc /
. - 开放
CustomRuntimeEnvironment.env
在文本编辑器中添加以下行:
1-Xmx31G2- xx: MaxNewSize = 7 g
- 保存
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.42#操作系统类型:linux3.# DB类型:web4#总内存(RAM): 94 GB5#连接数:1006#数据存储:hdd78max_connections=One hundred.9shared_buffers=24064 mb10effective_cache_size=72192 mb11maintenance_work_mem=2 gb12checkpoint_completion_target=0.713wal_buffers=16 mb14default_statistics_target=One hundred.15random_page_cost=416effective_io_concurrency=217work_mem=246415 kb18checkpoint_segments=32
针对11.7数据库进行调优
bash
1# DB版本:112#操作系统类型:linux3.# DB类型:web4#总内存(RAM): 94 GB5#连接数:1006#数据存储:hdd78max_connections=One hundred.9shared_buffers=24064 mb10effective_cache_size=72192 mb11maintenance_work_mem=2 gb12checkpoint_completion_target=0.713wal_buffers=16 mb14default_statistics_target=One hundred.15random_page_cost=416effective_io_concurrency=217work_mem=123207 kb18min_wal_size=1 gb19max_wal_size=4 gb
维护数据库
考虑到应用程序生成的数据量,强烈建议定期执行计划备份。在数据库备份过程中,安全控制台进入维护模式,无法运行扫描。规划部署涉及协调备份周期和扫描窗口。备份数据库所需的时间取决于数据量,可能需要几个小时才能完成。
有关执行数据库备份和维护的信息,请参见数据库备份/恢复和数据保留.
PostgreSQL还有一个自动真空功能,可以在后台执行一些必要的数据库维护任务。它在默认情况下是启用的,并且应该保持启用状态。
灾难恢复方面的考虑
如前所述,一个安全控制台足以处理企业级的所有活动。但是,对于您的组织的关键系统的灾难恢复计划,可能需要额外的备用安全控制台。如果灾难恢复计划开始生效,这个“冷备份”安全控制台将需要一个数据库恢复例程来包含最新的数据。
灾难恢复可能无法保证将数据中心的扫描引擎数量增加一倍。相反,恢复计划可以指示手头有许多备用部件来执行最低限度的扫描需求—例如,每周而不是每天—直到生产条件恢复正常。例如,如果您的组织在数据中心中有10个Scan Engines,那么额外的5个可以作为临时备份。拥有一些额外的扫描引擎也有助于处理偶尔出现的扫描峰值,比如每月的Microsoft补丁验证。
在服务器端使用杀毒软件
防病毒程序有时会影响依赖网络通信的重要操作,如下载更新、扫描等。阻止后者可能会导致扫描精度下降。如果你正在你的目标主机上运行杀毒软件,配置软件,让应用程序接收它需要的文件和数据,以实现最佳性能,以支持您的安全目标:
- 将应用程序更新服务器updates.rapid7.com添加到白名单中,以便应用程序可以接收更新。
- 将应用程序安装目录添加到白名单中,以防止反病毒程序删除该目录中与漏洞和利用有关的文件,否则它会认为这些文件是“恶意的”。
有关配置软件以使用应用程序的更多信息,请咨询您的杀毒软件供应商。