DShield-ISC/dshield
GitHub: DShield-ISC/dshield
将树莓派或迷你主机转化为 DShield 蜜罐传感器,自动收集并上报攻击日志至 ISC 威胁情报平台。
Stars: 513 | Forks: 89
# DShield
## DShield 传感器
这是一套用于设置 DShield 传感器的脚本。
使用自动安装程序的当前设计目标和前提条件:
- 使用 __专用__ 设备(Raspberry Pi 3 或更高版本、n100 迷你主机或虚拟机均可)
- 至少 1GB 内存和 16GB 磁盘空间(Raspberry Pi 使用 SD 卡)。4GB 内存效果更好。建议使用更大容量的 SD 卡(例如 64 GB),以延长使用寿命并防止日志填满磁盘。
- 当前版本的 Raspberry Pi OS("Lite" 版本即可)或当前版本的 Ubuntu Linux
- 易于安装/配置(因此可配置性不高)
- 一次性使用(当出现问题(例如在升级期间)时:从头重新安装)
- 最小化复杂性和开销(例如,不使用 Docker 等虚拟化技术)
- 仅支持 IPv4(针对内部网络)
- 仅限一个接口(例如 eth0)
当前版本仅在 Raspberry Pi OS(64 位)和 Ubuntu 24.04 LTS Server 上进行了测试,未在其他发行版上测试,抱歉。
如果需要支持其他发行版,必须有“人”来检查和维护安装脚本。
## 安装
请参阅以下文件以获取特定操作系统的安装说明:
[Raspberry Pi OS](docs/install-instructions/Raspbian.md) (推荐),
[Ubuntu](docs/install-instructions/Ubuntu.md),
[openSUSE](docs/install-instructions/openSUSE.md) 和
[AWS](docs/install-instructions/AWS.md)
## 背景:`install.sh`
此脚本将:
- 在 Pi 上禁用 IPv6
- 启用防火墙日志记录并将日志提交给 DShield
- 将 SSH 服务器更改为监听端口 12222
- 安装 SSH 蜜罐 Cowrie(用于 SSH)
- 安装 HTTP 蜜罐("isc_agent")
- 安装所需的环境(Python 软件包,用于 https 的 stunnel 等)
## 故障排除
- 日志每小时向 [dshield 门户](https://www.dshield.org) 发送两次,由 cron 作业 `/etc/cron.d/dshield` 完成,这可以通过 ['My Account' -> 'My Reports'](https://www.dshield.org/myreports.html) 进行验证
- 查看状态脚本的输出:`/srv/dshield/status.sh`
- 如果在安装或更新期间遇到奇怪的 Python 或 pip 相关错误,请以 root 身份尝试以下命令:
`pip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U`
- 请查阅我们的[故障排除指南](https://github.com/DShield-ISC/dshield/blob/main/docs/general-guides/Troubleshooting.md)以帮助识别问题。
## 更新
### 常规更新
在你的 "dshield" 目录(上面运行 `git clone` 时创建的目录)中,运行
```
cd install/dshield
sudo git pull
sudo bin/install.sh --update
```
"--update" 参数将自动使用现有配置,不会提示用户进行任何配置选项设置。
像 API 密钥这样的配置参数将被保留。要编辑配置,请编辑 `/etc/dshield.ini`;要配置防火墙,请编辑 `/etc/network/iptables`(注意:nat 表也会被使用)。
已引入一项新功能,特别是针对自动更新。在安装结束时,install.sh 脚本将搜索文件 /root/bin/postinstall.sh 并执行其内容(如果存在)。如果你需要在新安装的文件中进行一些额外的更改,这就是放置它们的位置。此文件需要执行权限。
请务必保持特殊端口和网络配置的更新(例如,在防火墙配置中手动配置最近添加的 telnet/web 端口),例如 no-log 配置、no-honey 配置等。遗憾的是,目前这无法自动完成。如果不确定,请删除 `/etc/dshield.ini` 中的相应行并重新运行安装脚本。
## 提示
### 如何放置 DShield 传感器/蜜罐
此 DShield 传感器和蜜罐旨在仅分析与 Internet 相关的流量,即来自公网 IP 地址的流量:
- 这是由于 DShield 项目的工作方式(收集有关 Internet 当前状态的信息)
- 只有这样才能收集到 Internet 安全社区感兴趣的信息
- 只有这样才能确保不会从你的 Pi 向 DShield 泄露内部的、非公开的信息
因此,你必须将 Pi 放置在一个可以暴露给 Internet 的网络上(并且除了管理任务外,不会从内部网络连接到它)。为了获得最大的传感器效益,希望 Pi 能暴露给 Internet 路由到公网 IP 的所有流量(而不仅仅是选定的端口)。
对于 SoHo 用户,DSL 或电缆路由器中通常有一个选项,可以将路由器使用的公网 IP(即由 ISP 分配的)的所有流量定向到一个内部 IP。这必须是 Pi 的 IP。此功能例如命名为 "exposed host"、"DMZ"(在这里你可能需要启用进一步的配置,以确保 ___所有___ 流量都被路由到 Pi 的内部 IP 地址,而不仅仅是例如 80 端口)。
对于企业用户,受保护的 DMZ 将是一个合适的位置(受保护是指:如果传感器/蜜罐被黑客攻击,该事件会被隔离,不会影响 DMZ 中的其他主机)。请注意,如果使用静态 IP,你暴露给 DShield 项目和社区的针对你 IP 的攻击/扫描可以通过 whois 追踪到你的公司。
要测试你的设置,你可以使用公共端口扫描器并将其指向路由器的公网 IP(然后在内部转发给 Pi)。此端口扫描应直接在 `/var/log/dshield.log` 中可见,随后也可通过你的 DShield 帐户访问的在线报告中看到。请仅用于快速和有限的测试目的,以免 DShield 数据失真。
### 表单导航
- RETURN:提交表单 (OK)
- ESC:退出表单 (Cancel)
- cursor up / down:在表单/输入字段之间导航
- cursor left / right:在输入字段内导航
- TAB:在输入字段和“按钮”之间切换
- 不要使用 Pos 1 / End
## 待办事项
- 见 `install.sh` 中的注释
- 提供一个脚本以使用 pip 将所有 Python 包更新到最新版本
- 配置默认 Web 服务器并将日志提交给 DShield
- 启用 ssh 以外的其他蜜罐端口
- 将所有用户输入工作放在脚本的开头,以便之后运行耗时的任务
- 创建更新脚本
- 将工具(例如 `status.sh`)移动到 `/srv` 目录结构中
- 许多其他内容 :)
## 更新日志
- 见 install.sh 中的注释
- 见 GIT commit 注释
## 开发实例 - web.py 和 sitecopy.py
sitecopy.py 将复制任何站点,并使用 web.py 脚本提供该站点服务,只需使用:
```
python sitecopy.py http://www.yoursite.com
```
- 目前它不会更改链接 - 待办
- 任何发布的数据或用户请求字符串将被记录到 DB\webserver.sqlite
web.py - 不需要运行 sitecopy,但它将提供一个非常基础的页面,可以接受输入和文件。
待办:
- 需要弄清楚如何提供有漏洞的页面 - 可能通过路径
- SQL 注入 - 可能会使用一个单独的 dorked 数据库
- 希望与 cowrie 集成以应对 shell 攻击 - (BHAG)
欢迎任何输入 - 请通过 github 提交错误报告/问题 - 谢谢!
Slack 群组邀请链接:https://www.dshield.org/slack/
标签:Beacon Object File, CISA项目, Cobalt Strike, DShield, HTTP蜜罐, Ipv6禁用, IP 地址批量处理, ISC, Kippo, Linux运维, PE 加载器, SSH蜜罐, 传感器, 威胁情报, 安全脚本, 开发者工具, 攻击溯源, 攻击诱捕, 树莓派项目, 物联网安全, 特权提升, 网络安全, 自动化部署, 蜜标, 蜜罐, 证书利用, 进程注入, 逆向工具, 防火墙日志, 隐私保护