---
title: 安全检查与加固
description: "通过安全检查与加固提高系统或网络的安全性和稳定性，防止黑客攻击、数据泄露、系统崩溃等问题的发生。同时，也可以满足法规和合规要求，保护用户隐私和信息安全。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2300/bds/kunpengbds_omniruntime_20_0098.html
sourcePath: /source/zh/kunpengboostkithistory/2300/bds/kunpengbds_omniruntime_20_0098.html
indexId: 64ff05a923d109181622a2d038674600b4ce999ebb32ad92576cc3d48b371c2d78
---
# 安全检查与加固

通过安全检查与加固提高系统或网络的安全性和稳定性，防止黑客攻击、数据泄露、系统崩溃等问题的发生。同时，也可以满足法规和合规要求，保护用户隐私和信息安全。

#### 防病毒软件例行检查

定期开展对集群和Spark组件的防病毒扫描，防病毒例行检查会帮助集群免受病毒、恶意代码、间谍软件以及恶意程序，降低系统瘫痪、信息泄露等风险。建议使用业界主流防病毒软件进行防病毒检查。


#### 日志控制

关注点：

- 检查系统是否可以限制单个日志文件的大小。
- 检查日志空间占满后，是否存在机制进行清理。


#### 日志检查

二级索引JAR包引入了log4j框架，可以在HBase Master的日志中观察到索引的创建、删除等操作日志。可以在HBase Region Server的日志中看到元数据缓存等日志。

定期检查HBase Master和Region Server的日志，观察是否有二级索引相关的错误或异常抛出，例如查看报错堆栈有没有以com.huawei.boostkit.hindex开头的类。


#### 检查OmniData算子下推日志

OmniData算子下推引用了log4j的日志框架，用户可通过修改etc目录下面的logback.xml修改日志记录的相关配置：

- 检查系统是否可以限定单个日志文件的大小。
- 检查系统是否可以限定日志文件的数量或大小的总和。
- 检查日志空间占满后，是否存在机制进行清理。

日志的主要配置如下：

```
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--LOG FILE NAME-->
<FileNamePattern>${LOG_HOME}/omnidata-server.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern>
<!--LOG FILE RETENTION DAYS -->
<MaxHistory>30</MaxHistory>
<!-- LOG FILE MAX SIZE -->
<MaxFileSize>20MB</MaxFileSize>
<!-- LOG FILE TOTAL SIZE CAP -->
<TotalSizeCap>2GB</TotalSizeCap>
</rollingPolicy>
```


#### 检查HAF日志

HAF的日志使用配置文件进行日志相关功能的配置。日志分为审计日志和运行日志。审计日志的配置文件名为LogAuditCfg.json，运行日志的配置文件名为LogServiceCfg.json。

用户可修改“/home/omm/omnidata-install/haf-offload/etc” 目录下对应的配置：

- 检查系统是否可以限定单个日志文件的大小。logSize设置日志大小，有效范围为1M-100M。
- 检查系统是否可以限定日志文件的数量或大小的总和。backupCount设置备份日志数量，有效范围为0-100。
- 检查日志空间占满后，是否存在机制进行清理。通过覆盖备份日志实现。

日志的主要配置如下：

```
{
    "autoReload": false,
    "backupCount": 10,
    "logFile": "service.log",
    "logHeaderFormat": "%time%user%level%pid%tname%function%line",
    "logLevel": "INFO",
    "logPath": "/home/omm/haf-install/haf-target/logs/haf_user",
    "logSize": 10485760
}
```


#### 缓冲区溢出安全保护

为阻止缓冲区溢出攻击，建议使用ASLR（Address space layout randomization）技术，通过对堆、栈、共享库映射等线性区布局的随机化，增加攻击者预测目的地址的难度，防止攻击者直接定位攻击代码位置。该技术可作用于堆、栈、内存映射区（mmap基址、shared libraries、vdso页）。

开启方式：

echo 2 >/proc/sys/kernel/randomize_va_space


#### 漏洞修复

为保证生产环境的安全，降低被攻击的风险，请开启防火墙，并定期修复以下漏洞。

- 操作系统漏洞
- JDK漏洞
- Hadoop及Spark漏洞
- ZooKeeper漏洞
- Kerberos漏洞
- OpenSSL漏洞
- 其他相关组件漏洞
  以CVE-2021-37137为例。

  漏洞描述：

  Netty 4.1.17版本存在两个Content-Length的http header可能会发生混淆的风险通告，漏洞编号：CVE-2021-37137。

  本系统使用hdfs-ceph （version 3.2.0）服务作为存算分离的存储对象，它因依赖aws-java-sdk-bundle-1.11.375.jar而涉及该漏洞。建议用户及时更新漏洞补丁进行防护，以免遭受黑客攻击。

  影响范围：

  Netty 4.1.68及以前版本。

  修复建议：

  目前厂商已发布升级补丁以修复漏洞，请参考如下网址修复漏洞。

  https://github.com/netty/netty/security/advisories/GHSA-9vjp-v76f-g363(https://github.com/netty/netty/security/advisories/GHSA-9vjp-v76f-g363)


