由 Thinkst Applied Research 出品
Canarytokens 可帮助您跟踪网络上的活动和操作。
如果您遇到任何问题,请查看我们的常见问题解答,或创建一个 issue,我们会尽快回复您。
本项目及所有参与者均受行为准则的约束。参与即表示您同意遵守该准则。请将不当行为报告至 [email protected]。
docker compose -f docker-compose.yml down
或 docker compose -f docker-compose-letsencrypt.yml downdocker-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。如果您在迁移过程中遇到问题,请联系我们。
$ git clone https://github.com/thinkst/canarytokens-docker
$ cd canarytokens-docker
$ 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(这可以确保您拉取更改后配置不会被覆盖)。完成后,您就可以编辑它们了:请仔细阅读您新建的两个配置文件 switchboard.env 和 frontend.env,并填写“必需设置”部分。“可选设置”对于正常工作并非必需,而且具有合理的默认值,所以如果不需要请不要更改它们。
接下来决定要使用哪个电子邮件提供商来发送警报。您需要在 mailgun、SMTP 和 sendgrid 之间做出选择。相关的必需详细信息可以在相应的 .env 文件中找到。
生成一个唯一的 WireGuard 密钥种子,以 CANARY_WG_PRIVATE_KEY_SEED 形式同时设置在 switchboard.env 和 frontend.env 中,命令如下:
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
#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
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=
$ docker compose up
$ 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。
我们有一个单独的 docker-compose 文件,它(基本上)可以自动让您启动并运行一个支持 HTTPS 的 Canarytokens 服务器。 您需要执行以下操作:
certbot.env。您需要提供您的域名和电子邮件地址(这些对于 certbot 的注册过程是必需的)。
例如:# 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 站点,但又想通过某种基本身份验证来访问它,您可以按照以下步骤操作。
git clone https://github.com/thinkst/canarytokens-docker.gitcd canarytokens-docker/nginx
cd canarytokens-docker/certbot-nginx
sudo htpasswd -c .htpasswd user,其中 user 可以是您想使用的任何用户名。sudo chown <user>:<user> .htpasswd,其中 user 是本地 Linux 用户nginx.conf,并在其中添加以下内容:server {
...
location ~* (/generate|/manage|/download|/history|/settings|/resources|/legal).* {
auth_basic "Basic Auth Restricted Canrytokens"; <---- ADD
auth_basic_user_file /etc/nginx/.htpasswd; <---- ADD
Dockerfile,并在 COPY nginx.conf ... 下面添加以下内容:COPY .htpasswd /etc/nginx/.htpasswd
docker compose build
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>/ 构建镜像,请注意参数末尾的正斜杠。如果不包含该斜杠,镜像将无法正确构建。
我们有一个常见问题解答
我们期待您宝贵的贡献。