telekom-security/tpotce
GitHub: telekom-security/tpotce
德国电信开源的多合一蜜罐平台,集成20多种蜜罐和Elastic Stack可视化,支持分布式部署和多架构环境。
Stars: 8808 | Forks: 1333
# T-Pot - 多合一蜜罐平台

T-Pot 是一个多合一、可选分布式、多架构(amd64, arm64)的蜜罐平台,支持 20 多种蜜罐,并通过 Elastic Stack 提供无数的可视化选项、动态实时攻击地图以及许多安全工具,以进一步提升欺骗体验。
# 太长不看版 (TL;DR) 1. 查看 [system requirements](#system-requirements)。T-Pot 安装至少需要 8-16 GB RAM、128 GB 可用磁盘空间以及一个正常(出站非过滤)的互联网连接。 2. [Download](#choose-your-distro) 或使用一个正在运行的、受支持的发行版。 3. 以尽可能少的包/服务安装 ISO(需要 `ssh`)。 4. 如果尚未安装,请安装 `curl`:`$ sudo [apt, dnf, zypper] install curl` 5. 从 `$HOME` 以非 root 用户身份运行安装程序: ``` env bash -c "$(curl -sL https://github.com/telekom-security/tpotce/raw/master/install.sh)" ``` * 按照说明操作,阅读消息,检查可能的端口冲突并重启 - [T-Pot - The All In One Multi Honeypot Platform](#t-pot---the-all-in-one-multi-honeypot-platform) - [TL;DR](#tldr) - [Disclaimer](#disclaimer) - [Technical Concept](#technical-concept) - [Honeypots and Tools](#honeypots-and-tools) - [Technical Architecture](#technical-architecture) - [Services](#services) - [User Types](#user-types) - [System Requirements](#system-requirements) - [Running in a VM](#running-in-a-vm) - [Running on Hardware](#running-on-hardware) - [Running in a Cloud](#running-in-a-cloud) - [Required Ports](#required-ports) - [LLM-Based Honeypots](#llm-based-honeypots) - [Ollama](#ollama) - [ChatGPT](#chatgpt) - [System Placement](#system-placement) - [Installation](#installation) - [Choose your distro](#choose-your-distro) - [Raspberry Pi 4 (8GB) Support](#raspberry-pi-4-8gb-support) - [Get and install T-Pot](#get-and-install-t-pot) - [macOS \& Windows](#macos--windows) - [Red Hat Enterprise Linux](#red-hat-enterprise-linux) - [Installation Types](#installation-types) - [Standard / Hive](#standard--hive) - [Distributed](#distributed) - [Uninstall T-Pot](#uninstall-t-pot) - [First Start](#first-start) - [Standalone First Start](#standalone-first-start) - [Distributed Deployment](#distributed-deployment) - [Planning and Certificates](#planning-and-certificates) - [Deploying Sensors](#deploying-sensors) - [Removing Sensors](#removing-sensors) - [Community Data Submission](#community-data-submission) - [Opt-In HPFEEDS Data Submission](#opt-in-hpfeeds-data-submission) - [Remote Access and Tools](#remote-access-and-tools) - [SSH](#ssh) - [T-Pot Landing Page](#t-pot-landing-page) - [Kibana Dashboard](#kibana-dashboard) - [Attack Map](#attack-map) - [Cyberchef](#cyberchef) - [Elasticvue](#elasticvue) - [Spiderfoot](#spiderfoot) - [Configuration](#configuration) - [T-Pot Config File](#t-pot-config-file) - [Customize T-Pot Honeypots and Services](#customize-t-pot-honeypots-and-services) - [Maintenance](#maintenance) - [General Updates](#general-updates) - [Update Script](#update-script) - [Daily Reboot](#daily-reboot) - [Known Issues](#known-issues) - [Docker Images Fail to Download](#docker-images-fail-to-download) - [T-Pot Networking Fails](#t-pot-networking-fails) - [Start T-Pot](#start-t-pot) - [Stop T-Pot](#stop-t-pot) - [T-Pot Data Folder](#t-pot-data-folder) - [Log Persistence](#log-persistence) - [Factory Reset](#factory-reset) - [Show Containers](#show-containers) - [Blackhole](#blackhole) - [Add Users to Nginx (T-Pot WebUI)](#add-users-to-nginx-t-pot-webui) - [Import and Export Kibana Objects](#import-and-export-kibana-objects) - [Export](#export) - [Import](#import) - [Troubleshooting](#troubleshooting) - [Logs](#logs) - [RAM and Storage](#ram-and-storage) - [Contact](#contact) - [Issues](#issues) - [Discussions](#discussions) - [Licenses](#licenses) - [Credits](#credits) - [The developers and development communities of](#the-developers-and-development-communities-of) - [**The following companies and organizations**](#the-following-companies-and-organizations) - [**And of course ***YOU*** for joining the community!**](#and-of-course-you-for-joining-the-community) - [Testimonials](#testimonials) - [Thank you 💖](#thank-you-)
# 免责声明 - 您需要在责任范围内安装和运行 T-Pot。请明智地选择部署方式,因为无法完全排除系统被入侵的可能性。 - 如需快速帮助,请研究 [Issues](https://github.com/telekom-security/tpotce/issues) 和 [Discussions](https://github.com/telekom-security/tpotce/discussions)。 - 该软件的设计和提供基于尽力而为的原则。作为一个社区和开源项目,它使用了许多其他开源软件,可能包含错误和问题。请负责任地报告。 - 蜜罐——根据设计——不应托管任何敏感数据。请确保不要添加任何敏感数据。 - 默认情况下,您的数据会提交到 [Sicherheitstacho](https://www.sicherheitstacho.eu/start/main)。您可以在配置(`~/tpotce/docker-compose.yml`)中通过 [removing](#community-data-submission) `ewsposter` 部分来禁用此功能。但在这种情况下,分享真的是一种关爱!
# 技术概念 T-Pot 的主要组件已移至 `tpotinit` Docker 镜像中,允许 T-Pot 现在支持多种 Linux 发行版,甚至 macOS 和 Windows(尽管两者都受限于 Docker Desktop 的功能集)。T-Pot 使用 [docker](https://www.docker.com/) 和 [docker compose](https://docs.docker.com/compose/) 来实现其目标,即尽可能同时运行最多的蜜罐和工具,从而最大限度地利用主机硬件。
## 蜜罐和工具 - T-Pot 为以下蜜罐提供 Docker 镜像:
[adbhoney](https://github.com/huuck/ADBHoney), [beelzebub](https://github.com/mariocandela/beelzebub), [ciscoasa](https://github.com/Cymmetria/ciscoasa_honeypot), [citrixhoneypot](https://github.com/MalwareTech/CitrixHoneypot), [conpot](http://conpot.org/), [cowrie](https://github.com/cowrie/cowrie), [ddospot](https://github.com/aelth/ddospot), [dicompot](https://github.com/nsmfoo/dicompot), [dionaea](https://github.com/DinoTools/dionaea), [elasticpot](https://gitlab.com/bontchev/elasticpot), [endlessh](https://github.com/skeeto/endlessh), [galah](https://github.com/0x4D31/galah), [go-pot](https://github.com/ryanolee/go-pot), [glutton](https://github.com/mushorg/glutton), [h0neytr4p](https://github.com/pbssubhash/h0neytr4p), [hellpot](https://github.com/yunginnanet/HellPot), [heralding](https://github.com/johnnykv/heralding), [honeyaml](https://github.com/mmta/honeyaml), [honeypots](https://github.com/qeeqbox/honeypots), [honeytrap](https://github.com/armedpot/honeytrap/), [ipphoney](https://gitlab.com/bontchev/ipphoney), [log4pot](https://github.com/thomaspatzke/Log4Pot), [mailoney](https://github.com/awhitehatter/mailoney), [medpot](https://github.com/schmalle/medpot), [miniprint](https://github.com/sa7mon/miniprint), [redishoneypot](https://github.com/cypwnpwnsocute/RedisHoneyPot), [sentrypeer](https://github.com/SentryPeer/SentryPeer), [snare](http://mushmush.org/), [tanner](http://mushmush.org/), [wordpot](https://github.com/gbrindisi/wordpot) 以及以下工具: * [Autoheal](https://github.com/willfarrell/docker-autoheal) 一种自动重启健康检查失败容器的工具。 * [Cyberchef](https://gchq.github.io/CyberChef/) 一个用于加密、编码、压缩和数据分析的 Web 应用。 * [Elastic Stack](https://www.elastic.co/videos) 用于精美地可视化 T-Pot 捕获的所有事件。 * [Elasticvue](https://github.com/cars10/elasticvue/) 一个用于浏览 Elasticsearch 集群并进行交互的 Web 前端。 * [Fatt](https://github.com/0x4D31/fatt) 一个基于 pyshark 的脚本,用于从 pcap 文件和实时网络流量中提取网络元数据和指纹。 * [T-Pot-Attack-Map](https://github.com/t3chn0m4g3/t-pot-attack-map) 一个为 T-Pot 提供精美动画的攻击地图。 * [P0f](https://lcamtuf.coredump.cx/p0f3/) 是一个用于纯被动流量指纹识别的工具。 * [Spiderfoot](https://github.com/smicallef/spiderfoot) 一个开源情报自动化工具。 * [Suricata](https://suricata.io/) 一个网络安全监控引擎。 ... 旨在为您提供尽可能最好的开箱即用体验和易于使用的多蜜罐系统。
## 技术架构  源代码和配置文件完全存储在 T-Pot GitHub 存储库中。Docker 镜像是为 T-Pot 环境构建和预配置的。 各个 Dockerfile 和配置位于 [docker folder](https://github.com/telekom-security/tpotce/tree/master/docker)。
## 服务 T-Pot 提供多项服务,这些服务主要分为五组: 1. 操作系统提供的系统服务 * SSH 用于安全的远程访问。 2. Elastic Stack * Elasticsearch 用于存储事件。 * Logstash 用于摄取、接收事件并将其发送到 Elasticsearch。 * Kibana 用于在精美呈现的仪表板上显示事件。 3. 工具 * NGINX 提供对 Kibana、CyberChef、Elasticvue、GeoIP Attack Map、Spiderfoot 的安全远程访问(反向代理),并允许 T-Pot 传感器安全地将事件数据传输到 T-Pot Hive。 * CyberChef 一个用于加密、编码、压缩和数据分析的 Web 应用。 * Elasticvue 一个用于浏览 Elasticsearch 集群并进行交互的 Web 前端。 * T-Pot Attack Map 一个为 T-Pot 提供精美动画的攻击地图。 * Spiderfoot 一个开源情报自动化工具。 4. 蜜罐 * 基所选 `docker-compose.yml` 的 23 个可用蜜罐中的精选。 5. 网络安全监控 (NSM) * Fatt 一个基于 pyshark 的脚本,用于从 pcap 文件和实时网络流量中提取网络元数据和指纹。 * P0f 是一个用于纯被动流量指纹识别的工具。 * Suricata 一个网络安全监控引擎。
## 用户类型 在安装和使用 T-Pot 期间,您将使用两种不同类型的帐户。请确保了解不同帐户类型之间的区别,因为这是导致身份验证错误的最常见原因。 | 服务 | 帐户类型 | 用户名 / 组 | 描述 | |:-----------------|:-------------|:------------------|:-----------------------------------------------------------------| | SSH | OS | `` | 您在安装操作系统期间选择的用户。 |
| Nginx | BasicAuth | `` | 您在安装 T-Pot 期间选择的 ``。 |
| CyberChef | BasicAuth | `` | 您在安装 T-Pot 期间选择的 ``。 |
| Elasticvue | BasicAuth | `` | 您在安装 T-Pot 期间选择的 ``。 |
| Geoip Attack Map | BasicAuth | `` | 您在安装 T-Pot 期间选择的 ``。 |
| Spiderfoot | BasicAuth | `` | 您在安装 T-Pot 期间选择的 ``。 |
| T-Pot | OS | `tpot` | `tpot` 此用户/组始终由 T-Pot 服务保留。 |
| T-Pot Logs | BasicAuth | `` | `LS_WEB_USER` 自动管理。 |
# 系统要求 根据 [supported Linux distro images](#choose-your-distro)、Hive / Sensor、安装在 [real hardware](#running-on-hardware)、在 [virtual machine](#running-in-a-vm) 或其他环境中,成功安装 T-Pot 对操作系统、RAM、存储和网络有不同的要求(您始终可以根据需要调整 `~/tpotce/docker-compose.yml` 和 `~/tpotce/.env` 以满足这些要求)。
| T-Pot 类型 | RAM | 存储 | 描述 | |:-----------|:------|:----------|:---------------------------------------------------------------------------------------------| | Hive | 16GB | 256GB SSD | 根据经验,蜜罐、传感器和数据越多,所需的 RAM 和存储空间就越多。 | | Sensor | 8GB | 128GB SSD | 由于蜜罐日志会持久化 (~/tpotce/data) 30 天,存储空间取决于攻击量。 | T-Pot 确实需要 ... - 通过 DHCP 分配或静态分配的 IPv4 地址 - 正常的、非代理的互联网连接 ... 才能成功安装和运行。
*如果您需要代理支持或其他非标准功能,您应该查看 [supported Linux distro images](#choose-your-distro) 和/或 [Docker documentation](https://docs.docker.com/) 的文档。*
## 在虚拟机中运行 所有 [supported Linux distro images](#choose-your-distro) 都可以在虚拟机中运行,这意味着 T-Pot 也可以正常运行。以下已测试/报告可工作: * [UTM (Intel & Apple Silicon)](https://mac.getutm.app/) * [VirtualBox](https://www.virtualbox.org/) * [VMWare Fusion](https://www.vmware.com/products/fusion/fusion-evaluation.html) 和 [VMWare Workstation](https://www.vmware.com/products/workstation-pro.html) * 据报告 KVM 也可工作。 ***一些配置/设置提示:*** - 虽然 Intel 版本运行稳定,但 Apple Silicon (arm64) 支持存在已知问题,在 UTM 中可能需要在初始安装操作系统期间将 `Display` 切换为 `Console Only`,之后切回 `Full Graphics`。 - 在配置期间,您可能需要为网络接口启用混杂模式,以便 fatt、suricata 和 p0f 正常工作。 - 如果您想使用 wifi 卡作为 T-Pot 的主 NIC,请注意并非所有网络接口驱动程序都支持所有无线网卡。例如在 VirtualBox 中,您必须选择 NIC 的 *"MT SERVER"* 模型。
## 在硬件上运行 T-Pot 仅受 [supported Linux distro images](#choose-your-distro) 的硬件支持限制。建议在投资专用硬件之前检查 HCL(硬件兼容性列表)并使用 T-Pot 测试受支持的发行版。
## 在云端运行 T-Pot 已在以下平台测试并已知可运行 ... * Telekom OTC 使用 post install 方法 ... 其他平台可能可行,但未经测试。 一些用户报告在其他云和托管商(即 Azure 和 GCP)上有可工作的安装。硬件要求可能不同。如果您不确定,应该研究 [issues](https://github.com/telekom-security/tpotce/issues) 和 [discussions](https://github.com/telekom-security/tpotce/discussions) 并运行一些功能测试。从 T-Pot 24.04.0 开始,我们确保删除了已知会干扰基于云的安装的设置。
## 必需端口 除了操作系统通常需要的端口(即获取 DHCP 租约、DNS 等)外,T-Pot 还需要以下端口用于传入/传出连接。查看 [T-Pot Architecture](#technical-architecture) 以获取可视化表示。此外,某些端口会显示为重复,这没问题,因为它们用于不同的版本。 | 端口 | 协议 | 方向 | 描述 | |:--------------------------------------------------------------------------------------------------------------------------------------|:--------|:---------|:----------------------------------------------------------------------------------------------------| | 80, 443 | tcp | 传出 | T-Pot 管理:安装、更新、日志(即 OS、GitHub、DockerHub、Sicherheitstacho 等) | | 11434 | tcp | 传出 | 基于 LLM 的蜜罐:访问您的 Ollama 安装 | | 64294 | tcp | 传入 | T-Pot 管理:传感器数据传输到 hive(通过 NGINX 反向代理)到 127.0.0.1:64305 | | 64295 | tcp | 传入 | T-Pot 管理:访问 SSH | | 64297 | tcp | 传入 | T-Pot 管理访问 NGINX 反向代理 | | 5555 | tcp | 传入 | 蜜罐:ADBHoney | | 22 | tcp | 传入 | 蜜罐:Beelzebub(需要 LLM) | | 5000 | udp | 传入 | 蜜罐:CiscoASA | | 8443 | tcp | 传入 | 蜜罐:CiscoASA | | 443 | tcp | 传入 | 蜜罐:CitrixHoneypot | | 80, 102, 502, 1025, 2404, 10001, 44818, 47808, 50100 | tcp | 传入 | 蜜罐:Conpot | | 161, 623 | udp | 传入 | 蜜罐:Conpot | | 22, 23 | tcp | 传入 | 蜜罐:Cowrie | | 19, 53, 123, 1900 | udp | 传入 | 蜜罐:Ddospot | | 11112 | tcp | 传入 |蜜罐:Dicompot | | 21, 42, 135, 443, 445, 1433, 1723, 1883, 3306, 8081 | tcp | 传入 | 蜜罐:Dionaea | | 69 | udp | 传入 | 蜜罐:Dionaea | | 9200 | tcp | 传入 | 蜜罐:Elasticpot | | 22 | tcp | 传入 | 蜜罐:Endlessh | | 80, 443, 8080, 8443 | tcp | 传入 | 蜜罐:Galah(需要 LLM) | | 8080 | tcp | 传入 | 蜜罐:Go-pot | | 80, 443 | tcp | 传入 | 蜜罐:H0neytr4p | | 21, 22, 23, 25, 80, 110, 143, 443, 993, 995, 1080, 5432, 5900 | tcp | 传入 | 蜜罐:Heralding | | 3000 | tcp | 传入 | 蜜罐:Honeyaml | | 21, 22, 23, 25, 80, 110, 143, 389, 443, 445, 631, 1080, 1433, 1521, 3306, 3389, 5060, 5432, 5900, 6379, 6667, 8080, 9100, 9200, 11211 | tcp | 传入 | 蜜罐:qHoneypots | | 53, 123, 161, 5060 | udp | 传入 | 蜜罐:qHoneypots | | 631 | tcp | 传入 | 蜜罐:IPPHoney | | 80, 443, 8080, 9200, 25565 | tcp | 传入 | 蜜罐:Log4Pot | | 25 | tcp | 传入 | 蜜罐:Mailoney | | 2575 | tcp | 传入 | 蜜罐:Medpot | | 9100 | tcp | 传入 | 蜜罐:Miniprint | | 6379 | tcp | 传入 | 蜜罐:Redishoneypot | | 5060 | tcp/udp | 传入 | 蜜罐:SentryPeer | | 80 | tcp | 传入 | 蜜罐:Snare (Tanner) | | 8090 | tcp | 传入 | 蜜罐:Wordpot | 端口和 SaaS 服务的可用性可能因您的地理位置而异。 对于某些蜜罐要达到完整功能(即 Cowrie 或 Log4Pot),也需要传出连接,以便它们下载攻击者的恶意软件。请参阅各个蜜罐的文档以了解更多信息,方法是通过 [links](#technical-concept) 访问其存储库。 ## 基于 LLM 的蜜罐 我们认为基于 LLM 的蜜罐标志着欺骗/蜜罐领域游戏规则改变的**开始**。因此,从 **T-Pot 24.04.1** 版本开始,引入了两个基于 LLM 的蜜罐:**Beelzebub** 和 **Galah**。这些蜜罐需要安装 **Ollama**,并需要在 [T-Pot configuration file](#t-pot-config-file) 中进行配置。您也可以在此文件中调整 **ChatGPT** 支持的设置,但请注意,还需要在 docker compose 文件(`~/tpotce/compose/llm.yml`)中进行更改以适应这些调整。
请通过 [Honeypots and Tools](#honeypots-and-tools) 部分的链接了解有关 **Beelzebub** 和 **Galah** 的更多信息。 ### Ollama 🚨 **不建议使用 CPU**,即使是用于测试。
要设置和运行 **Ollama**,请参阅 [Ollama GitHub repository](https://github.com/ollama/ollama) 获取说明。对于入门级或测试目的,可以使用 **Nvidia RTX 4060 Ti 16GB** 或同等配置(Ollama 也支持 AMD 的 ROCm),配合 **openchat** 和 **Llama3** 等模型实现。作为基于 LLM 的系统的一般规则,您使用的硬件越好、越多,结果就越快、越准确,尤其是当任务被卸载到多个 GPU 和更大的模型时。 ### ChatGPT 这些蜜罐的 ChatGPT 支持在 T-Pot 相关方面将保持未经测试状态。
# 系统放置 建议在开始向互联网暴露之前,先让自己熟悉 T-Pot 和蜜罐的工作原理。为了快速入门,请在虚拟机中运行 T-Pot 安装。
一旦您熟悉了工作原理,您应该选择一个您怀疑有入侵者或来自入侵者的网络(即互联网)。否则 T-Pot 很可能不会捕获任何攻击(除非您想证明一个观点)!对于初学者,建议将 T-Pot 放置在一个未过滤的区域,将所有 TCP 和 UDP 流量转发到 T-Pot 的网络接口。为了避免探测 T-Pot 的管理端口,您应该将 T-Pot 放置在防火墙后面,并将 1-64000 端口范围内的所有 TCP/UDP 流量转发到 T-Pot,同时仅允许来自受信任 IP 的 > 64000 端口访问,和/或仅公开与您的用例相关的 [ports](#required-ports)。如果您希望在未知端口上捕获恶意软件流量,则不应限制转发的端口,因为 glutton 和 honeytrap 会动态绑定未被其他蜜罐守护进程占用的任何 TCP 端口,从而更好地呈现您的设置所面临的风险。
# 安装 [Download](#choose-your-distro) [supported Linux distro images](#choose-your-distro) 中的一个,按照 [TL;DR](#tldr) 说明操作或 `git clone` T-Pot 存储库并运行安装程序 `~/tpotce/install.sh`。在正在运行的受支持 Linux 系统上运行 T-Pot 是可能的,但建议进行全新安装以避免与正在运行的服务发生端口冲突。T-Pot 安装程序需要直接访问互联网,如 [here](#required-ports) 所述。
## 选择您的发行版 **遵循的步骤:** 1. 从下方列表中下载受支持的 Linux 发行版。(注意:Red Hat Enterprise Linux >= 8 受支持,但由于其基于订阅的性质,在下方列表中省略。有关详细信息,请参阅 [Red Hat Enterprise Linux](#red-hat-enterprise-linux))。 2. 在安装过程中选择 **minimum**、**netinstall** 或 **server** 版本,仅安装必要的软件包。 3. **切勿**安装图形桌面环境,如 Gnome 或 KDE。由于端口冲突,T-Pot 将无法与其一起工作。 4. 确保安装 SSH,以便您可以远程连接到机器| 发行版名称 | x64 | arm64 | |:---------------------------------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------| | [Alma Linux OS 9.x Minimal ISO](https://almalinux.org) | [download](https://repo.almalinux.org/almalinux/9.7/isos/x86_64/AlmaLinux-9.7-x86_64-minimal.iso) | [download](https://repo.almalinux.org/almalinux/9.7/isos/aarch64/AlmaLinux-9.7-aarch64-minimal.iso) | | [Debian 13 Network Install](https://www.debian.org/CD/netinst/index.en.html) | [download](https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-13.3.0-amd64-netinst.iso) | [download](https://cdimage.debian.org/debian-cd/current/arm64/iso-cd/debian-13.3.0-arm64-netinst.iso) | | [Fedora Server 42 Network Install](https://fedoraproject.org/server/download) | [download](https://download.fedoraproject.org/pub/fedora/linux/releases/42/Server/x86_64/iso/Fedora-Server-netinst-x86_64-42-1.1.iso) | [download](https://download.fedoraproject.org/pub/fedora/linux/releases/42/Server/aarch64/iso/Fedora-Server-netinst-aarch64-42-1.1.iso) | | [OpenSuse Tumbleweed Network Image](https://get.opensuse.org/tumbleweed/#download) | [download](https://download.opensuse.org/tumbleweed/iso/openSUSE-Tumbleweed-NET-x86_64-Current.iso) | [download](https://download.opensuse.org/ports/aarch64/tumbleweed/iso/openSUSE-Tumbleweed-NET-aarch64-Current.iso) | | [Rocky Linux OS 9.x Minimal ISO](https://rockylinux.org/download) | [download](https://download.rockylinux.org/pub/rocky/9/isos/x86_64/Rocky-9.7-x86_64-minimal.iso) | [download](https://download.rockylinux.org/pub/rocky/9/isos/aarch64/Rocky-9.7-aarch64-minimal.iso) | | [Ubuntu 24.04.x Live Server](https://ubuntu.com/download/server) | [download](https://releases.ubuntu.com/24.04/ubuntu-24.04.3-live-server-amd64.iso) | [download](https://cdimage.ubuntu.com/releases/24.04/release/ubuntu-24.04.3-live-server-arm64.iso) |
## Raspberry Pi 4 (8GB) 支持 | 发行版名称 | arm64 | |:----------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------| | [Raspberry Pi OS (**64Bit, Lite**)](https://www.raspberrypi.com) | [download](https://downloads.raspberrypi.com/raspios_lite_arm64/images/raspios_lite_arm64-2024-03-15/2024-03-15-raspios-bookworm-arm64-lite.img.xz) |
## 获取并安装 T-Pot 1. 克隆 GitHub 存储库:`$ git clone https://github.com/telekom-security/tpotce` 或按照 [TL;DR](#tldr) 操作并跳过此部分。 2. 进入 **tpotce/** 文件夹:`$ cd tpotce` 3. 以非 root 用户身份运行安装程序:`$ ./install.sh`: * ⚠️ ***根据您选择的 Linux 发行版,安装程序将:*** * 将 SSH 端口更改为 `tcp/64295` * 禁用 DNS Stub Listener 以避免与蜜罐发生端口冲突 * 将 SELinux 设置为监控模式 * 将公共区域的防火墙目标设置为 ACCEPT * 添加 Docker 的存储库并安装 Docker * 安装推荐的软件包 * 删除已知会导致问题的软件包 * 将当前用户添加到 docker 组(允许在没有 `sudo` 的情况下与 docker 交互) * 添加 `dps` 和 `dpsw` 别名(`grc docker ps -a`,`watch -c "grc --colour=on docker ps -a"`) * 添加 `la`、`ll` 和 `ls` 别名(用于 `exa`,一个改进的 `ls` 命令) * 添加 `mi`(用于 `micro`,一个很好的 `vi` 和/或 `nano` 替代品) * 显示主机上的开放端口(与 T-Pot [required](https://github.com/telekom-security/tpotce#required-ports) 端口进行比较) * 将 `tpot.service` 添加并启用到 `/etc/systemd/system`,以便 T-Pot 可以自动启动和停止 4. 按照安装程序说明操作,您必须至少输入一次您的用户(`sudo` 或 `root`)密码 5. 检查安装程序消息中是否存在错误和可能导致端口冲突的开放端口 6. 重启:`$ sudo reboot`
## macOS 和 Windows 有时在 macOS 或 Windows 上启动 T-Pot 实例很不错,例如用于开发、测试或仅仅是为了好玩。由于 Docker Desktop 相当有限,并非所有蜜罐类型或 T-Pot 功能都受支持。另请注意,默认情况下,macOS 和 Windows 防火墙会阻止远程访问,因此测试仅限于主机。对于生产环境,建议在 [Linux](#choose-your-distro) 上运行 T-Pot。
要启动并运行,只需按照以下步骤操作: 1. 为 [macOS](https://docs.docker.com/desktop/install/mac-install/) 或 [Windows](https://docs.docker.com/desktop/install/windows-install/) 安装 Docker Desktop。 2. 克隆 GitHub 存储库:`git clone https://github.com/telekom-security/tpotce`(在 Windows 中,确保代码以 `LF` 而不是 `CRLF` 签出!) 3. 转到:`cd ~/tpotce` 4. 复制 `cp compose/mac_win.yml ./docker-compose.yml` 5. 通过运行 `~/tpotce/genuser.sh` (macOS) 或 `~/tpotce/genuserwin.ps1` (Windows) 创建一个 `WEB_USER` 6. 通过将 `TPOT_OSTYPE=linux` 更改为 `mac` 或 `win` 来调整 `.env` 文件: # OSType (linux, mac, win) # 大多数 Docker 功能在 Linux 上可用 TPOT_OSTYPE=mac 7. 您必须自行确保没有端口冲突阻止 T-Pot 启动。 8. 启动 T-Pot:`docker compose up` 或 `docker compose up -d`(如果您希望 T-Pot 在后台运行)。 9. 停止 T-Pot:`CTRL-C`(如果它在前台运行)和/或 `docker compose down -v` 以完全停止 T-Pot。 ## 红帽企业 Linux Red Hat Enterprise Linux (RHEL) 是一个有些独特的情况,因为: 1. 与 Red Hat 存储库的连接取决于 Red Hat 订阅。如果目标机器未订阅,您将无法更新操作系统或安装新软件包。**如果您的服务器未附加到 Red Hat 订阅,安装将失败!** 2. Ansible 由安装程序从 RHEL 特定的存储库安装。不要尝试从上游存储库安装它。 3. Docker 从 EPEL 安装,EPEL 由安装程序脚本安装。不要尝试从社区安装程序脚本安装它。 4. T-Pot 只能在 RHEL >= 8 上成功安装。其中一个便利依赖项(`grc`)依赖于 Python 2,而 Python 2 在 RHEL 7 之后被移除。它在 T-Pot 的 RHEL 安装中被省略。 ## 安装类型 ### 标准 / Hive 使用 T-Pot Standard / Hive,所有服务、工具、蜜罐等都将安装到单个主机上,该主机也充当 Hive 端点。确保满足 [system requirements](#system-requirements)。您可以根据您的个人用例调整 `~/tpotce/docker-compose.yml`,或使用 `~/tpotce/compose/customizer.py` 创建您自己的配置,以获得量身定制的 T-Pot 体验。 安装完成后,您可以继续进行 [First Start](#first-start)。
### 分布式 T-Pot 的分布式版本至少需要两台主机 - T-Pot **Hive**,T-Pot 的标准安装(首先安装这个!), - 和一个 T-Pot **Sensor**,它将仅托管蜜罐、一些工具并将日志数据传输到 **Hive**。 - **Sensor** 在完成 [Distributed Deployment](#distributed-deployment) 中描述的 **Sensor** 安装之前不会启动。
## 卸载 T-Pot T-Pot 的卸载仅在 [supported Linux distros](#choose-your-distro) 上可用。
要卸载 T-Pot,请运行 `~/tpotce/uninstall.sh` 并按照卸载程序说明操作,您必须至少输入一次您的密码。
卸载完成后重启机器 `sudo reboot`
# 首次启动 一旦 T-Pot 安装程序成功完成,系统需要重启(`sudo reboot`)。重启后,您可以使用安装系统期间设置的用户登录系统。登录根据 [User Types](#user-types) 进行: - 用户:**[``]**
- 密码:**[password]**
您可以通过 SSH 登录以访问命令行:`ssh -l -p 64295 `:
- 用户:**[``]**
- 密码:**[password, 建议使用 ssh 密钥]**
您也可以从浏览器登录并访问 T-P WebUI 和工具:`https://:64297`
- 用户:**[``]**
- 密码:**[password]**
## 独立版首次启动 除了登录并通过 `dps` 检查所有服务和蜜罐是否正确启动,以及登录 Kibana 和/或 Geoip Attack Map 监控攻击外,没有太多其他事情可做。
## 分布式部署 ### 规划和证书 分布式部署涉及规划,因为 **T-Pot Init** 仅为 **Hive** 主机的 IP 创建自签名证书,这通常适用于简单的设置。由于 **logstash** 在连接时会检查有效证书,因此涉及 **Hive** 在多个 IP(即 RFC 1918 和公共 NAT IP)上可访问,甚至可能包含域名的分布式设置将导致连接错误,证书无法验证,因为此类设置需要具有通用名和 SAN(主题备用名称)的证书。
在部署任何传感器之前,请确保您已正确规划域名和 IP,以避免证书问题。有关更多详细信息,请参阅 [issue #1543](https://github.com/telekom-security/tpotce/issues/1543)。
根据您的 IP/域名设置调整示例,并按照命令更改 **Hive** 的证书: ``` sudo systemctl stop tpot sudo openssl req \ -nodes \ -x509 \ -sha512 \ -newkey rsa:8192 \ -keyout "$HOME/tpotce/data/nginx/cert/nginx.key" \ -out "$HOME/tpotce/data/nginx/cert/nginx.crt" \ -days 3650 \ -subj '/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd' \ -addext "subjectAltName = IP:192.168.1.200, IP:1.2.3.4, DNS:my.primary.domain, DNS:my.secondary.domain" sudo chmod 774 $HOME/tpotce/data/nginx/cert/* sudo chown tpot:tpot $HOME/tpotce/data/nginx/cert/* sudo systemctl start tpot ``` T-Pot 配置文件(`.env`)允许通过设置 `LS_SSL_VERIFICATION=none` 来禁用从 **Sensor** 到 **Hive** 的 logstash 连接的 SSL 验证。出于安全原因,这仅建议用于实验室或测试环境。
如果您选择使用由 CA(即 Let's Encrypt)签名的 **Hive** 有效证书,logstash 以及 **Sensor** 应该可以毫无问题地连接并将其日志传输到 **Hive**。 ### 部署传感器 按照安装程序的指示重启 **Sensor** 后,您可以通过登录 **Hive** 并转到 `cd ~/tpotce` 文件夹来继续分布式部署。在继续实际部署之前,请确保您理解了 [Planning and Certificates](#planning-and-certificates)。 如果您尚未生成 SSH 密钥以安全地登录到 **Sensor** 并允许 `Ansible` 在传感器上运行 playbook: 1. 运行 `ssh-keygen`,按照说明操作并将密码短语留空: Generating public/private rsa key pair. Enter file in which to save the key (/home//.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home//.ssh/id_rsa
Your public key has been saved in /home//.ssh/id_rsa.pub
2. 通过运行 `ssh-copy-id -p 64295 @)` 将密钥部署到 Sensor:
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home//.ssh/id_rsa.pub"
The authenticity of host '[]:64295 ([]:64295)' can't be stablished.
ED25519 key fingerprint is SHA256:naIDxFiw/skPJadTcgmWZQtgt+CdfRbUCoZn5RmkOnQ.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
@172.20.254.124's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh -p '64295' '@'"
and check to make sure that only the key(s) you wanted were added.
3. 按照建议的说明测试连接 `ssh -p '64295' '@'`。
4. 密钥成功部署后,运行 `./deploy.sh` 并按照说明操作。
### 移除传感器 在 `$HOME/tpotce/.env` 配置中识别 Sensor 上的 `TPOT_HIVE_USER` ENV(它是一个 base64 编码的字符串)。现在在 `$HOME/tpotce/.env` 配置中的 Hive 上识别 `LS_WEB_USER` ENV 中的相同字符串。删除该字符串并重启 T-Pot。
现在您可以安全地删除 Sensor 机器。 ## 社区数据提交 提供 T-Pot 是为了让每个对蜜罐感兴趣的人都能使用它。默认情况下,捕获的数据会提交到社区后端。该社区后端使用数据馈送 [Sicherheitstacho](https://sicherheitstacho.eu)。 您可以通过按照以下步骤从 `~/tpotce/docker-compose.yml` 中删除 `# Ewsposter service` 来选择退出提交: 1. 停止 T-Pot 服务:`systemctl stop tpot` 2. 打开 `~/tpotce/docker-compose.yml`:`micro ~/tpotce/docker-compose.yml` 3. 删除以下行,保存并退出 micro(`CTRL+Q`): ``` # Ewsposter 服务 ewsposter: container_name: ewsposter restart: always depends_on: tpotinit: condition: service_healthy networks: - ewsposter_local environment: - EWS_HPFEEDS_ENABLE=false - EWS_HPFEEDS_HOST=host - EWS_HPFEEDS_PORT=port - EWS_HPFEEDS_CHANNELS=channels - EWS_HPFEEDS_IDENT=user - EWS_HPFEEDS_SECRET=secret - EWS_HPFEEDS_TLSCERT=false - EWS_HPFEEDS_FORMAT=json image: ${TPOT_REPO}/ewsposter:${TPOT_VERSION} pull_policy: ${TPOT_PULL_POLICY} volumes: - ${TPOT_DATA_PATH}:/data - ${TPOT_DATA_PATH}/ews/conf/ews.ip:/opt/ewsposter/ews.ip ``` 4. 启动 T-Pot 服务:`systemctl start tpot` 鼓励不要禁用数据提交,因为这是社区方法的主要目的——众所周知 **分享就是关爱** 😍
## 选择加入 HPFEEDS 数据提交 作为选择加入,可以与第三方 HPFEEDS 代理共享 T-Pot 数据。 1. 按照 [here](#community-data-submission) 的说明停止 T-Pot 服务并打开 `~/tpotce/docker-compose.yml`。 2. 向下滚动到 `ewsposter` 部分并根据需要调整 HPFEEDS 设置。 3. 如果您需要添加 CA 证书,请将其添加到 `~/tpotce/data/ews/conf` 并设置 `EWS_HPFEEDS_TLSCERT=/data/ews/conf/`。
4. 启动 T-Pot 服务:`systemctl start tpot`。
# 远程访问和工具 可以通过 SSH(在 **`tcp/64295`** 上)远程访问您的主机/T-Pot,并且 T-Pot 附带了一些服务和工具,使您的一些研究任务变得更加轻松。
## SSH 根据 [User Types](#user-types),您可以通过 SSH 登录以访问命令行:`ssh -l -p 64295 `:
- 用户:**[``]**
- 密码:**[password]**
## T-Pot 落地页 根据 [User Types](#user-types),您可以通过浏览器从 `https://:64297` 打开 T-Pot 落地页:
- 用户:**[``]**
- 密码:**[password]**

## Kibana 仪表板 在 T-Pot 落地页上,只需点击 `Kibana`,您将被转发到 Kibana。您可以从各种为 T-Pot 支持的蜜罐量身定制的仪表板和可视化中进行选择。 
## 攻击地图 在 T-Pot 落地页上,只需点击 `Attack Map`,您将被转发到攻击地图。由于攻击地图 Web 套接字,您可能需要重新输入 `` 凭据。

## Cyberchef 在 T-Pot 落地页上,只需点击 `Cyberchef`,您将被转发到 Cyberchef。 
## Elasticvue 在 T-Pot 落地页上,只需点击 `Elasticvue`,您将被转发到 Elasticvue。 
## Spiderfoot 在 T-Pot 落地页上,只需点击 `Spiderfoot`,您将被转发到 Spiderfoot。 
# 配置 ## T-Pot 配置文件 T-Pot 提供了一个配置文件,不仅为 docker 服务(即蜜罐和工具)提供变量,还为 docker compose 环境提供变量。配置文件隐藏在 `~/tpoce/.env` 中。还有一个示例文件(`env.example`),其中包含默认配置。
在首次启动之前,请运行 `~/tpotce/genuser.sh` 或按照 [here](#add-users-to-nginx-t-pot-webui) 中的说明手动设置 `WEB_USER`。 ## 自定义 T-Pot 蜜罐和服务 在 `~/tpotce/compose` 中,您将找到调整 T-Pot Standard / Hive 安装所需的一切: ``` customizer.py llm.yml mac_win.yml mini.yml mobile.yml sensor.yml standard.yml tarpit.yml tpot_services.yml ``` `.yml` 文件是 docker compose 文件,每个文件代表一组不同的蜜罐和工具,其中 `tpot_services.yml` 是 `customizer.py` 用于创建自定义 docker compose 文件的模板。
要激活 compose 文件,请按照以下步骤操作: 1. 使用 `systemctl stop tpot` 停止 T-Pot。 2. 复制 docker compose 文件 `cp ~/tpotce/compose/ ~/tpotce/docker-compose.yml`。
3. 使用 `systemctl start tpot` 启动 T-Pot。
要创建您的自定义 docker compose 文件:
1. 转到 `cd ~/tpotce/compose`。
2. 运行 `python3 customizer.py`。
3. 脚本将指导您完成创建自己的 `docker-compose.yml` 的过程。由于某些蜜罐和服务占用相同的端口,它将检查是否存在任何端口冲突,并通知有关冲突的服务。然后,您可以通过调整 `docker-compose-custom.yml` 或重新运行脚本来手动解决它们。
4. 使用 `systemctl stop tpot` 停止 T-Pot。
5. 复制自定义 docker compose 文件:`cp docker-compose-custom.yml ~/tpotce` 和 `cd ~/tpotce`。
6. 通过运行 `docker-compose -f docker-compose-custom.yml up` 检查一切是否正常。如果出现错误,请按照 [Docker Compose Specification](https://docs.docker.com/compose/compose-file/) 进行缓解。很可能只是端口冲突,您可以通过编辑 docker compose 文件来调整。
7. 如果一切正常,请按 `CTRL-C` 停止容器并运行 `docker-compose -f docker-compose-custom.yml down -v`。
8. 用新的且成功测试的自定义 docker compose 文件替换 docker compose 文件 `mv ~/tpotce/docker-compose-custom.yml ~/tpotce/docker-compose.yml`。
9. 使用 `systemctl start tpot` 启动 T-Pot。
# 维护 T-Pot 旨在实现低维护。由于几乎所有内容都通过 docker 镜像提供,您基本上只需让它运行即可。我们将定期升级 docker 镜像以降低被入侵的风险;但是,您应该仔细阅读本节。
如果更新失败,提出问题或讨论将有助于将来改进,但提供的解决方案将***始终***是执行***全新安装***,因为我们根本***无法***为丢失的数据提供任何支持!
## 常规更新 T-Pot 的安全性取决于 [supported Linux distro images](#choose-your-distro) 提供的更新。确保查看操作系统文档并确保操作系统定期安装更新。默认情况下(`~/tpotce/.env`)`TPOT_PULL_POLICY=always` 将确保每次 T-Pot 启动时,docker 都会检查新的 docker 镜像并在创建容器之前下载它们。
## 更新脚本 T-Pot 版本通过 GitHub 提供,可以使用 `~/tpotce/update.sh` 拉取。
***如果您对 T-Pot 配置文件进行了任何相关更改,请务必先创建备份!***
***更新可能会产生不可预见的后果。请为机器或对您工作最有价值的文件创建备份!***
更新脚本将 ... - ***无情地***覆盖本地更改以与 T-Pot 主分支同步 - 创建 `~/tpotce` 文件夹的完整备份 - 更新 `~/tpotce` 中的所有文件以与 T-Pot 主分支同步 - 从 `~/tpotce/data/ews/conf` 和 T-Pot 配置(`~/tpotce/.env`)恢复您的自定义 `ews.cfg`。 ## 每日重启 默认情况下,T-Pot 将添加每日重启,包括一些清理工作。您可以使用 `sudo crontab -e` 调整此行 ``` #Ansible: T-Pot Daily Reboot 42 2 * * * bash -c 'systemctl stop tpot.service && docker container prune -f; docker image prune -f; docker volume prune -f; /usr/sbin/shutdown -r +1 "T-Pot Daily Reboot"' ``` ## 已知问题 以下问题是已知的,只需按照描述的步骤解决即可。
### Docker 镜像下载失败 前一段时间 Docker 引入了下载 [rate limits](https://docs.docker.com/docker-hub/download-rate-limit/#:~:text=Docker%20Hub%20limits%20the%20number,pulls%20per%206%20hour%20period.)。如果您经常通过单个或共享 IP 下载 Docker 镜像,则 IP 地址可能已耗尽 Docker 下载速率限制。登录您的 Docker 帐户以扩展速率限制。 ``` sudo su - docker login ``` ### T-Pot 网络故障 T-Pot 设计为仅在具有单个 NIC 的机器上运行。T-Pot 将尝试获取具有默认路由的接口,但是不能保证这总是会成功。最好在只有单个 NIC 的机器上使用 T-Pot。 ## 启动 T-Pot T-Pot 服务在每次重启时自动启动和停止(根据安装期间在 `sudo crontab -l` 中设置的设置,每天发生一次)。
如果您想手动启动 T-Pot 服务,可以通过 `systemctl start tpot` 进行,并通过 `dpsw` 观察容器的启动。
## 停止 T-Pot T-Pot 服务在每次重启时自动启动和停止(根据安装期间在 `sudo crontab -l` 中设置的设置,每天发生一次)。
如果您想手动停止 T-Pot 服务,可以通过 `systemctl stop tpot` 进行,并通过 `dpsw` 观察容器的关闭。
## T-Pot 数据文件夹 来自蜜罐、工具和 T-Pot 相关服务的所有持久日志文件都存储在 `~/tpotce/data` 中。这包括未传输到 Elastic Stack 的收集工件。
## 日志持久化 所有日志数据存储在 [T-Pot Data Folder](#t-pot-data-folder) 中,并将根据 T-Pot 配置文件 `~/tpotce/.env` 中设置的 `TPOT_PERSISTENCE_CYCLES=<1-999>` 的循环数进行持久化。默认为 30。
Elasticsearch 索引由 `tpot` 索引生命周期策略处理,可以直接在 Kibana 中调整(确保选中“Include managed system policies”)。 
默认情况下,`tpot` 索引生命周期策略将索引保留 30 天。这在存储和速度之间良好的平衡。但是,您可以根据需要调整策略。 
## 恢复出厂设置 存储在 [T-Pot Data Folder](#t-pot-data-folder) 中的所有日志数据(当然,Elasticsearch 索引除外)可以通过运行 `clean.sh` 擦除。 有时事情可能无法修复,将 T-Pot 重置为出厂默认设置从未如此简单(确保输入 `cd ~/tpotce`)。 1. 使用 `systemctl stop tpot` 停止 T-Pot。 2. 将 `~/tpotce/data` 文件夹移动/备份到安全的地方(这是可选的,以防万一)。 3. 使用 `sudo rm -rf ~/tpotce/data` 删除 `~/tpotce/data` 文件夹。 4. 将 T-Pot 重置为上次获取的提交: ``` cd ~/tpotce/ git reset --hard ``` 5. 现在您可以运行 `~/tpotce/install.sh`。
## 显示容器 您可以通过运行 `dps` 或 `dpsw [interval]` 来显示所有与 T-Pot 相关的容器。`interval (s)` 将定期重新运行 `dps`。
## 黑洞 黑洞将以某种隐身模式运行 T-Pot,而不会有公开已知扫描器的永久访问,从而降低被暴露的可能性。虽然这当然总是猫捉老鼠的游戏,但黑洞功能是对 [known mass scanners](https://raw.githubusercontent.com/stamparm/maltrail/master/trails/static/mass_scanner.txt) 的所有请求进行空路由,同时仍通过 Suricata 捕获事件。
通过在 `~/tpotce/.env` 中设置 `TPOT_BLACKHOLE=DISABLED` 来激活该功能,然后运行 `systemctl stop tpot` 和 `systemctl start tpot` 或 `sudo reboot`。
启用此功能将大大降低攻击者的可见性,从而导致活动减少。然而,如前所述,它既不能保证完全隐身,也不能防止某些蜜罐服务的指纹识别。
## 向 Nginx 添加用户 Nginx(T-Pot WebUI)允许您根据需要添加任意数量的 `` 帐户(根据 [User Types](#user-types))。
要**添加**新用户,请运行 `~/tpotce/genuser.sh`。
要**删除**用户,请打开 `~/tpotce/.env`,找到 `WEB_USER` 并删除相应的 base64 字符串(解码:`echo | base64 -d`,或打开 CyberChef 并加载“From Base64”配方)。
要使更改生效,您需要使用 `systemctl stop tpot` 和 `systemctl start tpot` 或 `sudo reboot` 重启 T-Pot。
## 导入和导出 Kibana 对象 某些 T-Pot 更新将要求您更新 Kibana 对象。无论是为了支持新蜜罐还是为了改进现有的仪表板或可视化。请务必先***导出***,这样您就不会丢失任何调整。 ### 导出 1. 转到 Kibana 2. 点击“Stack Management” 3. 点击“Saved Objects” 4. 点击“Export objects”
5. 点击“Export all”
这将导出一个包含所有对象的 NDJSON 文件。始终运行完整导出以确保包含所有引用。
### 导入
1. [Download the NDJSON file](https://github.com/dtag-dev-sec/tpotce/blob/master/docker/tpotinit/dist/etc/objects/kibana_export.ndjson.zip) 并解压。
2. 转到 Kibana
3. 点击“Stack Management”
4. 点击“Saved Objects”
5. 点击“Import”并保留默认值(检查现有对象并自动覆盖冲突),如果您没有对 Kibana 对象进行个人更改。
6. 浏览 NDJSON 文件
当被问及:“如果任何对象已存在,您是否要自动覆盖它们?”时,您回答“是,覆盖所有”。
# 故障排除 通常,T-Pot 是***按原样***提供的,不提供任何有关支持的承诺。可以提出问题和讨论,但请准备好包含基本必要信息,以便社区能够提供帮助。
## 日志 * 检查您的容器是否正常运行:`dps` * 检查您的系统资源是否未耗尽:`htop`、`docker stats` * 检查是否存在端口冲突: ``` systemctl stop tpot grc netstat -tulpen mi ~/tpotce/docker-compose.yml docker-compose -f ~/tpotce/docker-compose.yml up CTRL+C docker-compose -f ~/tpotce/docker-compose.yml down -v ``` * 检查单个容器日志:`docker logs -f`
* 检查 `tpotinit` 日志:`cat ~/tpotce/data/tpotinit.log`
## RAM 和存储 Elastic Stack 需要 RAM,特别是 `logstash` 和 `elasticsearch`。如果 Elastic Stack 不可用、未接收任何日志或只是不断崩溃,则很可能是 RAM 或存储问题。
当 T-Pot 不断尝试重启服务/容器时,运行 `docker logs -f`(`logstash` 或 `elasticsearch`)并检查是否有任何涉及 RAM 的警告或故障。
存储故障可以通过 `htop` 更容易地识别。
# 联系方式 T-Pot 是***按原样***提供的开源软件,***不***提供任何有关支持的承诺([see the disclaimer](#disclaimer))。 如果您是安全研究人员并希望负责任地报告问题,请与我们的 [CERT](https://www.telekom.com/en/corporate-responsibility/data-protection-data-security/security/details/introducing-deutsche-telekom-cert-358316) 联系。
## 问题 请在我们的 [GitHub Issues](https://github.com/telekom-security/tpotce/issues) 上报告问题(错误),但请先 [troubleshoot](#troubleshooting)。未提供解决错误信息的问题将被关闭或转换为 [discussions](#discussions)。 先使用搜索功能,类似的问题可能已经被解决或讨论过,解决方案只需搜索一下即可。
## 讨论 一般性问题、想法、展示等可以在我们的 [GitHub Discussions](https://github.com/telekom-security/tpotce/discussions) 上提出。 使用搜索功能,类似的讨论可能已经开启,答案只需搜索一下即可。
# 许可证 构建 T-Pot 的软件使用以下许可证。
GPLv2: [conpot](https://github.com/mushorg/conpot/blob/master/LICENSE.txt), [galah](https://github.com/0x4D31/galah?tab=Apache-2.0-1-ov-file#readme), [dionaea](https://github.com/DinoTools/dionaea/blob/master/LICENSE), [honeytrap](https://github.com/armedpot/honeytrap/blob/master/LICENSE), [suricata](https://suricata.io/features/open-source/)
GPLv3: [adbhoney](https://github.com/huuck/ADBHoney), [elasticpot](https://gitlab.com/bontchev/elasticpot/-/blob/master/LICENSE), [ewsposter](https://github.com/telekom-security/ewsposter), [log4pot](https://github.com/thomaspatzke/Log4Pot/blob/master/LICENSE), [fatt](https://github.com/0x4D31/fatt/blob/master/LICENSE), [heralding](https://github.com/johnnykv/heralding/blob/master/LICENSE.txt), [ipphoney](https://gitlab.com/bontchev/ipphoney/-/blob/master/LICENSE), [miniprint](https://github.com/sa7mon/miniprint?tab=GPL-3.0-1-ov-file#readme), [redishoneypot](https://github.com/cypwnpwnsocute/RedisHoneyPot/blob/main/LICENSE), [sentrypeer](https://github.com/SentryPeer/SentryPeer/blob/main/LICENSE.GPL-3.0-only), [snare](https://github.com/mushorg/snare/blob/master/LICENSE), [tanner](https://github.com/mushorg/snare/blob/master/LICENSE)
Apache 2 许可证: [cyberchef](https://github.com/gchq/CyberChef/blob/master/LICENSE), [dicompot](https://github.com/nsmfoo/dicompot/blob/master/LICENSE), [elasticsearch](https://github.com/elasticsearch/elasticsearch/blob/master/LICENSE.txt), [go-pot](https://github.com/ryanolee/go-pot?tab=License-1-ov-file#readme), [h0neytr4p](https://github.com/pbssubhash/h0neytr4p?tab=Apache-2.0-1-ov-file#readme), [logstash](https://github.com/elasticsearch/logstash/blob/master/LICENSE.txt), [kibana](https://github.com/elasticsearch/kibana/blob/master/LICENSE.txt), [docker](https://github.com/docker/docker/blob/master/LICENSE)
MIT 许可证: [autoheal](https://github.com/willfarrell/docker-autoheal?tab=MIT-1-ov-file#readme), [beelzebub](https://github.com/mariocandela/beelzebub?tab=MIT-1-ov-file#readme), [ciscoasa](https://github.com/Cymmetria/ciscoasa_honeypot/blob/master/LICENSE), [ddospot](https://github.com/aelth/ddospot/blob/master/LICENSE), [elasticvue](https://github.com/cars10/elasticvue/blob/master/LICENSE), [glutton](https://github.com/mushorg/glutton/blob/master/LICENSE), [hellpot](https://github.com/yunginnanet/HellPot/blob/master/LICENSE), [honeyaml](https://github.com/mmta/honeyaml?tab=MIT-1-ov-file#readme), [maltrail](https://github.com/stamparm/maltrail/blob/master/LICENSE)
Unlicense: [endlessh](https://github.com/skeeto/endlessh/blob/master/UNLICENSE)
其他: [citrixhoneypot](https://github.com/MalwareTech/CitrixHoneypot#licencing-agreement-malwaretech-public-licence), [cowrie](https://github.com/cowrie/cowrie/blob/master/LICENSE.rst), [mailoney](https://github.com/awhitehatter/mailoney), [Elastic License](https://www.elastic.co/licensing/elastic-license), [Wordpot](https://github.com/gbrindisi/wordpot)
AGPL-3.0: [honeypots](https://github.com/qeeqbox/honeypots/blob/main/LICENSE)
[Public Domain (CC)](https://creativecommons.org/publicdomain/zero/1.0/): [Harvard Dataverse](https://dataverse.harvard.edu/dataverse/harvard/?q=dicom)
# 致谢 如果没有开源和我们引以为豪的开发社区,T-Pot 就不可能实现!我们的感谢不仅限于以下人员和组织:
## 以下开发者和开发社区 * [adbhoney](https://github.com/huuck/ADBHoney/graphs/contributors), [beelzebub](https://github.com/mariocandela/beelzebub/graphs/contributors), [ciscoasa](https://github.com/Cymmetria/ciscoasa_honeypot/graphs/contributors), [citrixhoneypot](https://github.com/MalwareTech/CitrixHoneypot/graphs/contributors), [conpot](https://github.com/mushorg/conpot/graphs/contributors), [cowrie](https://github.com/cowrie/cowrie/graphs/contributors), [User Types](#user-types), [dicompot](https://github.com/nsmfoo/dicompot/graphs/contributors), [dionaea](https://github.com/DinoTools/dionaea/graphs/contributors), [docker](https://github.com/docker/docker/graphs/contributors), [elasticpot](https://gitlab.com/bontchev/elasticpot/-/project_members), [elasticsearch](https://github.com/elastic/elasticsearch/graphs/contributors), [elasticvue](https://github.com/cars10/elasticvue/graphs/contributors), [endlessh](https://github.com/skeeto/endlessh/graphs/contributors), [ewsposter](https://github.com/armedpot/ewsposter/graphs/contributors), [fatt](https://github.com/0x4D31/fatt/graphs/contributors), [galah](https://github.com/0x4D31/galah/graphs/contributors), [glutton](https://github.com/mushorg/glutton/graphs/contributors), [go-pot](https://github.com/ryanolee/go-pot/graphs/contributors), [h0neytr4p](https://github.com/pbssubhash/h0neytr4p/graphs/contributors), [hellpot](https://github.com/yunginnanet/HellPot/graphs/contributors), [heralding](https://github.com/johnnykv/heralding/graphs/contributors), [honeyaml](https://github.com/mmta/honeyaml/graphs/contributors), [honeypots](https://github.com/qeeqbox/honeypots/graphs/contributors), [honeytrap](https://github.com/armedpot/honeytrap/graphs/contributors), [ipphoney](https://gitlab.com/bontchev/ipphoney/-/project_members), [kibana](https://github.com/elastic/kibana/graphs/contributors), [logstash](https://github.com/elastic/logstash/graphs/contributors), [log4pot](https://github.com/thomaspatzke/Log4Pot/graphs/contributors), [mailoney](https://github.com/awhitehatter/mailoney), [maltrail](https://github.com/stamparm/maltrail/graphs/contributors), [medpot](https://github.com/schmalle/medpot/graphs/contributors), [miniprint](https://github.com/sa7mon/miniprint/graphs/contributors), [p0f](http://lcamtuf.coredump.cx/p0f3/), [redishoneypot](https://github.com/cypwnpwnsocute/RedisHoneyPot/graphs/contributors), [sentrypeer](https://github.com/SentryPeer/SentryPeer/graphs/contributors), [spiderfoot](https://github.com/smicallef/spiderfoot), [snare](https://github.com/mushorg/snare/graphs/contributors), [tanner](https://github.com/mushorg/tanner/graphs/contributors), [suricata](https://github.com/OISF/suricata/graphs/contributors), [wordpot](https://github.com/gbrindisi/wordpot)
## **以下公司和组织** * [docker](https://www.docker.com/), [elastic.io](https://www.elastic.co/), [honeynet project](https://www.honeynet.org/)
## **当然还有加入社区的 ***您***!**
# 评价 我们迄今为止收到的最好的反馈之一来自 Conpot 开发者之一:
***“[...] 我强烈推荐 T-Pot,它……它不仅仅是一把瑞士军刀……它更像是一名装备着瑞士军刀的瑞士士兵。坐在坦克里。一辆瑞士坦克。[...]”***
来自 @robcowart([ElastiFlow](https://github.com/robcowart/elastiflow) 的创建者):
***“#TPot 是组合得最好的交钥匙蜜罐解决方案之一。对于任何想要分析和了解恶意行为者的行为及其对组织构成的威胁的人来说,它是必备的。”***
# 谢谢 💖
# 太长不看版 (TL;DR) 1. 查看 [system requirements](#system-requirements)。T-Pot 安装至少需要 8-16 GB RAM、128 GB 可用磁盘空间以及一个正常(出站非过滤)的互联网连接。 2. [Download](#choose-your-distro) 或使用一个正在运行的、受支持的发行版。 3. 以尽可能少的包/服务安装 ISO(需要 `ssh`)。 4. 如果尚未安装,请安装 `curl`:`$ sudo [apt, dnf, zypper] install curl` 5. 从 `$HOME` 以非 root 用户身份运行安装程序: ``` env bash -c "$(curl -sL https://github.com/telekom-security/tpotce/raw/master/install.sh)" ``` * 按照说明操作,阅读消息,检查可能的端口冲突并重启 - [T-Pot - The All In One Multi Honeypot Platform](#t-pot---the-all-in-one-multi-honeypot-platform) - [TL;DR](#tldr) - [Disclaimer](#disclaimer) - [Technical Concept](#technical-concept) - [Honeypots and Tools](#honeypots-and-tools) - [Technical Architecture](#technical-architecture) - [Services](#services) - [User Types](#user-types) - [System Requirements](#system-requirements) - [Running in a VM](#running-in-a-vm) - [Running on Hardware](#running-on-hardware) - [Running in a Cloud](#running-in-a-cloud) - [Required Ports](#required-ports) - [LLM-Based Honeypots](#llm-based-honeypots) - [Ollama](#ollama) - [ChatGPT](#chatgpt) - [System Placement](#system-placement) - [Installation](#installation) - [Choose your distro](#choose-your-distro) - [Raspberry Pi 4 (8GB) Support](#raspberry-pi-4-8gb-support) - [Get and install T-Pot](#get-and-install-t-pot) - [macOS \& Windows](#macos--windows) - [Red Hat Enterprise Linux](#red-hat-enterprise-linux) - [Installation Types](#installation-types) - [Standard / Hive](#standard--hive) - [Distributed](#distributed) - [Uninstall T-Pot](#uninstall-t-pot) - [First Start](#first-start) - [Standalone First Start](#standalone-first-start) - [Distributed Deployment](#distributed-deployment) - [Planning and Certificates](#planning-and-certificates) - [Deploying Sensors](#deploying-sensors) - [Removing Sensors](#removing-sensors) - [Community Data Submission](#community-data-submission) - [Opt-In HPFEEDS Data Submission](#opt-in-hpfeeds-data-submission) - [Remote Access and Tools](#remote-access-and-tools) - [SSH](#ssh) - [T-Pot Landing Page](#t-pot-landing-page) - [Kibana Dashboard](#kibana-dashboard) - [Attack Map](#attack-map) - [Cyberchef](#cyberchef) - [Elasticvue](#elasticvue) - [Spiderfoot](#spiderfoot) - [Configuration](#configuration) - [T-Pot Config File](#t-pot-config-file) - [Customize T-Pot Honeypots and Services](#customize-t-pot-honeypots-and-services) - [Maintenance](#maintenance) - [General Updates](#general-updates) - [Update Script](#update-script) - [Daily Reboot](#daily-reboot) - [Known Issues](#known-issues) - [Docker Images Fail to Download](#docker-images-fail-to-download) - [T-Pot Networking Fails](#t-pot-networking-fails) - [Start T-Pot](#start-t-pot) - [Stop T-Pot](#stop-t-pot) - [T-Pot Data Folder](#t-pot-data-folder) - [Log Persistence](#log-persistence) - [Factory Reset](#factory-reset) - [Show Containers](#show-containers) - [Blackhole](#blackhole) - [Add Users to Nginx (T-Pot WebUI)](#add-users-to-nginx-t-pot-webui) - [Import and Export Kibana Objects](#import-and-export-kibana-objects) - [Export](#export) - [Import](#import) - [Troubleshooting](#troubleshooting) - [Logs](#logs) - [RAM and Storage](#ram-and-storage) - [Contact](#contact) - [Issues](#issues) - [Discussions](#discussions) - [Licenses](#licenses) - [Credits](#credits) - [The developers and development communities of](#the-developers-and-development-communities-of) - [**The following companies and organizations**](#the-following-companies-and-organizations) - [**And of course ***YOU*** for joining the community!**](#and-of-course-you-for-joining-the-community) - [Testimonials](#testimonials) - [Thank you 💖](#thank-you-)
# 免责声明 - 您需要在责任范围内安装和运行 T-Pot。请明智地选择部署方式,因为无法完全排除系统被入侵的可能性。 - 如需快速帮助,请研究 [Issues](https://github.com/telekom-security/tpotce/issues) 和 [Discussions](https://github.com/telekom-security/tpotce/discussions)。 - 该软件的设计和提供基于尽力而为的原则。作为一个社区和开源项目,它使用了许多其他开源软件,可能包含错误和问题。请负责任地报告。 - 蜜罐——根据设计——不应托管任何敏感数据。请确保不要添加任何敏感数据。 - 默认情况下,您的数据会提交到 [Sicherheitstacho](https://www.sicherheitstacho.eu/start/main)。您可以在配置(`~/tpotce/docker-compose.yml`)中通过 [removing](#community-data-submission) `ewsposter` 部分来禁用此功能。但在这种情况下,分享真的是一种关爱!
# 技术概念 T-Pot 的主要组件已移至 `tpotinit` Docker 镜像中,允许 T-Pot 现在支持多种 Linux 发行版,甚至 macOS 和 Windows(尽管两者都受限于 Docker Desktop 的功能集)。T-Pot 使用 [docker](https://www.docker.com/) 和 [docker compose](https://docs.docker.com/compose/) 来实现其目标,即尽可能同时运行最多的蜜罐和工具,从而最大限度地利用主机硬件。
## 蜜罐和工具 - T-Pot 为以下蜜罐提供 Docker 镜像:
[adbhoney](https://github.com/huuck/ADBHoney), [beelzebub](https://github.com/mariocandela/beelzebub), [ciscoasa](https://github.com/Cymmetria/ciscoasa_honeypot), [citrixhoneypot](https://github.com/MalwareTech/CitrixHoneypot), [conpot](http://conpot.org/), [cowrie](https://github.com/cowrie/cowrie), [ddospot](https://github.com/aelth/ddospot), [dicompot](https://github.com/nsmfoo/dicompot), [dionaea](https://github.com/DinoTools/dionaea), [elasticpot](https://gitlab.com/bontchev/elasticpot), [endlessh](https://github.com/skeeto/endlessh), [galah](https://github.com/0x4D31/galah), [go-pot](https://github.com/ryanolee/go-pot), [glutton](https://github.com/mushorg/glutton), [h0neytr4p](https://github.com/pbssubhash/h0neytr4p), [hellpot](https://github.com/yunginnanet/HellPot), [heralding](https://github.com/johnnykv/heralding), [honeyaml](https://github.com/mmta/honeyaml), [honeypots](https://github.com/qeeqbox/honeypots), [honeytrap](https://github.com/armedpot/honeytrap/), [ipphoney](https://gitlab.com/bontchev/ipphoney), [log4pot](https://github.com/thomaspatzke/Log4Pot), [mailoney](https://github.com/awhitehatter/mailoney), [medpot](https://github.com/schmalle/medpot), [miniprint](https://github.com/sa7mon/miniprint), [redishoneypot](https://github.com/cypwnpwnsocute/RedisHoneyPot), [sentrypeer](https://github.com/SentryPeer/SentryPeer), [snare](http://mushmush.org/), [tanner](http://mushmush.org/), [wordpot](https://github.com/gbrindisi/wordpot) 以及以下工具: * [Autoheal](https://github.com/willfarrell/docker-autoheal) 一种自动重启健康检查失败容器的工具。 * [Cyberchef](https://gchq.github.io/CyberChef/) 一个用于加密、编码、压缩和数据分析的 Web 应用。 * [Elastic Stack](https://www.elastic.co/videos) 用于精美地可视化 T-Pot 捕获的所有事件。 * [Elasticvue](https://github.com/cars10/elasticvue/) 一个用于浏览 Elasticsearch 集群并进行交互的 Web 前端。 * [Fatt](https://github.com/0x4D31/fatt) 一个基于 pyshark 的脚本,用于从 pcap 文件和实时网络流量中提取网络元数据和指纹。 * [T-Pot-Attack-Map](https://github.com/t3chn0m4g3/t-pot-attack-map) 一个为 T-Pot 提供精美动画的攻击地图。 * [P0f](https://lcamtuf.coredump.cx/p0f3/) 是一个用于纯被动流量指纹识别的工具。 * [Spiderfoot](https://github.com/smicallef/spiderfoot) 一个开源情报自动化工具。 * [Suricata](https://suricata.io/) 一个网络安全监控引擎。 ... 旨在为您提供尽可能最好的开箱即用体验和易于使用的多蜜罐系统。
## 技术架构  源代码和配置文件完全存储在 T-Pot GitHub 存储库中。Docker 镜像是为 T-Pot 环境构建和预配置的。 各个 Dockerfile 和配置位于 [docker folder](https://github.com/telekom-security/tpotce/tree/master/docker)。
## 服务 T-Pot 提供多项服务,这些服务主要分为五组: 1. 操作系统提供的系统服务 * SSH 用于安全的远程访问。 2. Elastic Stack * Elasticsearch 用于存储事件。 * Logstash 用于摄取、接收事件并将其发送到 Elasticsearch。 * Kibana 用于在精美呈现的仪表板上显示事件。 3. 工具 * NGINX 提供对 Kibana、CyberChef、Elasticvue、GeoIP Attack Map、Spiderfoot 的安全远程访问(反向代理),并允许 T-Pot 传感器安全地将事件数据传输到 T-Pot Hive。 * CyberChef 一个用于加密、编码、压缩和数据分析的 Web 应用。 * Elasticvue 一个用于浏览 Elasticsearch 集群并进行交互的 Web 前端。 * T-Pot Attack Map 一个为 T-Pot 提供精美动画的攻击地图。 * Spiderfoot 一个开源情报自动化工具。 4. 蜜罐 * 基所选 `docker-compose.yml` 的 23 个可用蜜罐中的精选。 5. 网络安全监控 (NSM) * Fatt 一个基于 pyshark 的脚本,用于从 pcap 文件和实时网络流量中提取网络元数据和指纹。 * P0f 是一个用于纯被动流量指纹识别的工具。 * Suricata 一个网络安全监控引擎。
## 用户类型 在安装和使用 T-Pot 期间,您将使用两种不同类型的帐户。请确保了解不同帐户类型之间的区别,因为这是导致身份验证错误的最常见原因。 | 服务 | 帐户类型 | 用户名 / 组 | 描述 | |:-----------------|:-------------|:------------------|:-----------------------------------------------------------------| | SSH | OS | `
# 系统要求 根据 [supported Linux distro images](#choose-your-distro)、Hive / Sensor、安装在 [real hardware](#running-on-hardware)、在 [virtual machine](#running-in-a-vm) 或其他环境中,成功安装 T-Pot 对操作系统、RAM、存储和网络有不同的要求(您始终可以根据需要调整 `~/tpotce/docker-compose.yml` 和 `~/tpotce/.env` 以满足这些要求)。
| T-Pot 类型 | RAM | 存储 | 描述 | |:-----------|:------|:----------|:---------------------------------------------------------------------------------------------| | Hive | 16GB | 256GB SSD | 根据经验,蜜罐、传感器和数据越多,所需的 RAM 和存储空间就越多。 | | Sensor | 8GB | 128GB SSD | 由于蜜罐日志会持久化 (~/tpotce/data) 30 天,存储空间取决于攻击量。 | T-Pot 确实需要 ... - 通过 DHCP 分配或静态分配的 IPv4 地址 - 正常的、非代理的互联网连接 ... 才能成功安装和运行。
*如果您需要代理支持或其他非标准功能,您应该查看 [supported Linux distro images](#choose-your-distro) 和/或 [Docker documentation](https://docs.docker.com/) 的文档。*
## 在虚拟机中运行 所有 [supported Linux distro images](#choose-your-distro) 都可以在虚拟机中运行,这意味着 T-Pot 也可以正常运行。以下已测试/报告可工作: * [UTM (Intel & Apple Silicon)](https://mac.getutm.app/) * [VirtualBox](https://www.virtualbox.org/) * [VMWare Fusion](https://www.vmware.com/products/fusion/fusion-evaluation.html) 和 [VMWare Workstation](https://www.vmware.com/products/workstation-pro.html) * 据报告 KVM 也可工作。 ***一些配置/设置提示:*** - 虽然 Intel 版本运行稳定,但 Apple Silicon (arm64) 支持存在已知问题,在 UTM 中可能需要在初始安装操作系统期间将 `Display` 切换为 `Console Only`,之后切回 `Full Graphics`。 - 在配置期间,您可能需要为网络接口启用混杂模式,以便 fatt、suricata 和 p0f 正常工作。 - 如果您想使用 wifi 卡作为 T-Pot 的主 NIC,请注意并非所有网络接口驱动程序都支持所有无线网卡。例如在 VirtualBox 中,您必须选择 NIC 的 *"MT SERVER"* 模型。
## 在硬件上运行 T-Pot 仅受 [supported Linux distro images](#choose-your-distro) 的硬件支持限制。建议在投资专用硬件之前检查 HCL(硬件兼容性列表)并使用 T-Pot 测试受支持的发行版。
## 在云端运行 T-Pot 已在以下平台测试并已知可运行 ... * Telekom OTC 使用 post install 方法 ... 其他平台可能可行,但未经测试。 一些用户报告在其他云和托管商(即 Azure 和 GCP)上有可工作的安装。硬件要求可能不同。如果您不确定,应该研究 [issues](https://github.com/telekom-security/tpotce/issues) 和 [discussions](https://github.com/telekom-security/tpotce/discussions) 并运行一些功能测试。从 T-Pot 24.04.0 开始,我们确保删除了已知会干扰基于云的安装的设置。
## 必需端口 除了操作系统通常需要的端口(即获取 DHCP 租约、DNS 等)外,T-Pot 还需要以下端口用于传入/传出连接。查看 [T-Pot Architecture](#technical-architecture) 以获取可视化表示。此外,某些端口会显示为重复,这没问题,因为它们用于不同的版本。 | 端口 | 协议 | 方向 | 描述 | |:--------------------------------------------------------------------------------------------------------------------------------------|:--------|:---------|:----------------------------------------------------------------------------------------------------| | 80, 443 | tcp | 传出 | T-Pot 管理:安装、更新、日志(即 OS、GitHub、DockerHub、Sicherheitstacho 等) | | 11434 | tcp | 传出 | 基于 LLM 的蜜罐:访问您的 Ollama 安装 | | 64294 | tcp | 传入 | T-Pot 管理:传感器数据传输到 hive(通过 NGINX 反向代理)到 127.0.0.1:64305 | | 64295 | tcp | 传入 | T-Pot 管理:访问 SSH | | 64297 | tcp | 传入 | T-Pot 管理访问 NGINX 反向代理 | | 5555 | tcp | 传入 | 蜜罐:ADBHoney | | 22 | tcp | 传入 | 蜜罐:Beelzebub(需要 LLM) | | 5000 | udp | 传入 | 蜜罐:CiscoASA | | 8443 | tcp | 传入 | 蜜罐:CiscoASA | | 443 | tcp | 传入 | 蜜罐:CitrixHoneypot | | 80, 102, 502, 1025, 2404, 10001, 44818, 47808, 50100 | tcp | 传入 | 蜜罐:Conpot | | 161, 623 | udp | 传入 | 蜜罐:Conpot | | 22, 23 | tcp | 传入 | 蜜罐:Cowrie | | 19, 53, 123, 1900 | udp | 传入 | 蜜罐:Ddospot | | 11112 | tcp | 传入 |蜜罐:Dicompot | | 21, 42, 135, 443, 445, 1433, 1723, 1883, 3306, 8081 | tcp | 传入 | 蜜罐:Dionaea | | 69 | udp | 传入 | 蜜罐:Dionaea | | 9200 | tcp | 传入 | 蜜罐:Elasticpot | | 22 | tcp | 传入 | 蜜罐:Endlessh | | 80, 443, 8080, 8443 | tcp | 传入 | 蜜罐:Galah(需要 LLM) | | 8080 | tcp | 传入 | 蜜罐:Go-pot | | 80, 443 | tcp | 传入 | 蜜罐:H0neytr4p | | 21, 22, 23, 25, 80, 110, 143, 443, 993, 995, 1080, 5432, 5900 | tcp | 传入 | 蜜罐:Heralding | | 3000 | tcp | 传入 | 蜜罐:Honeyaml | | 21, 22, 23, 25, 80, 110, 143, 389, 443, 445, 631, 1080, 1433, 1521, 3306, 3389, 5060, 5432, 5900, 6379, 6667, 8080, 9100, 9200, 11211 | tcp | 传入 | 蜜罐:qHoneypots | | 53, 123, 161, 5060 | udp | 传入 | 蜜罐:qHoneypots | | 631 | tcp | 传入 | 蜜罐:IPPHoney | | 80, 443, 8080, 9200, 25565 | tcp | 传入 | 蜜罐:Log4Pot | | 25 | tcp | 传入 | 蜜罐:Mailoney | | 2575 | tcp | 传入 | 蜜罐:Medpot | | 9100 | tcp | 传入 | 蜜罐:Miniprint | | 6379 | tcp | 传入 | 蜜罐:Redishoneypot | | 5060 | tcp/udp | 传入 | 蜜罐:SentryPeer | | 80 | tcp | 传入 | 蜜罐:Snare (Tanner) | | 8090 | tcp | 传入 | 蜜罐:Wordpot | 端口和 SaaS 服务的可用性可能因您的地理位置而异。 对于某些蜜罐要达到完整功能(即 Cowrie 或 Log4Pot),也需要传出连接,以便它们下载攻击者的恶意软件。请参阅各个蜜罐的文档以了解更多信息,方法是通过 [links](#technical-concept) 访问其存储库。 ## 基于 LLM 的蜜罐 我们认为基于 LLM 的蜜罐标志着欺骗/蜜罐领域游戏规则改变的**开始**。因此,从 **T-Pot 24.04.1** 版本开始,引入了两个基于 LLM 的蜜罐:**Beelzebub** 和 **Galah**。这些蜜罐需要安装 **Ollama**,并需要在 [T-Pot configuration file](#t-pot-config-file) 中进行配置。您也可以在此文件中调整 **ChatGPT** 支持的设置,但请注意,还需要在 docker compose 文件(`~/tpotce/compose/llm.yml`)中进行更改以适应这些调整。
请通过 [Honeypots and Tools](#honeypots-and-tools) 部分的链接了解有关 **Beelzebub** 和 **Galah** 的更多信息。 ### Ollama 🚨 **不建议使用 CPU**,即使是用于测试。
要设置和运行 **Ollama**,请参阅 [Ollama GitHub repository](https://github.com/ollama/ollama) 获取说明。对于入门级或测试目的,可以使用 **Nvidia RTX 4060 Ti 16GB** 或同等配置(Ollama 也支持 AMD 的 ROCm),配合 **openchat** 和 **Llama3** 等模型实现。作为基于 LLM 的系统的一般规则,您使用的硬件越好、越多,结果就越快、越准确,尤其是当任务被卸载到多个 GPU 和更大的模型时。 ### ChatGPT 这些蜜罐的 ChatGPT 支持在 T-Pot 相关方面将保持未经测试状态。
# 系统放置 建议在开始向互联网暴露之前,先让自己熟悉 T-Pot 和蜜罐的工作原理。为了快速入门,请在虚拟机中运行 T-Pot 安装。
一旦您熟悉了工作原理,您应该选择一个您怀疑有入侵者或来自入侵者的网络(即互联网)。否则 T-Pot 很可能不会捕获任何攻击(除非您想证明一个观点)!对于初学者,建议将 T-Pot 放置在一个未过滤的区域,将所有 TCP 和 UDP 流量转发到 T-Pot 的网络接口。为了避免探测 T-Pot 的管理端口,您应该将 T-Pot 放置在防火墙后面,并将 1-64000 端口范围内的所有 TCP/UDP 流量转发到 T-Pot,同时仅允许来自受信任 IP 的 > 64000 端口访问,和/或仅公开与您的用例相关的 [ports](#required-ports)。如果您希望在未知端口上捕获恶意软件流量,则不应限制转发的端口,因为 glutton 和 honeytrap 会动态绑定未被其他蜜罐守护进程占用的任何 TCP 端口,从而更好地呈现您的设置所面临的风险。
# 安装 [Download](#choose-your-distro) [supported Linux distro images](#choose-your-distro) 中的一个,按照 [TL;DR](#tldr) 说明操作或 `git clone` T-Pot 存储库并运行安装程序 `~/tpotce/install.sh`。在正在运行的受支持 Linux 系统上运行 T-Pot 是可能的,但建议进行全新安装以避免与正在运行的服务发生端口冲突。T-Pot 安装程序需要直接访问互联网,如 [here](#required-ports) 所述。
## 选择您的发行版 **遵循的步骤:** 1. 从下方列表中下载受支持的 Linux 发行版。(注意:Red Hat Enterprise Linux >= 8 受支持,但由于其基于订阅的性质,在下方列表中省略。有关详细信息,请参阅 [Red Hat Enterprise Linux](#red-hat-enterprise-linux))。 2. 在安装过程中选择 **minimum**、**netinstall** 或 **server** 版本,仅安装必要的软件包。 3. **切勿**安装图形桌面环境,如 Gnome 或 KDE。由于端口冲突,T-Pot 将无法与其一起工作。 4. 确保安装 SSH,以便您可以远程连接到机器| 发行版名称 | x64 | arm64 | |:---------------------------------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------| | [Alma Linux OS 9.x Minimal ISO](https://almalinux.org) | [download](https://repo.almalinux.org/almalinux/9.7/isos/x86_64/AlmaLinux-9.7-x86_64-minimal.iso) | [download](https://repo.almalinux.org/almalinux/9.7/isos/aarch64/AlmaLinux-9.7-aarch64-minimal.iso) | | [Debian 13 Network Install](https://www.debian.org/CD/netinst/index.en.html) | [download](https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-13.3.0-amd64-netinst.iso) | [download](https://cdimage.debian.org/debian-cd/current/arm64/iso-cd/debian-13.3.0-arm64-netinst.iso) | | [Fedora Server 42 Network Install](https://fedoraproject.org/server/download) | [download](https://download.fedoraproject.org/pub/fedora/linux/releases/42/Server/x86_64/iso/Fedora-Server-netinst-x86_64-42-1.1.iso) | [download](https://download.fedoraproject.org/pub/fedora/linux/releases/42/Server/aarch64/iso/Fedora-Server-netinst-aarch64-42-1.1.iso) | | [OpenSuse Tumbleweed Network Image](https://get.opensuse.org/tumbleweed/#download) | [download](https://download.opensuse.org/tumbleweed/iso/openSUSE-Tumbleweed-NET-x86_64-Current.iso) | [download](https://download.opensuse.org/ports/aarch64/tumbleweed/iso/openSUSE-Tumbleweed-NET-aarch64-Current.iso) | | [Rocky Linux OS 9.x Minimal ISO](https://rockylinux.org/download) | [download](https://download.rockylinux.org/pub/rocky/9/isos/x86_64/Rocky-9.7-x86_64-minimal.iso) | [download](https://download.rockylinux.org/pub/rocky/9/isos/aarch64/Rocky-9.7-aarch64-minimal.iso) | | [Ubuntu 24.04.x Live Server](https://ubuntu.com/download/server) | [download](https://releases.ubuntu.com/24.04/ubuntu-24.04.3-live-server-amd64.iso) | [download](https://cdimage.ubuntu.com/releases/24.04/release/ubuntu-24.04.3-live-server-arm64.iso) |
## Raspberry Pi 4 (8GB) 支持 | 发行版名称 | arm64 | |:----------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------| | [Raspberry Pi OS (**64Bit, Lite**)](https://www.raspberrypi.com) | [download](https://downloads.raspberrypi.com/raspios_lite_arm64/images/raspios_lite_arm64-2024-03-15/2024-03-15-raspios-bookworm-arm64-lite.img.xz) |
## 获取并安装 T-Pot 1. 克隆 GitHub 存储库:`$ git clone https://github.com/telekom-security/tpotce` 或按照 [TL;DR](#tldr) 操作并跳过此部分。 2. 进入 **tpotce/** 文件夹:`$ cd tpotce` 3. 以非 root 用户身份运行安装程序:`$ ./install.sh`: * ⚠️ ***根据您选择的 Linux 发行版,安装程序将:*** * 将 SSH 端口更改为 `tcp/64295` * 禁用 DNS Stub Listener 以避免与蜜罐发生端口冲突 * 将 SELinux 设置为监控模式 * 将公共区域的防火墙目标设置为 ACCEPT * 添加 Docker 的存储库并安装 Docker * 安装推荐的软件包 * 删除已知会导致问题的软件包 * 将当前用户添加到 docker 组(允许在没有 `sudo` 的情况下与 docker 交互) * 添加 `dps` 和 `dpsw` 别名(`grc docker ps -a`,`watch -c "grc --colour=on docker ps -a"`) * 添加 `la`、`ll` 和 `ls` 别名(用于 `exa`,一个改进的 `ls` 命令) * 添加 `mi`(用于 `micro`,一个很好的 `vi` 和/或 `nano` 替代品) * 显示主机上的开放端口(与 T-Pot [required](https://github.com/telekom-security/tpotce#required-ports) 端口进行比较) * 将 `tpot.service` 添加并启用到 `/etc/systemd/system`,以便 T-Pot 可以自动启动和停止 4. 按照安装程序说明操作,您必须至少输入一次您的用户(`sudo` 或 `root`)密码 5. 检查安装程序消息中是否存在错误和可能导致端口冲突的开放端口 6. 重启:`$ sudo reboot`
## macOS 和 Windows 有时在 macOS 或 Windows 上启动 T-Pot 实例很不错,例如用于开发、测试或仅仅是为了好玩。由于 Docker Desktop 相当有限,并非所有蜜罐类型或 T-Pot 功能都受支持。另请注意,默认情况下,macOS 和 Windows 防火墙会阻止远程访问,因此测试仅限于主机。对于生产环境,建议在 [Linux](#choose-your-distro) 上运行 T-Pot。
要启动并运行,只需按照以下步骤操作: 1. 为 [macOS](https://docs.docker.com/desktop/install/mac-install/) 或 [Windows](https://docs.docker.com/desktop/install/windows-install/) 安装 Docker Desktop。 2. 克隆 GitHub 存储库:`git clone https://github.com/telekom-security/tpotce`(在 Windows 中,确保代码以 `LF` 而不是 `CRLF` 签出!) 3. 转到:`cd ~/tpotce` 4. 复制 `cp compose/mac_win.yml ./docker-compose.yml` 5. 通过运行 `~/tpotce/genuser.sh` (macOS) 或 `~/tpotce/genuserwin.ps1` (Windows) 创建一个 `WEB_USER` 6. 通过将 `TPOT_OSTYPE=linux` 更改为 `mac` 或 `win` 来调整 `.env` 文件: # OSType (linux, mac, win) # 大多数 Docker 功能在 Linux 上可用 TPOT_OSTYPE=mac 7. 您必须自行确保没有端口冲突阻止 T-Pot 启动。 8. 启动 T-Pot:`docker compose up` 或 `docker compose up -d`(如果您希望 T-Pot 在后台运行)。 9. 停止 T-Pot:`CTRL-C`(如果它在前台运行)和/或 `docker compose down -v` 以完全停止 T-Pot。 ## 红帽企业 Linux Red Hat Enterprise Linux (RHEL) 是一个有些独特的情况,因为: 1. 与 Red Hat 存储库的连接取决于 Red Hat 订阅。如果目标机器未订阅,您将无法更新操作系统或安装新软件包。**如果您的服务器未附加到 Red Hat 订阅,安装将失败!** 2. Ansible 由安装程序从 RHEL 特定的存储库安装。不要尝试从上游存储库安装它。 3. Docker 从 EPEL 安装,EPEL 由安装程序脚本安装。不要尝试从社区安装程序脚本安装它。 4. T-Pot 只能在 RHEL >= 8 上成功安装。其中一个便利依赖项(`grc`)依赖于 Python 2,而 Python 2 在 RHEL 7 之后被移除。它在 T-Pot 的 RHEL 安装中被省略。 ## 安装类型 ### 标准 / Hive 使用 T-Pot Standard / Hive,所有服务、工具、蜜罐等都将安装到单个主机上,该主机也充当 Hive 端点。确保满足 [system requirements](#system-requirements)。您可以根据您的个人用例调整 `~/tpotce/docker-compose.yml`,或使用 `~/tpotce/compose/customizer.py` 创建您自己的配置,以获得量身定制的 T-Pot 体验。 安装完成后,您可以继续进行 [First Start](#first-start)。
### 分布式 T-Pot 的分布式版本至少需要两台主机 - T-Pot **Hive**,T-Pot 的标准安装(首先安装这个!), - 和一个 T-Pot **Sensor**,它将仅托管蜜罐、一些工具并将日志数据传输到 **Hive**。 - **Sensor** 在完成 [Distributed Deployment](#distributed-deployment) 中描述的 **Sensor** 安装之前不会启动。
## 卸载 T-Pot T-Pot 的卸载仅在 [supported Linux distros](#choose-your-distro) 上可用。
要卸载 T-Pot,请运行 `~/tpotce/uninstall.sh` 并按照卸载程序说明操作,您必须至少输入一次您的密码。
卸载完成后重启机器 `sudo reboot`
# 首次启动 一旦 T-Pot 安装程序成功完成,系统需要重启(`sudo reboot`)。重启后,您可以使用安装系统期间设置的用户登录系统。登录根据 [User Types](#user-types) 进行: - 用户:**[`
## 独立版首次启动 除了登录并通过 `dps` 检查所有服务和蜜罐是否正确启动,以及登录 Kibana 和/或 Geoip Attack Map 监控攻击外,没有太多其他事情可做。
## 分布式部署 ### 规划和证书 分布式部署涉及规划,因为 **T-Pot Init** 仅为 **Hive** 主机的 IP 创建自签名证书,这通常适用于简单的设置。由于 **logstash** 在连接时会检查有效证书,因此涉及 **Hive** 在多个 IP(即 RFC 1918 和公共 NAT IP)上可访问,甚至可能包含域名的分布式设置将导致连接错误,证书无法验证,因为此类设置需要具有通用名和 SAN(主题备用名称)的证书。
在部署任何传感器之前,请确保您已正确规划域名和 IP,以避免证书问题。有关更多详细信息,请参阅 [issue #1543](https://github.com/telekom-security/tpotce/issues/1543)。
根据您的 IP/域名设置调整示例,并按照命令更改 **Hive** 的证书: ``` sudo systemctl stop tpot sudo openssl req \ -nodes \ -x509 \ -sha512 \ -newkey rsa:8192 \ -keyout "$HOME/tpotce/data/nginx/cert/nginx.key" \ -out "$HOME/tpotce/data/nginx/cert/nginx.crt" \ -days 3650 \ -subj '/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd' \ -addext "subjectAltName = IP:192.168.1.200, IP:1.2.3.4, DNS:my.primary.domain, DNS:my.secondary.domain" sudo chmod 774 $HOME/tpotce/data/nginx/cert/* sudo chown tpot:tpot $HOME/tpotce/data/nginx/cert/* sudo systemctl start tpot ``` T-Pot 配置文件(`.env`)允许通过设置 `LS_SSL_VERIFICATION=none` 来禁用从 **Sensor** 到 **Hive** 的 logstash 连接的 SSL 验证。出于安全原因,这仅建议用于实验室或测试环境。
如果您选择使用由 CA(即 Let's Encrypt)签名的 **Hive** 有效证书,logstash 以及 **Sensor** 应该可以毫无问题地连接并将其日志传输到 **Hive**。 ### 部署传感器 按照安装程序的指示重启 **Sensor** 后,您可以通过登录 **Hive** 并转到 `cd ~/tpotce` 文件夹来继续分布式部署。在继续实际部署之前,请确保您理解了 [Planning and Certificates](#planning-and-certificates)。 如果您尚未生成 SSH 密钥以安全地登录到 **Sensor** 并允许 `Ansible` 在传感器上运行 playbook: 1. 运行 `ssh-keygen`,按照说明操作并将密码短语留空: Generating public/private rsa key pair. Enter file in which to save the key (/home/
### 移除传感器 在 `$HOME/tpotce/.env` 配置中识别 Sensor 上的 `TPOT_HIVE_USER` ENV(它是一个 base64 编码的字符串)。现在在 `$HOME/tpotce/.env` 配置中的 Hive 上识别 `LS_WEB_USER` ENV 中的相同字符串。删除该字符串并重启 T-Pot。
现在您可以安全地删除 Sensor 机器。 ## 社区数据提交 提供 T-Pot 是为了让每个对蜜罐感兴趣的人都能使用它。默认情况下,捕获的数据会提交到社区后端。该社区后端使用数据馈送 [Sicherheitstacho](https://sicherheitstacho.eu)。 您可以通过按照以下步骤从 `~/tpotce/docker-compose.yml` 中删除 `# Ewsposter service` 来选择退出提交: 1. 停止 T-Pot 服务:`systemctl stop tpot` 2. 打开 `~/tpotce/docker-compose.yml`:`micro ~/tpotce/docker-compose.yml` 3. 删除以下行,保存并退出 micro(`CTRL+Q`): ``` # Ewsposter 服务 ewsposter: container_name: ewsposter restart: always depends_on: tpotinit: condition: service_healthy networks: - ewsposter_local environment: - EWS_HPFEEDS_ENABLE=false - EWS_HPFEEDS_HOST=host - EWS_HPFEEDS_PORT=port - EWS_HPFEEDS_CHANNELS=channels - EWS_HPFEEDS_IDENT=user - EWS_HPFEEDS_SECRET=secret - EWS_HPFEEDS_TLSCERT=false - EWS_HPFEEDS_FORMAT=json image: ${TPOT_REPO}/ewsposter:${TPOT_VERSION} pull_policy: ${TPOT_PULL_POLICY} volumes: - ${TPOT_DATA_PATH}:/data - ${TPOT_DATA_PATH}/ews/conf/ews.ip:/opt/ewsposter/ews.ip ``` 4. 启动 T-Pot 服务:`systemctl start tpot` 鼓励不要禁用数据提交,因为这是社区方法的主要目的——众所周知 **分享就是关爱** 😍
## 选择加入 HPFEEDS 数据提交 作为选择加入,可以与第三方 HPFEEDS 代理共享 T-Pot 数据。 1. 按照 [here](#community-data-submission) 的说明停止 T-Pot 服务并打开 `~/tpotce/docker-compose.yml`。 2. 向下滚动到 `ewsposter` 部分并根据需要调整 HPFEEDS 设置。 3. 如果您需要添加 CA 证书,请将其添加到 `~/tpotce/data/ews/conf` 并设置 `EWS_HPFEEDS_TLSCERT=/data/ews/conf/
# 远程访问和工具 可以通过 SSH(在 **`tcp/64295`** 上)远程访问您的主机/T-Pot,并且 T-Pot 附带了一些服务和工具,使您的一些研究任务变得更加轻松。
## SSH 根据 [User Types](#user-types),您可以通过 SSH 登录以访问命令行:`ssh -l
## T-Pot 落地页 根据 [User Types](#user-types),您可以通过浏览器从 `https://
## Kibana 仪表板 在 T-Pot 落地页上,只需点击 `Kibana`,您将被转发到 Kibana。您可以从各种为 T-Pot 支持的蜜罐量身定制的仪表板和可视化中进行选择。 
## 攻击地图 在 T-Pot 落地页上,只需点击 `Attack Map`,您将被转发到攻击地图。由于攻击地图 Web 套接字,您可能需要重新输入 `
## Cyberchef 在 T-Pot 落地页上,只需点击 `Cyberchef`,您将被转发到 Cyberchef。 
## Elasticvue 在 T-Pot 落地页上,只需点击 `Elasticvue`,您将被转发到 Elasticvue。 
## Spiderfoot 在 T-Pot 落地页上,只需点击 `Spiderfoot`,您将被转发到 Spiderfoot。 
# 配置 ## T-Pot 配置文件 T-Pot 提供了一个配置文件,不仅为 docker 服务(即蜜罐和工具)提供变量,还为 docker compose 环境提供变量。配置文件隐藏在 `~/tpoce/.env` 中。还有一个示例文件(`env.example`),其中包含默认配置。
在首次启动之前,请运行 `~/tpotce/genuser.sh` 或按照 [here](#add-users-to-nginx-t-pot-webui) 中的说明手动设置 `WEB_USER`。 ## 自定义 T-Pot 蜜罐和服务 在 `~/tpotce/compose` 中,您将找到调整 T-Pot Standard / Hive 安装所需的一切: ``` customizer.py llm.yml mac_win.yml mini.yml mobile.yml sensor.yml standard.yml tarpit.yml tpot_services.yml ``` `.yml` 文件是 docker compose 文件,每个文件代表一组不同的蜜罐和工具,其中 `tpot_services.yml` 是 `customizer.py` 用于创建自定义 docker compose 文件的模板。
要激活 compose 文件,请按照以下步骤操作: 1. 使用 `systemctl stop tpot` 停止 T-Pot。 2. 复制 docker compose 文件 `cp ~/tpotce/compose/
# 维护 T-Pot 旨在实现低维护。由于几乎所有内容都通过 docker 镜像提供,您基本上只需让它运行即可。我们将定期升级 docker 镜像以降低被入侵的风险;但是,您应该仔细阅读本节。
如果更新失败,提出问题或讨论将有助于将来改进,但提供的解决方案将***始终***是执行***全新安装***,因为我们根本***无法***为丢失的数据提供任何支持!
## 常规更新 T-Pot 的安全性取决于 [supported Linux distro images](#choose-your-distro) 提供的更新。确保查看操作系统文档并确保操作系统定期安装更新。默认情况下(`~/tpotce/.env`)`TPOT_PULL_POLICY=always` 将确保每次 T-Pot 启动时,docker 都会检查新的 docker 镜像并在创建容器之前下载它们。
## 更新脚本 T-Pot 版本通过 GitHub 提供,可以使用 `~/tpotce/update.sh` 拉取。
***如果您对 T-Pot 配置文件进行了任何相关更改,请务必先创建备份!***
***更新可能会产生不可预见的后果。请为机器或对您工作最有价值的文件创建备份!***
更新脚本将 ... - ***无情地***覆盖本地更改以与 T-Pot 主分支同步 - 创建 `~/tpotce` 文件夹的完整备份 - 更新 `~/tpotce` 中的所有文件以与 T-Pot 主分支同步 - 从 `~/tpotce/data/ews/conf` 和 T-Pot 配置(`~/tpotce/.env`)恢复您的自定义 `ews.cfg`。 ## 每日重启 默认情况下,T-Pot 将添加每日重启,包括一些清理工作。您可以使用 `sudo crontab -e` 调整此行 ``` #Ansible: T-Pot Daily Reboot 42 2 * * * bash -c 'systemctl stop tpot.service && docker container prune -f; docker image prune -f; docker volume prune -f; /usr/sbin/shutdown -r +1 "T-Pot Daily Reboot"' ``` ## 已知问题 以下问题是已知的,只需按照描述的步骤解决即可。
### Docker 镜像下载失败 前一段时间 Docker 引入了下载 [rate limits](https://docs.docker.com/docker-hub/download-rate-limit/#:~:text=Docker%20Hub%20limits%20the%20number,pulls%20per%206%20hour%20period.)。如果您经常通过单个或共享 IP 下载 Docker 镜像,则 IP 地址可能已耗尽 Docker 下载速率限制。登录您的 Docker 帐户以扩展速率限制。 ``` sudo su - docker login ``` ### T-Pot 网络故障 T-Pot 设计为仅在具有单个 NIC 的机器上运行。T-Pot 将尝试获取具有默认路由的接口,但是不能保证这总是会成功。最好在只有单个 NIC 的机器上使用 T-Pot。 ## 启动 T-Pot T-Pot 服务在每次重启时自动启动和停止(根据安装期间在 `sudo crontab -l` 中设置的设置,每天发生一次)。
如果您想手动启动 T-Pot 服务,可以通过 `systemctl start tpot` 进行,并通过 `dpsw` 观察容器的启动。
## 停止 T-Pot T-Pot 服务在每次重启时自动启动和停止(根据安装期间在 `sudo crontab -l` 中设置的设置,每天发生一次)。
如果您想手动停止 T-Pot 服务,可以通过 `systemctl stop tpot` 进行,并通过 `dpsw` 观察容器的关闭。
## T-Pot 数据文件夹 来自蜜罐、工具和 T-Pot 相关服务的所有持久日志文件都存储在 `~/tpotce/data` 中。这包括未传输到 Elastic Stack 的收集工件。
## 日志持久化 所有日志数据存储在 [T-Pot Data Folder](#t-pot-data-folder) 中,并将根据 T-Pot 配置文件 `~/tpotce/.env` 中设置的 `TPOT_PERSISTENCE_CYCLES=<1-999>` 的循环数进行持久化。默认为 30。
Elasticsearch 索引由 `tpot` 索引生命周期策略处理,可以直接在 Kibana 中调整(确保选中“Include managed system policies”)。 
默认情况下,`tpot` 索引生命周期策略将索引保留 30 天。这在存储和速度之间良好的平衡。但是,您可以根据需要调整策略。 
## 恢复出厂设置 存储在 [T-Pot Data Folder](#t-pot-data-folder) 中的所有日志数据(当然,Elasticsearch 索引除外)可以通过运行 `clean.sh` 擦除。 有时事情可能无法修复,将 T-Pot 重置为出厂默认设置从未如此简单(确保输入 `cd ~/tpotce`)。 1. 使用 `systemctl stop tpot` 停止 T-Pot。 2. 将 `~/tpotce/data` 文件夹移动/备份到安全的地方(这是可选的,以防万一)。 3. 使用 `sudo rm -rf ~/tpotce/data` 删除 `~/tpotce/data` 文件夹。 4. 将 T-Pot 重置为上次获取的提交: ``` cd ~/tpotce/ git reset --hard ``` 5. 现在您可以运行 `~/tpotce/install.sh`。
## 显示容器 您可以通过运行 `dps` 或 `dpsw [interval]` 来显示所有与 T-Pot 相关的容器。`interval (s)` 将定期重新运行 `dps`。
## 黑洞 黑洞将以某种隐身模式运行 T-Pot,而不会有公开已知扫描器的永久访问,从而降低被暴露的可能性。虽然这当然总是猫捉老鼠的游戏,但黑洞功能是对 [known mass scanners](https://raw.githubusercontent.com/stamparm/maltrail/master/trails/static/mass_scanner.txt) 的所有请求进行空路由,同时仍通过 Suricata 捕获事件。
通过在 `~/tpotce/.env` 中设置 `TPOT_BLACKHOLE=DISABLED` 来激活该功能,然后运行 `systemctl stop tpot` 和 `systemctl start tpot` 或 `sudo reboot`。
启用此功能将大大降低攻击者的可见性,从而导致活动减少。然而,如前所述,它既不能保证完全隐身,也不能防止某些蜜罐服务的指纹识别。
## 向 Nginx 添加用户 Nginx(T-Pot WebUI)允许您根据需要添加任意数量的 `
要**添加**新用户,请运行 `~/tpotce/genuser.sh`。
要**删除**用户,请打开 `~/tpotce/.env`,找到 `WEB_USER` 并删除相应的 base64 字符串(解码:`echo
要使更改生效,您需要使用 `systemctl stop tpot` 和 `systemctl start tpot` 或 `sudo reboot` 重启 T-Pot。
## 导入和导出 Kibana 对象 某些 T-Pot 更新将要求您更新 Kibana 对象。无论是为了支持新蜜罐还是为了改进现有的仪表板或可视化。请务必先***导出***,这样您就不会丢失任何调整。 ### 导出 1. 转到 Kibana 2. 点击“Stack Management” 3. 点击“Saved Objects” 4. 点击“Export
# 故障排除 通常,T-Pot 是***按原样***提供的,不提供任何有关支持的承诺。可以提出问题和讨论,但请准备好包含基本必要信息,以便社区能够提供帮助。
## 日志 * 检查您的容器是否正常运行:`dps` * 检查您的系统资源是否未耗尽:`htop`、`docker stats` * 检查是否存在端口冲突: ``` systemctl stop tpot grc netstat -tulpen mi ~/tpotce/docker-compose.yml docker-compose -f ~/tpotce/docker-compose.yml up CTRL+C docker-compose -f ~/tpotce/docker-compose.yml down -v ``` * 检查单个容器日志:`docker logs -f
## RAM 和存储 Elastic Stack 需要 RAM,特别是 `logstash` 和 `elasticsearch`。如果 Elastic Stack 不可用、未接收任何日志或只是不断崩溃,则很可能是 RAM 或存储问题。
当 T-Pot 不断尝试重启服务/容器时,运行 `docker logs -f
# 联系方式 T-Pot 是***按原样***提供的开源软件,***不***提供任何有关支持的承诺([see the disclaimer](#disclaimer))。 如果您是安全研究人员并希望负责任地报告问题,请与我们的 [CERT](https://www.telekom.com/en/corporate-responsibility/data-protection-data-security/security/details/introducing-deutsche-telekom-cert-358316) 联系。
## 问题 请在我们的 [GitHub Issues](https://github.com/telekom-security/tpotce/issues) 上报告问题(错误),但请先 [troubleshoot](#troubleshooting)。未提供解决错误信息的问题将被关闭或转换为 [discussions](#discussions)。 先使用搜索功能,类似的问题可能已经被解决或讨论过,解决方案只需搜索一下即可。
## 讨论 一般性问题、想法、展示等可以在我们的 [GitHub Discussions](https://github.com/telekom-security/tpotce/discussions) 上提出。 使用搜索功能,类似的讨论可能已经开启,答案只需搜索一下即可。
# 许可证 构建 T-Pot 的软件使用以下许可证。
GPLv2: [conpot](https://github.com/mushorg/conpot/blob/master/LICENSE.txt), [galah](https://github.com/0x4D31/galah?tab=Apache-2.0-1-ov-file#readme), [dionaea](https://github.com/DinoTools/dionaea/blob/master/LICENSE), [honeytrap](https://github.com/armedpot/honeytrap/blob/master/LICENSE), [suricata](https://suricata.io/features/open-source/)
GPLv3: [adbhoney](https://github.com/huuck/ADBHoney), [elasticpot](https://gitlab.com/bontchev/elasticpot/-/blob/master/LICENSE), [ewsposter](https://github.com/telekom-security/ewsposter), [log4pot](https://github.com/thomaspatzke/Log4Pot/blob/master/LICENSE), [fatt](https://github.com/0x4D31/fatt/blob/master/LICENSE), [heralding](https://github.com/johnnykv/heralding/blob/master/LICENSE.txt), [ipphoney](https://gitlab.com/bontchev/ipphoney/-/blob/master/LICENSE), [miniprint](https://github.com/sa7mon/miniprint?tab=GPL-3.0-1-ov-file#readme), [redishoneypot](https://github.com/cypwnpwnsocute/RedisHoneyPot/blob/main/LICENSE), [sentrypeer](https://github.com/SentryPeer/SentryPeer/blob/main/LICENSE.GPL-3.0-only), [snare](https://github.com/mushorg/snare/blob/master/LICENSE), [tanner](https://github.com/mushorg/snare/blob/master/LICENSE)
Apache 2 许可证: [cyberchef](https://github.com/gchq/CyberChef/blob/master/LICENSE), [dicompot](https://github.com/nsmfoo/dicompot/blob/master/LICENSE), [elasticsearch](https://github.com/elasticsearch/elasticsearch/blob/master/LICENSE.txt), [go-pot](https://github.com/ryanolee/go-pot?tab=License-1-ov-file#readme), [h0neytr4p](https://github.com/pbssubhash/h0neytr4p?tab=Apache-2.0-1-ov-file#readme), [logstash](https://github.com/elasticsearch/logstash/blob/master/LICENSE.txt), [kibana](https://github.com/elasticsearch/kibana/blob/master/LICENSE.txt), [docker](https://github.com/docker/docker/blob/master/LICENSE)
MIT 许可证: [autoheal](https://github.com/willfarrell/docker-autoheal?tab=MIT-1-ov-file#readme), [beelzebub](https://github.com/mariocandela/beelzebub?tab=MIT-1-ov-file#readme), [ciscoasa](https://github.com/Cymmetria/ciscoasa_honeypot/blob/master/LICENSE), [ddospot](https://github.com/aelth/ddospot/blob/master/LICENSE), [elasticvue](https://github.com/cars10/elasticvue/blob/master/LICENSE), [glutton](https://github.com/mushorg/glutton/blob/master/LICENSE), [hellpot](https://github.com/yunginnanet/HellPot/blob/master/LICENSE), [honeyaml](https://github.com/mmta/honeyaml?tab=MIT-1-ov-file#readme), [maltrail](https://github.com/stamparm/maltrail/blob/master/LICENSE)
Unlicense: [endlessh](https://github.com/skeeto/endlessh/blob/master/UNLICENSE)
其他: [citrixhoneypot](https://github.com/MalwareTech/CitrixHoneypot#licencing-agreement-malwaretech-public-licence), [cowrie](https://github.com/cowrie/cowrie/blob/master/LICENSE.rst), [mailoney](https://github.com/awhitehatter/mailoney), [Elastic License](https://www.elastic.co/licensing/elastic-license), [Wordpot](https://github.com/gbrindisi/wordpot)
AGPL-3.0: [honeypots](https://github.com/qeeqbox/honeypots/blob/main/LICENSE)
[Public Domain (CC)](https://creativecommons.org/publicdomain/zero/1.0/): [Harvard Dataverse](https://dataverse.harvard.edu/dataverse/harvard/?q=dicom)
# 致谢 如果没有开源和我们引以为豪的开发社区,T-Pot 就不可能实现!我们的感谢不仅限于以下人员和组织:
## 以下开发者和开发社区 * [adbhoney](https://github.com/huuck/ADBHoney/graphs/contributors), [beelzebub](https://github.com/mariocandela/beelzebub/graphs/contributors), [ciscoasa](https://github.com/Cymmetria/ciscoasa_honeypot/graphs/contributors), [citrixhoneypot](https://github.com/MalwareTech/CitrixHoneypot/graphs/contributors), [conpot](https://github.com/mushorg/conpot/graphs/contributors), [cowrie](https://github.com/cowrie/cowrie/graphs/contributors), [User Types](#user-types), [dicompot](https://github.com/nsmfoo/dicompot/graphs/contributors), [dionaea](https://github.com/DinoTools/dionaea/graphs/contributors), [docker](https://github.com/docker/docker/graphs/contributors), [elasticpot](https://gitlab.com/bontchev/elasticpot/-/project_members), [elasticsearch](https://github.com/elastic/elasticsearch/graphs/contributors), [elasticvue](https://github.com/cars10/elasticvue/graphs/contributors), [endlessh](https://github.com/skeeto/endlessh/graphs/contributors), [ewsposter](https://github.com/armedpot/ewsposter/graphs/contributors), [fatt](https://github.com/0x4D31/fatt/graphs/contributors), [galah](https://github.com/0x4D31/galah/graphs/contributors), [glutton](https://github.com/mushorg/glutton/graphs/contributors), [go-pot](https://github.com/ryanolee/go-pot/graphs/contributors), [h0neytr4p](https://github.com/pbssubhash/h0neytr4p/graphs/contributors), [hellpot](https://github.com/yunginnanet/HellPot/graphs/contributors), [heralding](https://github.com/johnnykv/heralding/graphs/contributors), [honeyaml](https://github.com/mmta/honeyaml/graphs/contributors), [honeypots](https://github.com/qeeqbox/honeypots/graphs/contributors), [honeytrap](https://github.com/armedpot/honeytrap/graphs/contributors), [ipphoney](https://gitlab.com/bontchev/ipphoney/-/project_members), [kibana](https://github.com/elastic/kibana/graphs/contributors), [logstash](https://github.com/elastic/logstash/graphs/contributors), [log4pot](https://github.com/thomaspatzke/Log4Pot/graphs/contributors), [mailoney](https://github.com/awhitehatter/mailoney), [maltrail](https://github.com/stamparm/maltrail/graphs/contributors), [medpot](https://github.com/schmalle/medpot/graphs/contributors), [miniprint](https://github.com/sa7mon/miniprint/graphs/contributors), [p0f](http://lcamtuf.coredump.cx/p0f3/), [redishoneypot](https://github.com/cypwnpwnsocute/RedisHoneyPot/graphs/contributors), [sentrypeer](https://github.com/SentryPeer/SentryPeer/graphs/contributors), [spiderfoot](https://github.com/smicallef/spiderfoot), [snare](https://github.com/mushorg/snare/graphs/contributors), [tanner](https://github.com/mushorg/tanner/graphs/contributors), [suricata](https://github.com/OISF/suricata/graphs/contributors), [wordpot](https://github.com/gbrindisi/wordpot)
## **以下公司和组织** * [docker](https://www.docker.com/), [elastic.io](https://www.elastic.co/), [honeynet project](https://www.honeynet.org/)
## **当然还有加入社区的 ***您***!**
# 评价 我们迄今为止收到的最好的反馈之一来自 Conpot 开发者之一:
***“[...] 我强烈推荐 T-Pot,它……它不仅仅是一把瑞士军刀……它更像是一名装备着瑞士军刀的瑞士士兵。坐在坦克里。一辆瑞士坦克。[...]”***
来自 @robcowart([ElastiFlow](https://github.com/robcowart/elastiflow) 的创建者):
***“#TPot 是组合得最好的交钥匙蜜罐解决方案之一。对于任何想要分析和了解恶意行为者的行为及其对组织构成的威胁的人来说,它是必备的。”***
# 谢谢 💖
标签:AI风险缓解, Azure OpenAI, Beacon Object File, BOF, ChatGPT, CISA项目, DAST, Docker, Docker‑Compose, Elastic Stack, GUI应用, IDS, IPS, IP 地址批量处理, JA3, Kibana, Linux, LLM评估, Metaprompt, Ollama, Process Hacker, Promptflow, Rust语言, T-Pot, 云安全, 代理服务器, 入侵检测, 内容过滤, 分布式系统, 占用监测, 响应大小分析, 多架构支持, 大语言模型蜜罐, 威胁情报, 威胁检测与响应, 安全防御评估, 客户端加密, 客户端加密, 密码管理, 对抗机器学习, 带宽管理, 开发者工具, 开源安全工具, 恶意软件分析, 攻击可视化, 日志分析, 日志审计, 树莓派, 欺骗防御, 流量重放, 渗透测试, 版权保护, 生成式AI安全, 用户界面自定义, 系统提示词, 红蓝对抗, 网络安全, 虚拟机, 蜜罐平台, 请求拦截, 负责任AI, 资产管理, 越狱测试, 逆向工具, 逆向工程平台, 隐私保护, 高危端口监控