Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
canarytokens-docker — Docker 配置,用于快速搭建你自己的 Canarytokens。 | Kitploit
工具/GitHubGitHub/thinkst/canarytokens-docker
防御工具网络安全入侵检测事件响应
GitHubthinkst/canarytokens-docker

canarytokens-docker

Docker 配置,用于快速搭建你自己的 Canarytokens。

查看仓库
65811924天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Dockerized Canarytokens

由 Thinkst Applied Research 出品

概述

Canarytokens 可帮助您跟踪网络上的活动和操作。

如果您遇到任何问题,请查看我们的常见问题解答,或创建一个 issue,我们会尽快回复您。

目录

  • 行为准则
  • 前提条件
  • 迁移到 v3
  • 设置(在 Ubuntu 中)
  • 持久化数据
  • 如何启用 HTTPS
  • 为您的 Canarytokens 站点启用基本身份验证
  • 有哪些新功能?
  • 常见问题
  • 贡献

行为准则

本项目及所有参与者均受行为准则的约束。参与即表示您同意遵守该准则。请将不当行为报告至 [email protected]。

前提条件

  • 至少一个域名。如果您想启用 PDF 打开跟踪,则需要至少两个域名。
  • 面向互联网的 Docker 主机。您可以快速在 Linux 主机上安装 Docker。

迁移到 v3

  • 根据您是否使用 letsencrypt:docker compose -f docker-compose.yml down 或 docker compose -f docker-compose-letsencrypt.yml down
  • 如果您运行的是旧版本的 Docker,则需要升级。
  • docker-compose 不再有效,您需要在通过 docker compose 启动您的 Canarytokens 实例之前运行 docker network prune。Canarytokens v2 仍然可以工作。
  • 拉取最新版本的 canarytokens-docker 仓库。
  • 相应地执行:docker compose -f docker-compose.yml up -d 或 docker compose -f docker-compose-letsencrypt.yml up -d

注意:更新后的 canarytokens-docker 仓库不再包含 Canarytokens v2 的 Dockerfile,因此运行 v2 需要使用标记镜像 thinkst/canarytokens:v2_latest。我们强烈建议迁移到 v3。如果您在迁移过程中遇到问题,请联系我们。

设置(在 Ubuntu 中)

  • 启动您的 Docker 主机,并记下公网 IP。
  • 配置您的域名,使其名称服务器指向 Docker 主机的公网 IP。这需要在您的注册商处进行更改。仅更改区域文件中的 NS 记录是不够的。您需要一个指向您公网 IP 的 A 记录。
  • 克隆 Docker 设置:
root@kitploit:~
$ git clone https://github.com/thinkst/canarytokens-docker
$ cd canarytokens-docker
  • 安装 Docker compose(如果尚未安装):
root@kitploit:~
$ sudo apt-get install python3-pip python3-dev
$ sudo pip install -U docker-compose
#if this breaks with PyYAML errors, install the libyaml development package
# sudo apt-get install libyaml-dev
  • 我们分发两个用于配置的 .env 文件,即 switchboard.env.dist 和 frontend.env.dist。您需要将它们分别复制/重命名为 switchboard.env 和 frontend.env(这可以确保您拉取更改后配置不会被覆盖)。完成后,您就可以编辑它们了:
  1. 请仔细阅读您新建的两个配置文件 switchboard.env 和 frontend.env,并填写“必需设置”部分。“可选设置”对于正常工作并非必需,而且具有合理的默认值,所以如果不需要请不要更改它们。

  2. 接下来决定要使用哪个电子邮件提供商来发送警报。您需要在 mailgun、SMTP 和 sendgrid 之间做出选择。相关的必需详细信息可以在相应的 .env 文件中找到。

  3. 生成一个唯一的 WireGuard 密钥种子,以 CANARY_WG_PRIVATE_KEY_SEED 形式同时设置在 switchboard.env 和 frontend.env 中,命令如下:

