SevOne 数据平台安全性指南
关于
本手册旨在描述 SevOne NMS Security 功能部件,建议的配置,缺省设置,其他选项以及如何进行更改,以及在不影响系统执行其业务功能的能力的情况下硬化 SevOne NMS 设备和 SevOne Data Insight 的最佳实践。
SevOne 对软件进行微调,以提高速度。 如果客户的管理员/安全团队成员修改软件或在 SevOne / 虚拟设备上安装任何代理技术,可能会对设备性能造成未知影响。 只有在客户对软件所做的修改被删除并且任何已安装的代理技术被卸载后 , SevOne 支持才能提供帮助。
强烈建议在该版本的最新可用补丁上运行 Nessus、Snyk 或类似的外部安全扫描,以验证漏洞是否已得到解决。 如果目前无法升级生产环境,仍可在实验室或测试环境中执行这些扫描。
在本指南中,如果存在,
- [对 master的任何引用] 或
- [如果 CLI 命令(用于 NMS 或 Kubernetes 或 Redis )包含主站 ]和/或
- [其输出包含 master ]],它表示领导者或控制平面。
如果提到奴隶或工人 ,则是指追随者或代理人。
部署
网络位置
SevOne NMS 的目标是在内部和可信网络部署中使用。 SevOne 强烈建议您不要在开放式因特网上公开集群。 SevOne 还建议您将设备部署到受监视设备附近。 如果选择购买 HSA ,那么建议靠近其主设备。
在开放式因特网中公开 SevOne NMS 可能会给您的组织带来重大安全风险!
所需端口
SevOne 集群具有复杂的通信模式,并且依赖于多个必需的端口。 请参阅 SevOne NMS Port Number Requirements Guide 以获取已用端口的列表。 SevOne 具有禁用部分这些端口的客户机,但仅当您确定不使用其提供的功能并且不会影响安全性时,才应谨慎地禁用这些端口。
防火墙
缺省情况下, SevOne 设备已禁用 防火墙 进程。 为了实现最大安全性, SevOne 建议您启用此功能,并为设备使用的所有标准和定制端口进行配置。 您可以在 SevOne NMS 安装指南中找到有关如何配置防火墙的详细指示信息。 此外,您可以联系 SevOne 支持 以提供进一步的指导和帮助。
SSL 证书
SevOne NMS 设备随 自签名 SSL 证书一起交付,因为 Apache/Nginx 不会在其他情况下启动。 使用认证中心时,必须立即将证书替换为实际证书。 有关详细信息,请参阅 生成自签名证书或证书签名请求 指南。 如果需要,您可以联系 SevOne 支持 以获取有关安装证书的帮助。 启用 SSL 后, Apache/Nginx 的缺省配置将仅接受 TLS v1.2 。 但是,您也可以将其配置为使用 TLS v1.3 。
SSL 安全级别
OpenSSL 是 SevOne NMS 使用的 SSL 库。 SSL 定义安全级别设置 (SECLEVEL) ,用于确定用于密钥的签名算法的所需强度。 从 SevOne NMS 6.1 发行版开始, SECLEVEL 已从 1 增加到 2 ,从而限制了先前接受的密钥签名算法。
SECLEVEL 2 可接受的最小密钥长度为 2048 位,可处理的更长密钥长度至少为 4096 位。 以下是已接受的密钥签名算法。
- RSA+SHA512
- ECDSA+SHA512
- RSA+SHA256
- RSA+SHA384
- RSA + SHAl :EC
- DSA+SHA256
- ECDSA+SHA384
- ECDSA+SHA1
- DSA + SHAI
如果您使用的是不安全的密钥签名算法,那么 SSL 协商将失败。 在这种情况下,建议在其中一个受支持的 SECLEVEL 2 算法下重新生成密钥。 但是,如果无法执行此操作,那么可以将配置的 SECLEVEL 降低到 1 ,但请注意,这将导致安全性较低的 SSL 握手。
要将单个设备的 SECLEVEL 降低到 1 ,请执行以下步骤。
- 通过 SSH 登录 SevOne NMS 设备。
ssh root@<NMS appliance> - 进入 NMS 容器。
podman exec -it nms-nms-nms /bin/bash - 使用您选择的文本编辑器,编辑 /etc/crypto-policies/back-ends/opensslcnf.config 文件。
vi /etc/crypto-policies/back-ends/opensslcnf.config - 将 SECLEVEL 替换为变量 CipherString 从 SECLEVEL=2 到 SECLEVEL=1.从...
CipherString = @SECLEVEL=2:kEECDH:kRSA:kEDH:kPSK:kDHEPSK:kECDHEPSK:-aDSS:-3DES:!DES:!RC4:! RC2:!IDEA:-SEED:!eNULL:!aNULL:!MD5:-SHA384:-CAMELLIA:-ARIA:-AESCCM8要...CipherString = @SECLEVEL=1:kEECDH:kRSA:kEDH:kPSK:kDHEPSK:kECDHEPSK:-aDSS:-3DES:!DES:!RC4:! RC2:!IDEA:-SEED:!eNULL:!aNULL:!MD5:-SHA384:-CAMELLIA:-ARIA:-AESCCM8 - 保存 /etc/crypto-policies/back-ends/opensslcnf.config 文件。注: 任何由 OpenSSL 启动的新 SSL 握手现在都将使用更新后的 SECLEVEL。
HTTPS 只有
SevOne上,默认情况下 HTTPS 处于关闭状态。 强烈建议您在集群管理器 > 集群设置 > 安全中启用 HTTPS。
这将仅通过 https 协议强制连接到服务器,并将所有其他尝试重定向到 https。 它还将启用 HTTP 严格传输安全 ( HSTS ), 网站使用这种机制来声明自己只能通过安全连接访问。
为了提高安全性, SevOne 建议重定向并重写尝试通过不安全协议连接到服务器的 URL。 如果需要,请联系 SevOne 支持 以指导您完成此过程和/或帮助配置客户机设备。
现在,您将无法通过简单的 HTTP连接到 SevOne或NMS REST API。
SSL Certificates 用于 REST API
有一些功能需要同级之间的 REST API 进行相互通信。 缺省情况下, REST API 会在调用其他设备的 REST API 服务时跳过以验证这些设备的证书。 从 集群管理器 > 集群设置 > 安全性 中启用 按证书执行 REST API 验证 复选框以停止所有不可信调用。 如果同级间请求未使用来自有效认证中心的证书进行签名,或者如果该证书未添加到设备的 Java 密钥库,那么该请求将失败。 请确保已在每个同级的可信密钥中添加 SSL 证书。 可以通过以下方式完成此操作:
- 将根证书添加到每个对等设备的信任存储中(信任锚 /path/to/rootCA.crt)
- 为每个对等程序重新启动 REST API(svctl restart SevOne-restapi)
添加根证书(和链)
要将根证书 (和链) 添加到操作系统信任库,请执行以下命令。
示例
SevOne-act add-certificates --file /path/to/cert.crt
用户管理
授权
SevOne NMS 依赖于内置的基于角色的访问控制 (RBAC) 模型。 SevOne 提供了定义和继承 用户角色的完整功能。 这些角色支持精细控制,以授予/撤销访问系统功能和/或数据的许可权。
将为用户分配一个或多个用户角色。 LDAP 组与 NMS 角色之间也存在映射。
可以向 NMS 角色授予或撤销以下许可权:
- 查看特定 NMS UI 页面
- 访问 SOAP 和/或 REST API
- 在系统中执行特定的一组管理操作
- 查看和/或管理设备组
- 查看和/或管理具体设备
- 查看和/或管理其他用户和用户角色
认证
通常,系统的用户分为两种不同的类别:
- 需要对应用程序的访问权
- 需要访问 SevOne NMS 设备的操作系统
如果您需要访问 NMS 应用程序,那么可以通过以下一种或多种方式进行认证:
- SevOne 本地认证 (缺省情况下)
- 使用外部系统 (建议集成外部系统/秒)。 SevOne 产品当前支持通过 LDAP/Active Directory 用户凭证进行集成
SevOne 鼓励您配置系统以通过外部系统 (LDAP/Active Directory) 提供认证。 您可以从 管理 > 访问配置 > 认证设置管理服务器。 SevOne 建议您始终将安全 LDAP 与 SSL 或 TLS 证书配合使用。
最佳实践是保留一个或多个通过 SevOne Local 方法认证的管理帐户。 如果外部认证系统不可用或需要修复其连接,那么它将可用。 缺省情况下, NMS 设备随附一个用于 Web 应用程序的管理帐户 admin。 "admin" 是唯一具有系统管理员角色的用户。 在初始安装时,您需要更改此帐户的密码。
建议对简单部署和 POV 项目进行本地登录。 此方法允许管理用户帐户,强制使用复杂密码,保留密码历史记录,强制用户因年龄,重复或任何其他原因更改密码。
使用设备信息加密 AES256
出于安全原因,除了用户凭证之外,还使用 AES256 加密对包含受监视设备的敏感信息的表进行加密。
| 内部加密的 MySQL 表 | |
|---|---|
| 用户 | access_control.user |
| access_control.userrole | |
| 设备 | net.deviceinfo |
| net.netflowdeviceinfo | |
| 元数据 | net.metadata_attribute |
| net.metadata_namespace | |
| net.metadata_map | |
| local.metadata_map | |
| local.device_object_metadata | |
| 其他 | net.peers |
| net.policy_webhooks | |
| local.flowfalconaggregationtemplate | |
| local.netflowdirection | |
| local.netflowinterface | |
| local.netflowoptionstemplate | |
| local.netflowsourcetemplate | |
凭证加密
出于安全原因, NMS 数据库中的所有凭证都会在存储时进行加密。 这意味着需要在数据库中存储 认证凭证, FTP 服务器设置, SFTP 密码, SNMP 社区字符串等的每个插件都必须 在插入时对其进行加密 ,并使用可逆加密 在检索时对其进行解密 。
获取对敏感数据库记录的访问权意味着攻击者已获得对机器和加密密钥的访问权。 对数据库级别进行了改进。 SevOne::addDevice() 或 Device::getDevices() 是透明的,您使用这些方法的方式应该不会有任何改变(因为加密是由这些方法处理的)。 在 NMS 的代码库中的任何位置,您都应该仍然依赖于所有凭证的纯文本值。
但是,如果需要手动查询数据库 (例如,在 C/C++ 后端) ,那么应该了解加密值。 这将影响以下内容:
| 查询 | 加密值 |
|---|---|
| net.wmiproxy |
|
| net.wmideviceinfo |
|
| net.deviceinfo |
|
| net.device_candidates |
|
| local.device_database |
|
| net.nam_deviceinfo |
|
| net.vmwaredeviceinfo |
|
| net.backupservers |
|
| net.bulkdata_sources |
|
| net.ldapsettings |
|
| net.mount_points |
|
| net.callmanagerdeviceinfo |
|
| net.callmanagercdrdeviceinfo |
|
| net.ftp_servers |
|
会话管理
重复的失败登录尝试会导致帐户暂挂。
NMS 管理员可以定义是否允许同一用户进行并发会话。 如果不允许,那么在同一用户凭证进行新登录时,将终止较旧的会话。 缺省情况下,已启用 集群管理器 > 集群设置 > 登录 > 允许并发用户会话 。 建议禁用此字段。
管理员可以从 管理 > 访问配置 > Session Manager监视和管理活动用户会话。 识别可疑活动时,管理员可以手动暂挂用户会话。 将向用户发送通知,这些通知将断开连接并重定向到登录屏幕。
强制登录
缺省情况下, 允许 Forcelogin 为 enabled.SevOne 建议您不要从 " 集群管理器 > 集群设置 > 安全性" 中选择 允许 Forcelogin 复选框。 这将阻止您通过 forcelogin.php 脚本访问 SevOne NMS。
集群管理器 > 集群设置 > 安全性 中提供了若干其他实用程序 (但此处未明确记录) ,以确保集群及其用户的安全性。 请参阅 SevOne NMS 系统管理指南第 集群管理器 节以获取其他选项。
审计记录
SevOne NMS 还支持生成重要域事件的审计日志,包括与安全性相关的管理和系统操作。 缺省情况下,所有域事件都已启用,建议您不要将其禁用。 但是,如果需要切换任何域事件,那么可以从 集群管理器 > 集群设置 > 日志记录进行操作。
要记录的操作列表可由系统管理员通过应用程序用户界面进行配置。 系统提供事件同步的集群时间戳记,主机名 /IP 和触发事件的系统用户的上下文详细信息。 根据事件类型,系统会记录有关命令和操作结果的进一步详细信息 (特定于事件)。
缺省情况下,将在设备上收集日志。 但是,建议您通过 syslog(可选地启用 TLS) 将日志转发到外部目标,使用外部审计服务器来保持独立并允许对日志文件执行稳健操作。 日志的大小可能会变大,并且变得更难操作。 日志大小不太可能影响同级性能,因为存在重要的缓冲区。 可以从 集群管理器 > 集群设置 > 系统日志完成此操作。
设备管理
操作系统用户证书
SevOne 集群具有一些需要由 root 用户执行同级之间的远程访问的功能。 某些客户已配置 SevOne 集群,以防止 root 成为登录用户,虽然大多数功能继续按预期工作,但某些功能部件根本无法运行。 SevOne 不建议此时将其禁用,在这种情况下,无法保证正确的集群操作。
root 用户的密码对于每个客户机都是唯一的-在装运箱子时随机生成。 将为客户机管理员提供生成的密码,但建议他们在收到设备后立即更改密码。 要更改密码,请以 root 用户身份登录并执行命令 passwd。 请响应提示输入新密码。
以 "root" 用户身份登录
login as: root
Using keyboard-interactive authentication.
Password:
用于更改密码的命令
passwd
更改用户 root 的密码。 新密码:
强烈建议不要使用 root 用户进行正常登录。 存在可供系统管理员使用的特殊 admin 用户。 在客户机接收设备后,必须立即更改此用户的密码 (首次登录时将强制更改此密码)。 客户必须确保此密码安全,并且不得与组织外的任何人共享此密码-这包括用户可能正在使用的 SevOne 支持,专家实验室或升级团队。 要将管理用户添加为 sudo 用户,必须执行以下步骤。
- 以根用户身份登录。
ssh root@<NMS appliance> - 执行以下命令修改客户端的管理员账户。
usermod -aG wheel admin - 运行 可视化 命令以编辑 sudoers 文件,该文件由 sudo 命令使用。 更新默认设置部分的 secure_path。
visudo默认 secure_path = /sbin : /bin : /usr/sbin:/usr/bin:/usr/local/bin:/usr/bin:\ /usr/local/sbin:/usr/sbin:/usr/local/scripts:/opt/dell/srvadmin/bin:\ /home/admin/.local/bin:/home/admin/bin
SevOne 员工没有任何用于访问设备的已知凭证。 如果需要帮助, SevOne 可以指导您完成配置,诊断等工作。 如果需要,您可以通过共享凭证为他们提供对设备的临时访问权。 支持案例完成后,请更改密码以保留唯一凭证和秘密凭证。 您可能有一个专用用户用于外部访问。 SevOne 建议您保持禁用此类帐户 SSH ,并且仅当您期望 SevOne 支持人员 需要访问机器时才允许。 解决案例后,应禁用帐户。
NMS 系统中还有一个允许 SSH 的用户- 支持 用户。 缺省情况下,密码为 supportuser。 系统将提示您并要求您更改 support 用户密码。 提示时输入新密码。
有关用户和初始设置,如何更改 root, admin或 支持用户 密码等的更多详细信息,请参阅 SevOne NMS 安装指南。
所有操作系统 SSH 用户的密码强度都有标准要求。 密码长度必须超过 15 个字符,大小写混合,特殊字符,数字等。 密码以 41 字节为单位进行散列。
DB 证书
SevOne 提供了一个实用程序来允许更改数据库用户的凭证。 SevOne 强烈建议客户在接收设备时更改其数据库凭证。 SevOne 支持 可以帮助您完成此过程。
您可以选择 需要 mysql 用户的强密码 以启用复杂密码策略。 缺省情况下,此选项处于禁用状态,但建议您将其启用。 可从 集群管理器 > 集群设置 > 安全性获取此信息。 选中 需要 mysql 用户的强密码 复选框以强制实施 MySQL 用户密码的复杂性。 MySQL 密码的最小长度必须至少为 14 个符号长度,至少包含一个特殊字符 +-_ @ []: ,.%,至少一个数字,至少一个大写字母和至少一个小写字母。 有效字符为 a-z , A-Z , 0-9 , +-_ @ []: ,.%。有效密码的示例: 8s0H43o@7]o%p3。 如果当前 MySQL 密码不满足此要求,那么会将密码更改为符合随机要求的密码。
更改 MySQL 用户证书
SevOne NMS 使用 MySQL 数据库来存储 NMS 配置, NMS 用户认证,设备配置和设备轮询数据信息。 缺省情况下, MySQL root 用户设置为空密码。 建议您在 SevOne NMS 中更改 MySQL root 用户的密码。
SevOne-change-mysql-password 命令用于更新 NMS 设备的 MySQL 管理用户的 username 和/或 password 。
如果设备位于 HSA 对中,那么必须在主动设备上运行此操作,并且此对中的被动设备将自动更新。 但是,此命令不会使用相同的用户名和密码更改自动更新集群中的其他设备。 此过程需要分别在集群中的所有 活动 设备上运行。 NMS MySQL 缺省用户为 root。
示例
SevOne-change-mysql-password --username "NEW_USERNAME" --password "NEW_PASSWORD"
--username (Required) Rename the current username to this
--password (Required) Change the password to this value
The following are valid characters:
a-z, A-Z, 0-9, +-_@[]:,.%
要将此过程作为单个命令对集群中的所有活动设备运行,请首先将密码设置为 shell 变量,然后执行如下所示的命令。 必须从 "集群引导程序活动" 设备执行此命令。
示例
MYPASSWORD='Welcome@123456789';
for IP in $(mysqlconfig -BNe 'select ip from peers;'); \
do echo "Executing on $IP"; \
ssh $IP "SevOne-change-mysql-password \
--username root --password $MYPASSWORD"; done
识别当前 NMS 身份和 IP。
SevOne-peer-whoami
=== 我的同行信息: --- ID:1 --- 名称: pandora-01 --- IP: 10.129.14.168
使用 MySQL 客户机,从集群中的任何设备连接到以上返回的 IP 地址 (例如, 10.129.14.168)。 系统将提示您输入密码。 输入示例中设置的新密码 (Welcome@123456789)。 如果使用了除 root 以外的用户名,那么可以更改为正确的用户名,如以下命令中所示。 成功完成此命令会将您转至 MySQL 提示符。 您应该已登录并且能够执行 MySQL 查询。
mysql -h 10.129.14.168 -P 3307 net -u root -p
Please respond to the following prompt:
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6151
Server version: 5.6.40-enterprise-commercial-advanced-log MySQL Enterprise Server - Advanced Edition
(Commercial)
Copyright (c) 2000, 2022, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
mysql> exit
Bye
如果密码存在错误或未正确更新,那么您可能会收到如下所示的错误-您可能需要全部运行该过程。
mysql -h 10.129.14.168 -P 3307 net -u root -p
Please respond to the following prompt:
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'pandora-01' (using password: YES)
数据与配置
静态数据
SevOne 不会存储或操作用户的任何个人或机密数据。 SevOne 仅存储认证数据。 用于认证用户或与其他系统集成的所有数据都被视为敏感数据,并保持安全。 集群配置和设备信息被视为机密信息,并且 静态加密。 SevOne 用于持久存储数据的加密有两种类型:
- 用于验证用户身份的密码-应用程序将此数据存储为单向散列,并且无法对其进行解密。 本地应用程序用户的所有密码都以此方式存储。重要信息: 通过使用 PASSWORD_BCRYPT 算法消除外部 Salt 生成,并将 成本因素 增加到 14 ,可增强密码散列算法。
- 应用程序用于连接到外部系统的信息。 示例: 用于设备访问的凭证, SFTP 密码,用于同步组的 LDAP 绑定帐户/密码等。 应用程序需要能够解密此信息以执行其功能。 SevOne 会在 MySQL (AES256) 中使用更强的加密技术来存储已加密的此数据。 更多详情,请参阅本文档中的凭证加密部分。
运动中的数据
SevOne 强烈建议不要在开放式因特网上部署 NMS 系统,访问仅限于授权人员。
对于集群配置和高可用性解决方案,将对集群中的数据复制进行加密。 在正常集群操作期间,会将数据从集群引导者配置复制到所有同级配置。 此外,每个主设备都会将其所有数据复制到其辅助设备 (即 HSA)。 此外,对于每个同级的 MySQL 数据库的所有远程连接,都存在认证和加密。 只有其本地进程可以在不加密的情况下访问数据库。
- 作为最佳实践, SevOne 建议通过限制集群中的访问权来 允许列出同级 ,以便只有同级可以与其他同级联系。 由于可以在成员可能具有 NAT 防火墙分隔成员的位置部署设备,因此缺省情况下未配置此功能。
- 对于更注重安全的客户,SevOne 提供了使用 OpenVPN,一种基于 SSL/TLS 的 VPN 解决方案)加密对等设备之间所有流量的部署。 但是,这会影响系统操作的性能。
如果集群中的同级通过发送 SSH 命令相互通信,那么将通过 SSH 密钥和/或密码的组合来允许和限制与同级的 SSH。
此时,大多数 SSH 命令都需要 root 级别访问权。
SevOne 不断降低执行各种命令和实现最低特权原则所需的许可权级别。
路径与密码
SSH
- 密钥交换算法: diffie-hellman-group14-sha1
- 主机密钥算法: ecdsa-sha2-nistp256
- server-> 客户机密码: aes128-ctr MAC: hmac-sha1 压缩: 无
- client-> 服务器密码: aes128-ctr MAC: hmac-sha1 压缩: 无
FIPS
- 密钥交换算法: diffie-hellman-group14-sha1
- 主机密钥算法: ecdsa-sha2-nistp256
- 服务器-> 客户机密码: aes128-cbc MAC: hmac-sha1 压缩: 无
- client-> 服务器密码: aes128-cbc MAC: hmac-sha1 压缩: 无
SevOne-requestd
ZeroMQ CURVE 加密- Curve25519 椭圆曲线加密
MySQL
TLS 1.2 ,带有 rsa 加密 (2048 位公用密钥) , sha256 签名算法
| 客户端 | 密码 |
|---|---|
| mysql cli 客户端,c/c++,SevOne-ocd, soa | ECDHE-RSA-AES128-GCM-SHA256 |
| 普山 /rest-api php | ECDHE-RSA-AES256-GCM-SHA384 |
| 复制 | system-缺省 TLS 1.2 密码 |
Kafka
TLS 1.2 ,带有 rsa 加密 (2048 位公用密钥) , sha256 签名算法,系统缺省 TLS 1.2 密码
REST API 实时映射
对等 <-> 集群 Leader:443 (nginx 将使用在 /secrets/nginx/nginx.crt 配置的证书),系统默认的 TLS 1.2 密码
移动中的设备配置
SevOne 强烈建议您通过 SNMPv3 为所有设备配置安全轮询 (如果适用)。 SevOne 支持通过 SNMPv3进行认证 (MD5, SHA , SHA-224, SHA-256, SHA-384和 SHA-512) 和加密 (AES , AES192, AES192C, AES256, AES256C, 3DES和 DES)。 这是通过提供用户名,密码和加密密钥完成的。 请参阅 SevOne NMS User Guide 中的 SNMP Quick Start Guide 和/或 SNMP Plugin 部分,以获取详细信息。
请参阅 SevOne NMS System Administration Guide的 Cluster Manager 部分以获取更多详细信息。
平台安全
SevOne 设备是完整的解决方案,部署了完整的 Linux, Apache/Nginx, MySQL, PHP (LAMP/LEMP) 堆栈 (NOTE:Apache 或 Ngnix 取决于您的 SevOne NMS 版本)。 SevOne 集群通过部署新设备并将它们作为同级添加到集群而增长。
操作系统和第三方软件包
SevOne NMS 6.8 发行版已将操作系统从 CentOS 8 Stream 迁移到 Red Hat Enterprise Linux (RHEL) 8.9。
内核
SevOne's 的新部署不会受到 dirty cow (CVE-2016-5195) 攻击的影响。 为了实现最大限度的安全性, SevOne 强烈建议较旧的客户机手动安装并选择包含 SevOne 提供的新内核 (4.9.X) 的独立软件包。 有关更多信息和帮助,请联系 SevOne 支持人员。
进程和权限
NMS 设备上的某些进程正在其自己的用户下运行,以分离问题和最小许可权。 示例:Apache/Nginx, MySQL, REST API, Redis, Kafka 等。 还有其他进程仍以具有完全许可权的 root 用户身份运行。 在存在安全问题的情况下, SevOne 正在努力将此类服务转换为其自己的受限用户和组,并限制其许可权,彻底消除 root 用户的使用。
一些 SevOne 客户手动配置 SevOne-daemons 以非 root 用户身份运行。 但是,这种变化使设备难以升级和维护。 SevOne 不建议使用此配置。 有关更多详细信息,请联系 SevOne 支持。
高可用性解决方案
SevOne 集群中的每个同级都可以使用热备用设备 (HSA) 进行对等连接,以提供实时备份和故障容错。 在此配置中,主设备会将其包含的所有数据 (配置和轮询) 复制到 HSA。 如果主设备发生故障 (由于硬件故障,电源中断,网络连接中断等) ,那么 HSA 将能够接管主设备的所有职责。 这包括轮询,基线,报告以及集群引导者的管理功能。 一旦没有与主 PAS 的连接超过 x 分钟 (缺省情况下, x = 10 分 /600 秒,但此字段可配置) , HSA 将立即开启。
从 HSA 返回到 PAS 是一项手动活动,因为它需要合并两个设备的数据。
HSA 只是一种预防措施。 SevOne 具有从未使用过的具有 HSA 的客户机。 他们有多年稳定的经营。
防止简单附件中的 XSS
由于与旧报告的向后兼容性,缺省情况下,允许在简单报告附件中使用定制代码。 这意味着可以编辑报告的任何用户都可能注入有害代码,这些代码将在任何其他用户查看报告时执行。 为了防止发生此情况, SevOne NMS 管理员可以使用 集群管理器 > 集群设置 > 安全性 中的 允许在简单附件中使用不安全代码 复选框,以允许/禁止在简单附件中使用定制代码。 缺省情况下, 允许简单附件中的不安全代码 复选框处于启用状态,但 SevOne 建议禁用此选项。
强制执行同源政策
缺省情况下, 强制同一源策略 复选框处于启用状态,建议不要禁用此选项。 启用 强制同一源策略 复选框后,将阻止在当前域外部装入 SevOne NMS。 这包括门户网站以及使用强制登录脚本将 SevOne NMS 装入到恶意用户可从中记录活动的 iframe 中。 注: 如果取消选中此复选框,那么将降低应用程序安全性,以防止 SevOne NMS 传递特定安全扫描。 通过选中此复选框,它将强制实施同一源策略 (SOP) 或允许您配置允许的源的小列表。 另外,它还会减少攻击面,防止 CSRF 攻击。
一般数据保护条例
一般数据保护条例 (GDPR) 是关于欧盟 (EU) 内所有个人的数据保护和隐私的条例。 它要求组织改革业务运营方式,以满足处理个人数据的更高标准。 GDPR 主要旨在让个人对其个人数据进行控制,并通过统一欧盟内部的监管来简化国际商业的监管环境。 此法规不适用于特定软件产品 (例如 SevOne NMS) ,但它要求使用 SevOne NMS 的组织使用最佳实践准则来保持组织合规并证明责任。
任何受 GDPR 法规约束的 个人数据 都是用于唯一识别自然人的数据,或揭示其种族或族裔,政治观点,宗教或哲学信仰,任何生物特征数据等。 根据此定义, SevOne NMS 可以在没有任何 个人可标识信息 (PII) 的情况下运行。 但是,管理员通常会提供此类数据,以便对其员工执行的操作保持用户帐户和个人责任。
使用 SevOne NMS 用户帐户时,它会跟踪用户的名字,姓氏,电子邮件地址和用户名。 您必须确保组织的操作符合 GDPR。
SevOne NMS 仅供选定数量的公司员工使用。 它不提供自注册。 因此,它不会直接从用户处收集个人信息。 用户必须向 SevOne 管理员提供详细信息,才能创建用户帐户。 SevOne NMS 不需要对此数据 (包括电子邮件地址) 的合法性进行任何确认或验证。
SevOne 建议所有客户制定策略和最佳实践,以正确处理任何个人数据。 必须任命数据保护干事并对其进行培训,以监督这些做法的正确应用。
SevOne NMS 的最佳做法
通知用途并获取同意
在 SevOne NMS 中输入用户的详细信息之前,通知用户如何使用信息并获得用户的同意。 管理员只能在收到同意后创建用户帐户。
允许用户请求收集的个人数据
SevOne NMS 管理员使用 SevOne NMS > 管理 > 访问配置 > 用户管理器 或 SevOne NMS ' REST API 来导出有关用户的所有详细信息并将其提供给用户。
数据可移植性
SevOne NMS 的 REST API 以标准 JSON 数据格式 (即可读文本) 工作。 用户数据的导出可用于传输信息。
被遗忘的权利
组织策略必须允许用户请求被遗忘。 收到此类请求时, SevOne NMS 管理员必须使用 SevOne NMS > 管理 > 访问配置 > 用户管理器 或 SevOne NMS ' REST API来删除用户帐户。
违规通知
当组织意识到数据泄露时,他们有义务在最初 72 小时内通知所有受影响的用户。 数据泄露可能 导致个人权利和自由面临风险。 SevOne 建议将 SevOne NMS 设备保留在公共因特网上。 SevOne 利用最佳行业实践来维护服务安全的数据泄露。 SevOne NMS 提供审计,自我监视和其他选项,以支持管理员防止或快速识别此类事件。 在不太可能发生这种情况的情况下, SevOne 建议实施已建立的策略。 例如,通知其详细信息已泄露的所有员工 (系统用户)。
审计日志
删除用户后,可能会跟踪其 id 或 username 以进行审计,从而跟踪对于系统正确操作至关重要的特定操作。 出于安全原因,将在预定义的时间段内保存此信息。 可使用 syslog 配置来配置保留期,保留期取决于客户机的组织策略。 在保留期结束时或日志超过 100MB时,将归档日志。 缺省情况下,存在一个设置为一年的可配置生存期。 在超时时间段结束时,将删除日志。
日志用于确保 SevOne NMS 正常运行,并继续为其他 SevOne NMS 用户提供服务。
SevOne 建议用户在决定离开系统时,用户名和标识不足以唯一地标识自然人。 在无法执行此操作的情况下,必须通知用户其标识用户名将保留更长时间以进行审计。 必须共享用于删除此数据的确切策略和时间线。
在 NMS 管理员将信息备份到其他位置的场景中,必须有一个策略来确保在保留期结束后立即删除用户数据。 即使将日志导出到外部系统或备份服务器以进行进一步分析,也必须有明确的到期策略。
IP 地址
静态 IP 地址可用作 联机标识 ,当其他信息 (例如,真实姓名,电话号码,电子邮件地址等) 也随其一起存储时,将被视为 个人数据 。 目前,没有执行 GDPR 政策的先例,但有公认的最佳实践。
- 动态 IP 地址不得视为个人数据。 即使假定 ISP 具有此 IP 地址的用户记录,在共享数据之前也必须满足某些法律标准。 客户公司不得具有唯一标识用户的方法。
- 静态 IP 地址更有可能 (但不是 100%) 保证允许识别自然人,并可以指向设备 (物理或虚拟)。 结合其他细节如所使用的应用程序,用户名等, 可以指向一个有满意自信水平的具体人。
SevOne NMS 收集的数据本身不足以识别用户,不得视为个人数据。 SevOne 建议客户必须确保其组织中没有任何其他数据与 SevOne 数据组合在一起,足以识别人员。 如果客户机具有其网络用户的记帐或其他数据,那么此信息必须与 SevOne NMS 数据保持独立。 任何时候都不能组合此数据。 不得有任何用户有权访问这两种产品并允许进行组合报告。
GDPR 用户权利
- 从导航栏登录到 SevOne NMS> ,转至 SevOne NMS > 管理 > 访问配置 > 用户管理器。
- 或者,您可以直接使用 SevOne NMS 的 REST API 端点。
| 用户权限 | SevOne NMS > 管理 > 访问配置 | SevOne NMS REST API | 注释 |
| 知情权 | 用户经理 |
|
帮助管理员查找并抽取产品中存储的数据类型。 允许客户机管理员将详细信息发送给受影响的最终用户。 |
| 访问权 | 用户经理 |
|
如果客户从 SevOne NMS 提供对个人可识别信息 (PII) 的访问权,那么管理员必须使用此 REST API 端点来提供 PII 数据的 JSON 导出。 |
| 纠正权 | 用户经理 |
|
用户可以更改其详细信息或请求管理员进行更改。 管理员能够纠正和更正 SevOne NMS 中的所有 PII 数据。 |
| 擦除权 | 用户经理 |
|
通过用户经理,客户能够纠正和更正来自 SevOne NMS 的 PII 数据。 |
| 限制处理的权利 | 用户经理 |
|
通过用户经理,客户能够纠正和更正来自 SevOne NMS 的 PII 信息。 |
| 数据可移植性权利 | 用户经理 |
|
如果客户决定提供对 SevOne NMS 中 PII 信息的访问权,那么此脚本将提供 PII 数据的 CSV 导出。 |
| 对象权 | 不适用 | 不适用 | 不适用于 SevOne。 这是客户组织的手动流程/策略。 |
SevOne NMS 安全加固
目前市场上有几个安全扫描器可供商用。 例如, Nessus。 对 SevOne NMS 运行扫描程序时,可能会导致一些问题,但其中一些问题可能没有引起任何关注或有可用的解决方案。 以下是一些场景的列表。
| 问题 | 解决方法 | |
| 与防火墙配置相关的 CIS 合规性 | 必须通过 firewalld在回送接口 (127.0.0.1/8) 上配置回送流量。 | |
| 与操作系统配置相关的 CIS 合规性 | 要防止 IPv4 数据包转发,请按照以下步骤配置操作系统。 如果 /etc/sysctl.d/90-custom.conf 文件不存在,请创建该文件。
使用自己选择的文本编辑器编辑 /etc/sysctl.d/90-custom.conf 文件,添加以下内容,然后保存。
|
|
| 点击劫持漏洞 | 将 X-Frame-Options 头添加到以下配置文件中的 location /manual 。
使用您选择的文本编辑器来编辑文件。 编辑 50_sevone.conf 文件示例: 将以下行添加到 50_sevone.conf 文件编辑 50_ssl_sevone.conf 文件示例: 将以下内容添加到 50_ssl_sevone.conf 文件
在更新 /config/nginx/conf.d/50_sevone.conf 和 /config/nginx/conf.d/50_ssl_sevone.conf之后,重新启动 nginx。
|
|
| docker | Docker 软件包已更新。
docker-ce-23.0.1-1.el8.x86_64 docker-ce-cli-23.0.1-1.el8.x86_64 |
|
| JAVA | 11.0.20-0.x86-64 ( IBM Semeru Certified) | |
| 内核 | 4.18.0-513.11.1.el8_9.x86_64 | |
| MySQL | MySQL 已移至 SevOne NMS 6.7.0中的 MariaDB 10.6.12 。
mysql Ver 15.1 Distrib 10.6.12-MariaDB, for Linux ( x86_64 ) 使用 EditLine 包装器
mysql Ver 15.1 Distrib 10.6.12-MariaDB, for Linux ( x86_64 ) 使用 EditLine 包装器 |
|
| Nginx 将安全性令牌设置为 off | 执行以下步骤。
使用您选择的文本编辑器,创建、编辑并保存新文件 70_servertokens.conf. 示例 创建新文件
编辑新文件
将以下行添加到新文件并保存
|
|
| Nginx | 1.25.2-1.el8.x86_64 | |
| REST API | 2.1.47 | |
| SSH/SSL | openssh-8.0p1-17.el8.x86_64 | |
| PHP | 8.1.27-1.el8 注: 要使用 PHP 8 ,如果需要帮助,请联系 专家实验室 。 |
|
| 除去 rsh 和 telnet |
|
|
| 限制 su 的使用 | 在 SevOne NMS 实例可容纳定制用户的场景中,很好的安全性增强功能是将 su (CLI 命令) 的使用限制为仅 滚轮组成员 。 使用您选择的文本编辑器,在 /etc/pam.d/su 文件中取消注释 line# 6)。 即,从下一行的开头除去 # 。
编辑 /etc/pam.d/su 文件后, line# 6 应显示为如下所示。
|
|
| SSH 弱 MAC 算法 | 详情请参阅本指南中的 FIPS 模式。 | |
| SSL 自签名证书 | SevOne NMS 设备随 自签名 SSL 证书一起交付,因为 Apache/Nginx 不会在其他情况下启动。
详情请参阅本指南中的 SSL 证书。 |
|
| 系统 d | systemd-239-78.el8.x86_64 | |
| 用户 rocommunity 和 rocommunity6 共享同一密码。 (/config/snmp/snmpd.conf) | 使用 ssh 和标准 linux 实用程序来配置 rocommunity 和 rocommunity6 字段。 | |
| VIM | 8.0.1763-19.el8_6.4.x86_64 | |
CVE-2019-10246: 在 Eclipse Jetty V 9.2.27, 9.3.26和 9.4.16中,在 Windows 上运行的服务器在配置为显示目录内容列表时,容易将 Windows 上的标准基本资源目录名称公开给远程客户机。 显示的信息仅限于已配置的基本资源目录中的内容。 |
这是误报,因为 SevOne 不会在 Windows 上运行。 | |
CVE-2017-17484:International Components for Unicode (ICU) for C/C++ 中 ucnv_u8.cpp 中的 ucnv_UTF8FromUTF8 函数通过 60.1 中的 ucnv_convertEx 调用在 UTF-8 到 UTF-8 转换时处理不当,从而允许远程攻击者通过精心制作的字符串导致拒绝服务(基于堆栈的缓冲区溢出和应用程序崩溃)或可能产生未指定的其他影响,如 ZNC 所示。 |
这是一个误报,因为它显示目标缓冲区中没有溢出。 | |
| CVE-2016-6497 : https://nvd.nist.gov/vuln/detail/CVE-2016-6497 | 这是误报,因为它仅影响 LDAP 登录,而 SevOne 数据总线根本不使用 LDAP。 | |
业界标准
通用评估准则 (Common Criteria)
SevOne NMS 5.5.0.1 已正式通过通用标准认证。 这有助于证明 SevOne 产品的可信赖性,以及我们对确保客户设备安全的承诺。 NMS 认证报告、保护简介和安全目标可在通用标准门户网站 ( https://www.commoncriteriaportal.org/index.cfm ).
STIGs
可以根据《安全技术实施指南》 ( STIG ) 的规格对设备进行配置,但这样做会降低设备的功能。 建议不要使用此配置。 有关更多详细信息,请联系 SevOne 支持。
FIPS 方式
从 SevOne NMS 6.1 开始, 3DES cipers 禁用 Nginx FIPS 模式。
SevOne 提供了针对 Web 服务器 (Apache 或 Ngnix ,具体取决于您的 SevOne NMS 版本) 和 OpenSSH的可选配置文件。 选中时,应用程序将以 FIPS 140-$tag1 方式工作。 这将禁止使用已在实践中证明比更安全的密码更容易克服的安全密码。 您使用的 SSH 客户机需要支持更安全的密码。
在非 FIPS 方式期间受支持
执行以下命令以在 非 FIPS 方式下返回受支持的算法。
SSH 客户机的非 FIPS 方式
cat /config/ssh/ssh_config.default | grep -iE 'ciphers|mac|kex'
KexAlgorithms diffie-hellman-group14-sha1 密码 aes128-ctr,aes256-ctr 互助会 hmac-sha1,hmac-sha1-96、 hmac-md5,hmac-md5-96
SSH 服务器的非 FIPS 方式
cat /config/ssh/sshd_config.default | grep -iE 'ciphers|mac|kex'
密码 aes128-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr 汽车空调 hmac-sha1,hmac-sha1-96, hmac-sha2-256,hmac-sha2-512、 hmac-md5,hmac-md5-96
FIPS 方式期间受支持
执行以下命令以在 FIPS 方式下返回受支持的算法。
SSH 客户机的 FIPS 方式
cat /config/ssh/ssh_config.fips | grep -iE 'ciphers|mac|kex'
KexAlgorithms diffie-hellman-group14-sha1 密码 aes128-cbc,aes256-cbc 互助会 hmac-sha1,hmac-sha1-96
SSH 服务器的 FIPS 方式
cat /config/ssh/sshd_config.fips | grep -iE 'ciphers|mac|kex'
密码 aes128-cbc,aes256-cbc,aes128-gcm@openssh.com,aes256-gcm@openssh.com 互委會 hmac-sha1,hmac-sha2-256、 hmac-sha2-512
某些客户选择进一步减少受支持的通信 Ciphers 和 Macs 的数量,但是,这可能会在监视较旧的设备时导致兼容性问题。
解除 SSH 的弱 MAC 算法配置
- 使用 ssh以 root用户身份登录到 NMS 设备。
ssh root@<NMS appliance> - 将目录切换到 /config/ssh。
cd /config/ssh - 进入 NMS 容器。
podman exec -it nms-nms-nms /bin/bash - 生成 sshd_config 文件的副本。
cp sshd_config sshd_config.custom - 使用您选择的文本编辑器,编辑新的定制 (sshd_config.custom) 文件,并从以单词 Ciphers 和 MACs开头的行中删除有问题的 SSH 密码。 确保 仅 删除需要除去的密码和 MAC。
- 保存并关闭文件。
- 验证 SevOne-select 显示自定义文件。
SevOne-select sshd config - 将定制配置与 sshd_config进行符号链接。
ln -sf sshd_config.custom sshd_config - 切换 SevOne-select 以使用新的自定义配置。
SevOne-select sshd config custom - 使用 SevOne-select sshd 配置验证选择是否正确。
- 重新启动 sshd。
supervisorctl restart sshd
常见问题
IBM SevOne 是否公开发布安全扫描结果?
编号 行业最佳实践并不是发布扫描结果,因为它通过通知黑客将精力集中在哪里,使所有客户都面临进一步的风险。
IBM SevOne 确实使用一系列商用工具在内部测试我们的产品,以识别风险。 IBM SevOne 不认可所使用的工具,而是将它们用作执行尽职调查的指南。
IBM SevOne 强烈鼓励所有客户遵循其他行业最佳实践,并对其网络上部署的产品执行定期扫描。 这将涵盖部署时的任何错误配置。 如果在扫描 IBM SevOne 时存在任何问题,那么客户应通过向支持人员开具凭单来报告这些问题。
IBM 我们非常重视安全和隐私。有关 IBM 流程的更多信息,请参阅 https://www.ibm.com/trust/security-spbd.
MySQL 数据库是否加密?
MySQL 数据库未完全加密。 集群和设备信息,密码等已加密 静态。 但是,例如,时间序列数据不是。
MySQL 数据库使用什么加密机制?
它是 AES256。
MySQL 数据库版本多久更新一次?
仅当存在大量安全性更新或提供了性能缺陷修订时,才会更新 SevOne Data Platform 上的 MySQL 数据库版本。
是否可以对整个文件系统进行静态加密? 如果是的话,情况如何?
SevOne Data Platform 不支持对整个文件系统 静态进行加密。
SevOne Data Platform 支持哪个版本的 TLS?
SevOne Data Platform 支持 TLS v1.2 和 v1.3。
SevOne Data Platform 能否支持非默认配置的 TLS v1.3?
是,可以更改非缺省配置以启用 TLS v1.3。
如何解决过时的 TLS 密码问题?
- 以根用户身份 SSH 登录 NMS 设备。
ssh root@<NMS appliance> - 转到目录 /etc/sevone。
cd /etc/sevone - 使用您选择的文本编辑器编辑 nms.yaml 文件。
vi nms.yaml - 在文件中搜索 soa: ,你会看到类似下面的内容。
"image": "icr.io/sevone-pr/nms/soa:c8496f66" - 在这一行的上方,添加以下内容。
- "name": "GODEBUG" "value": "tlsrsakex=1" "valueFrom": null - 保存 nms.yaml 文件。
- 从主机重新启动 NMS pod。
systemctl restart nms
引用
- http://www.thegeekstuff.com/2009/07/linux-apache-mod-ssl-generate-key-csr-crt-file/
- https://en.wikipedia.org/wiki/Certificate_signing_request
- https://en.wikipedia.org/wiki/Public_key_certificate
- https://en.wikipedia.org/wiki/Certificate_authority
- https://en.wikipedia.org/wiki/Self-signed_certificate
- https://www.digitalocean.com/community/tutorials/openssl-essentials-working-with-ssl-certificates-private-keys-and-csrs
- https://www.openssl.org/docs/manmaster/man1/openssl-req.html