这是对 Scott Jensen 在 ISC Storm Center 网站上以 BACS 论文形式首次发布的内容及其在 Github 上发布的脚本的一个分支和重大更新。
https://github.com/fkadriver/Dshield-ELK
https://isc.sans.edu/diary/DShield+Sensor+Monitoring+with+a+Docker+ELK+Stack+Guest+Diary/30118
这是一份关于如何使用 DShield-SIEM 进行分析的良好参考:https://isc.sans.edu/diary/30962/
这里概述了如何使用 DShield 传感器进行日志收集。
https://github.com/bruneaug/DShield-SIEM/blob/main/Troubleshooting/DShield-SIEM-Flow.png
这个 docker 是专门为与 DShield 蜜罐 配合使用而定制构建的,用于收集和解析日志并汇总数据,以便于研究目的的搜索。建议的安装方式是将 DShield 传感器安装在运行 PI Raspbian OS 的树莓派上,或安装在运行 Ubuntu 24.04 LTS 的系统上,该系统可以位于你的网络中,也可以位于你选择的云平台上。
注意:按照下面的说明,这必须安装在单独的服务器上。
注意:要更新 ELK 服务器组件,请按照以下步骤操作:
https://github.com/bruneaug/DShield-SIEM/blob/main/README.md#download-github-update
以用户 ($) 账户安装 docker:````
sudo apt-get install ca-certificates curl gnupg network-manager txt2html
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
Note: You may need to take the next line, remove the backlash () and put everythin in a single line in Notepad to run this echo.
echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update && sudo apt upgrade
sudo reboot (if update were applied)
sudo apt-get install -y jq docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin pip
sudo systemctl enable docker
sudo systemctl start docker.service
确认 docker 服务正在运行<br>````
sudo systemctl status docker.service
将以下 ELK 服务器名称 es01 kibana fleet-server heartbeat logstash filebeat filebeat01
添加到 /etc/hosts 中 IP 地址和服务器名称之后:
````
sudo vi /etc/hosts
在 /etc/hosts 中 ELK 服务器 IP 地址之后添加以下内容<br>
127.0.0.1 sensor es01 ...<br>
192.168.25.80 sensor es01 ...<br>````
es01 kibana fleet-server heartbeat logstash filebeat filebeat01
编辑 sysctl.conf 文件:
````
sudo vi /etc/sysctl.conf
将以下内容添加到文件底部:<br>````
vm.max_map_count=262144
添加并保存它。这是在使用 Docker 时用于 Elasticsearch 的。
sudo iptables -nL

# 配置并安装 DShield ELK
使用用户 ($) 账户,运行以下命令:<br>````
git clone https://github.com/bruneaug/DShield-SIEM.git
mkdir scripts
mv DShield-SIEM/AddOnScripts/*.sh scripts
chmod 754 scripts/*.sh
cd ~/DShield-SIEM
注意:安装前,你可以编辑 .env(可用 ls -la 查看)文件来进行任何所需的更改。
- 当前 elastic 的 默认密码 是 student
.env 中的 Memory Limits 是 docker 将为每个 ELK 容器分配的最大内存。
Elasticsearch 默认为 3GB,但如果你的资源充足,可以扩大。
编辑 .env 文件并为自己的 ELK Stack 进行配置
````
vi .env
- 如果需要更改,请更新 **.env** 文件中的以下变量,以匹配您的 ELK 服务器 DNS 信息、主机名、IP 地址和默认 elastic 密码: <br>
- HOSTNAME="ubuntu"
- DNS_SERVER="9.9.9.9"
- IPADDRESS="192.168.25.231"
- ELASTIC_PASSWORD=student
- ES_MEM = Elasticsearch -> 4g, KB_MEM = Kibana -> 2g
- 如果您想更改默认的 nameserver 信息以及目标地址的本地专用网络位置(即 DShield 传感器映射 - 当前设置为 **加拿大渥太华**),请在加载 docker 之前编辑以下目录中的文件:<br>````
cd logstash/pipeline
编辑 heartbeat.yml,将传感器 IP(名为 PI)改为你自己的传感器 IP。Kibana heartbeat 会检查你的服务状态,并判断它们是否可用。
请更新此 IP 和主机名,以反映你的传感器。
注意:如果你有多个传感器需要监控,可以复制并添加同样的 5 行内容。
这可以在 Observability -> Uptime Monitors 中查看。

这一行是传感器 IP 地址。如果它在连接 TCP 12222 时未收到响应,界面会将其标记为停机。
这是由 ELK 服务器发起的,用于检查传感器的响应。
请更新这一行:hosts: ["192.168.25.165"]
````
vi ~/DShield-SIEM/heartbeat/heartbeat.yml
脚本 **change_perms.sh** 将在开始安装 docker 组件之前配置部分文件。<br>
该脚本还会将仪表板查询中使用的 IP 地址更新为你的 ELK 堆栈的 IP。<br>````
~/scripts/change_perms.sh
~/scripts/get_researchers.sh
现在执行 docker compose 来构建 ELK 服务器应用。
这将构建:Kibana、Elasticsearch、elastic-agent、Logstash 并加载 Cowrie 解析器、配置文件和仪表板。
````
sudo docker compose up -d
安装完成
<img width="375" height="354" alt="image" src="https://assets.kitploit.com/production/public/readmes/50066/b192e2cc430ca7eaa43934ebde637400b29d23212dce39e81f521b0806df1bc0.png" />
# 将 ca.crt 添加到服务器受信任证书
- 将 ca.crt 添加到服务器受信任证书列表```
sudo cp /var/lib/docker/volumes/dshield-elk_certs/_data/ca/ca.crt /usr/local/share/ca-certificates/dshield.crt
```
- 更新受信任的证书 ```
sudo update-ca-certificates
```
### 向 Kibana 添加仪表板与 SIEM 签名
这会将 DShield SIEM 仪表板和 SIEM 签名加载到 Kibana 中。<br>```
~/scripts/dashboard-setup.sh
```
### Docker 目录列表
此命令显示在安装了所有 Elasticsearch 组件后正在使用的 docker 目录列表。<br>
随着数据添加到 Elasticsearch,您还可以使用以下命令或在 ELK 中监控可用于存储的磁盘量。<br>````
sudo du --human-readable --max-depth 1 --no-dereference --one-file-system /var/lib/docker
