📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

配置项作用 #

bootstrap.system_call_filter 配置项控制是否启用系统调用过滤(System Call Filter),基于 Linux seccomp(Secure Computing Mode)机制限制进程可以执行的系统调用,从而增强安全性。

配置项类型 #

该配置项为静态配置,需要在启动时设置,修改后需要重启节点才能生效。

默认值 #

true(启用)

是否必需 #

可选配置项

工作原理 #

系统调用过滤通过 seccomp 机制工作:

┌─────────────────────────────────────┐
│         Easysearch 进程              │
└─────────────────────────────────────┘
            │
            │ 执行系统调用
            ▼
┌─────────────────────────────────────┐
│      seccomp 过滤器                  │
│  (启用时:只允许安全的系统调用)       │
└─────────────────────────────────────┘
            │
      ┌─────┴─────┐
      │           │
  允许的调用    拒绝的调用
      │           │
      ▼           ▼
   正常执行    返回 EPERM

安全增强 #

启用系统调用过滤可以防御:

威胁类型防御效果
代码注入攻击阻止执行恶意代码的系统调用
内核漏洞利用限制可利用的系统调用范围
权限提升降低攻击面
意外操作防止执行危险系统调用

允许的系统调用 #

过滤器允许执行必要的安全系统调用:

  • 文件 I/O 操作(read、write、open、close 等)
  • 网络操作(socket、connect、bind 等)
  • 内存管理(mmap、munmap、mprotect 等)
  • 线程管理(clone、set_robust_list 等)
  • 时间相关(clock_gettime、gettimeofday 等)

使用示例 #

# 默认配置(启用,推荐)
bootstrap.system_call_filter: true

# 禁用(不推荐)
bootstrap.system_call_filter: false

推荐设置建议 #

生产环境建议:保持默认值 true

特殊场景禁用:

# 以下场景可能需要禁用:
# 1. 使用不兼容的插件
# 2. 需要执行受限制的系统调用
# 3. 在某些受限容器环境中
bootstrap.system_call_filter: false

平台支持 #

平台支持状态说明
Linux支持完整支持 seccomp
Windows不支持配置被忽略
macOS不支持配置被忽略
容器环境取决于配置需要容器支持 seccomp

容器环境注意事项 #

在某些容器环境中运行时:

Docker:

# Docker 默认启用 seccomp,通常兼容
docker run -it --cap-add=SYS_ADMIN easysearch

# 使用自定义 seccomp 配置文件
docker run -it --security-opt seccomp=custom-profile.json easysearch

Kubernetes:

# Pod 配置示例
apiVersion: v1
kind: Pod
spec:
  securityContext:
    seccompProfile:
      type: RuntimeDefault  # 或 Unconfined

验证过滤状态 #

启动日志会显示系统调用过滤的安装状态:

[INFO ][o.e.n.Natives ] installing system call filter

如果安装失败,会显示警告:

[WARN ][o.e.n.Natives ] unable to install system call filter

常见问题 #

问题 1:过滤安装失败

unable to install syscall filter: Operation not permitted

原因:

  • 容器环境未授予足够权限
  • 内核版本过低(需要 3.5+)
  • 安全模块(如 AppArmor、SELinux)限制

解决方案:

  1. 在容器中添加 --cap-add=SYS_ADMIN--privileged
  2. 使用 --security-opt seccomp=unconfined 禁用容器 seccomp
  3. 或在 Easysearch 中设置 bootstrap.system_call_filter: false

问题 2:插件不兼容

某些原生插件可能需要被过滤的系统调用,导致运行失败。

解决方案:

  • 禁用系统调用过滤
  • 或联系插件供应商修复兼容性问题

与其他安全机制的关系 #

安全机制作用层次与系统调用过滤的关系
system_call_filter系统调用级最细粒度的限制
SELinux内核访问控制可协同工作
AppArmor程序访问控制可协同工作
capabilitiesPOSIX 权限需要特定 capability
chroot文件系统隔离独立的防御层次

相关配置项 #

配置项作用默认值
bootstrap.memory_lock内存锁定false
bootstrap.ctrlhandlerWindows 控制台处理器true

注意事项 #

  1. 静态配置:修改此配置需要重启节点
  2. 平台限制:仅在 Linux 系统上生效
  3. 安全权衡:禁用会降低安全性,仅在必要时禁用
  4. 插件兼容:某些原生插件可能需要禁用此配置
  5. 容器环境:确保容器环境支持 seccomp