
独自のCanarytokensを素早くセットアップするためのDocker設定。
by Thinkst Applied Research
Canarytokens は、ネットワーク上のアクティビティと操作を追跡するのに役立ちます。
問題が発生した場合は、こちらのFAQを確認するか、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 -dNB: 更新された 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
switchboard.env.dist と frontend.env.dist を配布しています。これらをそれぞれ switchboard.env と frontend.env にコピー/リネームする必要があります(これにより、変更をプルしても設定が消去されません)。それが完了したら、それらを編集できます:新しく作成した設定ファイル switchboard.env と frontend.env の両方を確認し、Required Settings セクションを記入してください。Optional Settings は動作に必須ではなく、適切なデフォルト値が設定されているため、変更する必要がない限り変更しないでください。
次に、アラートを送信するために使用するメールプロバイダーを決定します。mailgun、SMTP、sendgrid のいずれかを選択する必要があります。関連する必須項目は、該当する .env ファイルに記載されています。
以下のコマンドで、switchboard.env と frontend.env の両方に CANARY_WG_PRIVATE_KEY_SEED として設定する単一の一意なWireGuardキーシードを生成します:
dd bs=32 count=1 if=/dev/urandom 2>/dev/null | base64
switchboard経由のcanarytokenトリガーにドメイン example1.com、example2.com、example3.com(PDF用)を使用
switchboardトリガーにパブリックIP 1.1.1.1を使用
フロントエンドを提供するドメイン '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
注: ドメインを1つしか所有しておらず、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でCanarytokensサーバーを起動して実行するための(ほとんどを)自動化する、別のdocker-composeファイルがあります。 以下の手順を実行する必要があります:
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サイトを運用したいが、アクセスにBasic認証をかけたい場合は、以下の手順に従ってください。
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 に感謝します 🙏
最近追加された機能をすぐに確認できるよう、新機能や追加事項をここに記録していきます。
"What's new?" は 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ファイルをコピー/リネームする必要があるということです)
CANARY_IPINFO_API_KEY という新しい switchboard.env 変数を追加しました。これにより、希望する場合は ipinfo.io のAPIキーを使用できます(ipinfo.io には1日最大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>/ でイメージをビルドできます。引数の末尾にあるスラッシュに注意してください。これがないとイメージは正しくビルドされません。
FAQはこちらにあります。
プルリクエストを送信する前に、行動規範 と 貢献ガイド をご確認ください。
皆様からの貴重なご貢献をお待ちしています。