root@kitploit:~
dd bs=32 count=1 if=/dev/urandom 2>/dev/null | base64
  • 以下是使用以下配置的示例文件:
    • 使用域名 example1.com、example2.com 和 example3.com(用于 PDF)通过 switchboard 触发 canarytoken

    • 使用公网 IP 1.1.1.1 作为 switchboard 触发器

    • 使用域名 'my.domain' 提供前端服务

    • 使用 Mailgun 域名 'x.y' 和 API 密钥 'zzzzzzzzzz'

    • 使用 WireGuard 密钥种子 vk/GD+frlhve/hDTTSUvqpQ/WsQtioKAri0Rt5mg7dw=

    • frontend.env

root@kitploit:~
#These domains are used for general purpose tokens
CANARY_PUBLIC_IP=1.1.1.1
CANARY_DOMAINS=example1.com,example2.com

#These domains are only used for PDF tokens
CANARY_NXDOMAINS=example3.com

#Requires a Google Cloud API key to generate an incident map on the history page with the Maps JavaScript API
CANARY_GOOGLE_API_KEY=<grab google maps api key>
LOG_FILE=frontend.log
  • switchboard.env(使用 Mailgun 发送电子邮件的示例)
root@kitploit:~
CANARY_PUBLIC_DOMAIN=mydomain.com
LOG_FILE=switchboard.log
CANARY_MAILGUN_DOMAIN_NAME=x.y
CANARY_MAILGUN_API_KEY=zzzzzzzzzz
[email protected]
CANARY_ALERT_EMAIL_FROM_DISPLAY="Example Canarytokens"
CANARY_ALERT_EMAIL_SUBJECT="Canarytoken"
CANARY_WG_PRIVATE_KEY_SEED=vk/GD+frlhve/hDTTSUvqpQ/WsQtioKAri0Rt5mg7dw=
  • 最后,下载并启动镜像:
root@kitploit:~
$ docker compose up
  • 前端和 switchboard 现在将在前台运行。前端可通过 http://example1.com/generate 访问。如果您希望在后台运行,可以使用
root@kitploit:~
$ docker compose up -d

注意:如果您只拥有一个域名,并且希望使用 PDF 令牌,您可以为 CANARY_NXDOMAINS 使用子域名。以 example.com 作为我们的域名,您可以将 CANARY_NXDOMAINS 设置为 nx.example.com。然后登录您的 DNS 管理控制台(您可以在其中编辑域名的 DNS 记录),并添加一条 nx.example.com 映射到 example.com 的 NS 记录。

持久化数据

令牌保存在一个位于 Docker 容器之外的 Redis 数据库文件中。请在 canarytokens-docker/data 目录中查找 dump.rdb。

如果您想清除所有令牌,请删除 dump.rdb。

如何启用 HTTPS

我们有一个单独的 docker-compose 文件,它(基本上)可以自动让您启动并运行一个支持 HTTPS 的 Canarytokens 服务器。 您需要执行以下操作:

  • 编辑 certbot.env。您需要提供您的域名和电子邮件地址(这些对于 certbot 的注册过程是必需的)。 例如:
root@kitploit:~
# Specify a single domain name
MY_DOMAIN_NAME=example.com

# or multiple domains names with this different key (comment out MY_DOMAIN_NAME above if you do):
# MY_DOMAIN_NAMES=example.com anotherexample.net thirdexample.org

[email protected]
  • 现在,当您想要启动服务器时,您将使用 docker compose -f docker-compose-letsencrypt.yml up,这将在前台运行服务器,以便您可以确认一切正常启动。

  • 如果一切正常,您可以按 CTRL+C,运行 docker compose -f docker-compose-letsencrypt.yml down 以回到干净状态,然后重新运行添加了 -d 的 docker compose -f docker-compose-letsencrypt.yml up -d 以在后台运行服务器(守护进程模式)

  • 请记住,使用 HTTPS 方法将使用您指定的电子邮件和域名来注册证书。您可以在此处了解 let's encrypt 过程(使用 cerbot)。该过程包括验证您是所指定域名的所有者,并向 let's encrypt 注册。

  • 存在速率限制。因此,不要频繁地启动和关闭此服务器,否则您很快就会达到 let's encrypt 证书生成限制。为避免这种情况,出于测试目的,您可以在 cerbot-nginx/start.sh 中的 ./certbot-auto 命令后添加 --staging,以测试 let's encrypt 是否会为您颁发证书。