#### SSH加固

OmniData算子下推、HAF、OmniShuffle Shuffle加速、OmniAdvisor参数调优、OmniMV物化视图在部署安装过程，需要通过SSH连接服务器。由于root用户拥有最高权限，直接使用root用户登录服务器可能会存在安全风险。

建议您使用普通用户登录服务器进行安装部署，并建议您通过配置禁止root用户SSH登录的选项，来提升系统安全性。操作步骤：

用户登录系统后检查“/etc/ssh/sshd_config”配置项“PermitRootlogin”。

- 如果显示no，说明禁止了root用户SSH登录。
- 如果显示yes，说明需要修改PermitRootlogin为no。


#### 信息泄露风险提醒

ock.conf文件中的三个安全配置（ock.ucache.rpc.enableAuthentication，ock.ucache.rpc.enableTLS，ock.ucache.rpc.enableAuthorization）和Zookeeper的安全配置开关支持关闭，但关闭认证和传输加密可能会引入仿冒、信息泄露等风险，用户需谨慎操作。


#### 地址随机化及内核地址栈编译开关

为保证程序运行阶段内存地址保护，建议用户在编译选项中开启地址随机化randomize_va_space（如：echo 2 >/proc/sys/kernel/randomize_va_space）和内核地址栈保护配置，包括但不限于KASLR，PAX，SMAP/SMEP。


#### 密钥更新

密钥更新需要重启OmniShuffle Shuffle加速服务，请合理规划密钥更新周期。


使用kmc_tool工具定期进行密钥更新。

- --updateMK: 更新所有主密钥（master key）
  命令格式：./kmc_tool all --updateMK

- 更新keytab和whitelist。
  重新执行（可选）配置keytab和whitelist章节 关于kmc_tool工具更多使用说明请参见密钥管理工具。


#### 导入吊销列表

用户可以在生成吊销列表文件后，通过在配置文件中指定该文件的路径来完成配置。配置完成后，重启OCKD进程以使吊销列表生效。


#### 配置限制集群外IP地址访问

为了避免集群外Dos攻击，建议用户在集群防火墙中配置以限制集群外IP地址访问方式。

常见的大数据集群环境中通常配置多块网卡，包括业务网（用于数据传输，带宽较大）和管理网（用于集群管理，带宽相对较小）。建议将OmniShuffle Shuffle加速的监测端口都绑定为业务网络，并通过防火墙配置各节点业务网络为仅接受集群组网的网段报文，以抵御来自集群外部的DOS攻击。

本文以主节点（master）+计算节点（slave01，slave02，slave03）的经典组网为例：每个节点均有两个网卡（假设为网卡A和网卡B），网卡A为10GE，管理网段为90.90.1.*，网卡B为100GE，业务网段为192.168.1.*。那么可通过以下配置策略消减来自业务集群外的DOS攻击风险。

1. 各节点保证OmniShuffle Shuffle加速网络通信通过网卡B进行。
  ock.conf文件中的“ock.ucache.rpc.transport.devices”配置为网卡B的设备名称。

2. 各节点配置防火墙策略。
  通过iptables或ACL规则等限制此节点业务网段只接受网卡B业务网段192.168.1.*的报文。


#### 配置Kerberos身份认证票据

由于OmniShuffle Shuffle加速业务以及ZooKeeper认证均通过Kerberos完成，为了消减Kerberos认证可能存在的重放攻击导致仿冒，建议将身份认证票据有效期设置为最短时间。


#### 推荐环境变量设置

在UCX环境变量推荐配置章节中，UCX_TCP_TX_MAX_BUFS、UCX_TCP_RX_MAX_BUFS、UCX_RC_VERBS_TX_MAX_BUFS、UCX_RC_VERBS_RX_MAX_BUFS、UCX_RC_MLX5_TX_MAX_BUFS、UCX_RC_MLX5_RX_MAX_BUFS等环境变量的缺省值为-1，表示底层通信库UCX使用的内存没有上限，为了避免内存使用过大导致服务不可用，建议最大数目设置为131072（当单个Buffer大小为8K时，最大缓存池容量为1GB），用户可根据自己服务器的内存配置以及业务流量合理设置该环境变量。
