配置项作用 #
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)限制
解决方案:
- 在容器中添加
--cap-add=SYS_ADMIN或--privileged - 使用
--security-opt seccomp=unconfined禁用容器 seccomp - 或在 Easysearch 中设置
bootstrap.system_call_filter: false
问题 2:插件不兼容
某些原生插件可能需要被过滤的系统调用,导致运行失败。
解决方案:
- 禁用系统调用过滤
- 或联系插件供应商修复兼容性问题
与其他安全机制的关系 #
| 安全机制 | 作用层次 | 与系统调用过滤的关系 |
|---|---|---|
| system_call_filter | 系统调用级 | 最细粒度的限制 |
| SELinux | 内核访问控制 | 可协同工作 |
| AppArmor | 程序访问控制 | 可协同工作 |
| capabilities | POSIX 权限 | 需要特定 capability |
| chroot | 文件系统隔离 | 独立的防御层次 |
相关配置项 #
| 配置项 | 作用 | 默认值 |
|---|---|---|
bootstrap.memory_lock | 内存锁定 | false |
bootstrap.ctrlhandler | Windows 控制台处理器 | true |
注意事项 #
- 静态配置:修改此配置需要重启节点
- 平台限制:仅在 Linux 系统上生效
- 安全权衡:禁用会降低安全性,仅在必要时禁用
- 插件兼容:某些原生插件可能需要禁用此配置
- 容器环境:确保容器环境支持 seccomp