为您的 Canarytokens 站点启用基本身份验证

如果您希望拥有一个面向公众的 canarytokens 站点,但又想通过某种基本身份验证来访问它,您可以按照以下步骤操作。

  1. git clone https://github.com/thinkst/canarytokens-docker.git
  2. 进入 nginx 文件夹:
    • 对于 HTTP:
    root@kitploit:~
    cd canarytokens-docker/nginx
    
    • 对于 HTTPS:
    root@kitploit:~
    cd canarytokens-docker/certbot-nginx
    
  3. 执行 sudo htpasswd -c .htpasswd user,其中 user 可以是您想使用的任何用户名。
  4. 执行 sudo chown <user>:<user> .htpasswd,其中 user 是本地 Linux 用户
  5. 编辑相应的 nginx.conf,并在其中添加以下内容:
root@kitploit:~
server {
    ...
    location ~* (/generate|/manage|/download|/history|/settings|/resources|/legal).* {
        auth_basic           "Basic Auth Restricted Canrytokens"; <---- ADD
        auth_basic_user_file /etc/nginx/.htpasswd;                 <---- ADD
  1. 编辑相应的 Dockerfile,并在 COPY nginx.conf ... 下面添加以下内容:
root@kitploit:~
COPY .htpasswd /etc/nginx/.htpasswd
  1. 使用以下命令重新构建镜像:
    • 对于 HTTP:
    root@kitploit:~
    docker compose build
    
    • 对于 HTTPS:
    root@kitploit:~
    docker compose -f docker-compose-letsencrypt.yml build
    

重新启动您的 Docker 容器,然后尽情享受吧!

感谢 @mamisano 指出了上述使用中的一个小问题 🙏

有哪些新功能?

我们将在这里跟踪一些新功能/新增内容,以便快速轻松地了解最近添加了哪些内容。

  • 我们已将“有哪些新功能?”移至 Github Discussions。请在此处查看。

  • 我们现在可以将错误日志发送到您选择的 webhook,希望以此提醒您或您的团队注意故障,而不是让这些错误仅仅存在于日志文件中。只需在您的 switchboard.env 文件中的 ERROR_LOG_WEBHOOK 值中提供相应的 webhook URI 即可。(2021-04-09)

  • 我们已将分发的 .env 文件重命名为 switchboard.env.dist 和 frontend.env.dist。这可以确保您从仓库拉取更改时本地配置不会被覆盖。(我们仍然使用 switchboard.env 和 frontend.env 进行配置,只是意味着新克隆的仓库需要用户复制/重命名 dist 文件)

  • 我们添加了一个额外的 switchboard.env 变量,名为 CANARY_IPINFO_API_KEY。如果您愿意,可以使用自己的 ipinfo.io API 密钥(请记住 ipinfo.io 确实提供每天最多 1000 次请求的免费额度)。

  • 我们现在支持 slack。当您提供 webhook 时,只需提供您的 slack webhook URL 即可。(感谢 @shortstack)。

  • 我们向 frontend.env 添加了一个名为 CANARY_AWSID_URL 的新环境变量,它允许您为 AWS ID 令牌指定一个私有或不同的 URL。这意味着您可以轻松地在不同账户之间切换。(2018-10-17)

  • 如果您打算构建要在具有不同架构的另一系统上运行的镜像,则可以使用 docker compose build --build-arg ARCH=<target arch>/ 构建镜像,请注意参数末尾的正斜杠。如果不包含该斜杠,镜像将无法正确构建。

常见问题

我们有一个常见问题解答

贡献

在提交拉取请求之前,请查看我们的行为准则和贡献指南文档。

我们期待您宝贵的贡献。

下载工具