
Docker-Konfiguration, um schnell deine eigenen Canarytokens einzurichten.
von Thinkst Applied Research
Canarytokens helfen dabei, Aktivitäten und Aktionen in Ihrem Netzwerk zu verfolgen.
Wenn Sie Probleme haben, schauen Sie bitte in unsere FAQ hier oder erstellen Sie ein Issue, und wir werden versuchen, uns so schnell wie möglich bei Ihnen zu melden.
Dieses Projekt und alle, die daran teilnehmen, unterliegen dem Verhaltenskodex. Mit Ihrer Teilnahme verpflichten Sie sich, diesen Kodex einzuhalten. Bitte melden Sie inakzeptables Verhalten an [email protected].
docker compose -f docker-compose.yml down
oder docker compose -f docker-compose-letsencrypt.yml downdocker-compose funktioniert nicht mehr, und Sie müssen docker network prune ausführen, bevor Sie Ihre Canarytokens-Instanz mit docker compose starten. Canarytokens v2 funktioniert weiterhin.canarytokens-docker-Repos.docker compose -f docker-compose.yml up -d
oder docker compose -f docker-compose-letsencrypt.yml up -dNB: Das aktualisierte canarytokens-docker-Repo enthält kein Dockerfile mehr für Canarytokens v2. Um es auszuführen, muss daher das getaggte Image thinkst/canarytokens:v2_latest verwendet werden. Wir empfehlen dringend, auf v3 umzusteigen. Bitte kontaktieren Sie uns, wenn Sie mit der Migration zu kämpfen haben.
$ 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-Dateien, die für die Konfiguration verwendet werden, nämlich switchboard.env.dist und frontend.env.dist. Sie müssen sie in switchboard.env bzw. frontend.env kopieren/umbenennen (dadurch wird sichergestellt, dass Ihre Konfiguration nicht überschrieben wird, wenn Sie Änderungen ziehen). Danach können Sie sie bearbeiten:Bitte gehen Sie beide neu erstellten Konfigurationsdateien switchboard.env und frontend.env durch und füllen Sie den Abschnitt Required Settings aus. Die Optional Settings sind für den Betrieb nicht erforderlich und haben sinnvolle Standardwerte. Ändern Sie sie daher nicht, wenn Sie es nicht müssen.
Entscheiden Sie als Nächstes, welchen E-Mail-Anbieter Sie für den Versand von Benachrichtigungen verwenden möchten. Sie müssen sich zwischen mailgun, SMTP und sendgrid entscheiden. Die relevanten erforderlichen Details finden Sie in der entsprechenden .env-Datei.
Generieren Sie einen einzelnen eindeutigen WireGuard-Key-Seed, um ihn als CANARY_WG_PRIVATE_KEY_SEED sowohl in switchboard.env als auch in frontend.env zu setzen, mit dem Befehl:
dd bs=32 count=1 if=/dev/urandom 2>/dev/null | base64
die Domains example1.com, example2.com und example3.com (PDFs) für Canarytoken-Trigger über das Switchboard
die öffentliche IP 1.1.1.1 für die Switchboard-Trigger
die Domain 'my.domain', um das Frontend bereitzustellen
den Mailgun-Domainnamen 'x.y' und API-Schlüssel 'zzzzzzzzzz'
den WireGuard-Key-Seed 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
HINWEIS: Wenn Sie nur eine Domain besitzen und PDF-Tokens verwenden möchten, können Sie Subdomains für CANARY_NXDOMAINS verwenden. Wenn wir example.com als unsere Domain verwenden, können Sie CANARY_NXDOMAINS auf nx.example.com setzen. Melden Sie sich dann in Ihrer DNS-Manager-Konsole an (wo Sie die DNS-Einträge Ihrer Domain bearbeiten können) und fügen Sie einen NS-Eintrag von nx.example.com mit Verweis auf example.com hinzu.
Die Tokens werden in einer Redis-Datenbankdatei gespeichert, die sich außerhalb der Docker-Container befindet. Suchen Sie nach dump.rdb im Verzeichnis canarytokens-docker/data.
Wenn Sie alle Ihre Tokens löschen möchten, löschen Sie dump.rdb.
Wir haben eine separate docker-compose-Datei, die es Ihnen (größtenteils) automatisiert ermöglicht, einen Canarytokens-Server mit HTTPS zu betreiben. Sie müssen Folgendes tun:
certbot.env. Sie müssen Ihre Domain und E-Mail-Adresse angeben (diese sind für den Registrierungsprozess von Certbot erforderlich).
Z.B.# 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]
Wenn Sie Ihren Server nun starten möchten, verwenden Sie docker compose -f docker-compose-letsencrypt.yml up, wodurch der Server im Vordergrund läuft, sodass Sie sicherstellen können, dass alles ordnungsgemäß startet.
Wenn alles läuft, können Sie STRG+C drücken, docker compose -f docker-compose-letsencrypt.yml down ausführen, um einen sauberen Zustand zu erhalten, und dann docker compose -f docker-compose-letsencrypt.yml up -d mit dem zusätzlichen -d erneut ausführen, um den Server im Hintergrund (im Daemon-Modus) zu betreiben.
Bitte beachten Sie, dass die HTTPS-Methode die von Ihnen angegebene E-Mail-Adresse und den Domainnamen verwendet, um das Zertifikat zu registrieren. Sie können den Lets-Encrypt-Prozess (mit Certbot) hier nachlesen. Der Prozess umfasst die Überprüfung, dass Sie der Eigentümer der von Ihnen angegebenen Domain sind, und die Registrierung bei Lets Encrypt.
ES GIBT EIN RATENLIMIT. Bringen Sie diesen Server also nicht ständig hoch und runter, sonst erreichen Sie schnell das Limit für die Zertifikatserstellung von Lets Encrypt. Um dies zu vermeiden, können Sie für Testzwecke --staging zum Befehl ./certbot-auto in cerbot-nginx/start.sh hinzufügen, um zu testen, ob Lets Encrypt Ihnen das Zertifikat ausstellt.
Sie können diese Schritte befolgen, wenn Sie eine öffentlich erreichbare Canarytokens-Website betreiben möchten, diese jedoch mit einer einfachen Basisauthentifizierung schützen wollen.
git clone https://github.com/thinkst/canarytokens-docker.gitcd canarytokens-docker/nginx
cd canarytokens-docker/certbot-nginx
sudo htpasswd -c .htpasswd user wobei user ein beliebiger Benutzername sein kann, den Sie verwenden möchten.sudo chown <user>:<user> .htpasswd wobei user der lokale Linux-Benutzer istnginx.conf undserver {
...
location ~* (/generate|/manage|/download|/history|/settings|/resources|/legal).* {
auth_basic "Basic Auth Restricted Canrytokens"; <---- ADD
auth_basic_user_file /etc/nginx/.htpasswd; <---- ADD
Dockerfile und fügen Sie unterhalb von COPY nginx.conf ... hinzu:COPY .htpasswd /etc/nginx/.htpasswd
docker compose build
docker compose -f docker-compose-letsencrypt.yml build
Starten Sie Ihre Docker-Container neu, und viel Spaß!
Danke, @mamisano, für das Finden eines dummen Problems bei der obigen Vorgehensweise 🙏
Wir werden hier einige neue Funktionen/Ergänzungen festhalten, damit Sie schnell und einfach sehen können, was kürzlich hinzugefügt wurde.
Wir sind mit „Was gibt es Neues?“ zu GitHub Discussions umgezogen. Schauen Sie hier vorbei.
Wir haben jetzt die Möglichkeit, Fehlerprotokolle an einen Webhook Ihrer Wahl zu senden, um Sie oder Ihr Team hoffentlich auf Fehler aufmerksam zu machen, anstatt dass diese Fehler nur in einer Protokolldatei landen. Geben Sie einfach die entsprechende Webhook-URI im Wert ERROR_LOG_WEBHOOK in Ihrer switchboard.env-Datei an. (2021-04-09)
Wir haben die verteilten .env-Dateien in switchboard.env.dist und frontend.env.dist umbenannt. Dadurch wird sichergestellt, dass Ihre lokale Konfiguration nicht überschrieben wird, wenn Sie Änderungen aus dem Repo ziehen. (Wir verwenden weiterhin switchboard.env und frontend.env für die Konfiguration; es bedeutet nur, dass neue Klone des Repos von den Benutzern das Kopieren/Umbenennen der dist-Dateien erfordern)
Wir haben eine zusätzliche switchboard.env-Variable namens CANARY_IPINFO_API_KEY hinzugefügt. Damit können Sie bei Bedarf Ihren ipinfo.io-API-Schlüssel verwenden (beachten Sie, dass ipinfo.io ein kostenloses Kontingent von bis zu 1000 Anfragen pro Tag hat).
Wir unterstützen jetzt Slack. Wenn Sie einen Webhook angeben, müssen Sie lediglich Ihre Slack-Webhook-URL angeben. (Dank an @shortstack).
Wir haben eine neue Umgebungsvariable zu frontend.env hinzugefügt, genannt , mit der Sie eine private oder andere URL für das AWS-ID-Token angeben können. So können Sie einfach zwischen Konten wechseln. (2018-10-17)
Wir haben eine FAQ hier
Bitte lesen Sie unsere Dokumente Verhaltenskodex und Mitwirken, bevor Sie einen Pull-Request einreichen.
Wir freuen uns auf Ihre wertvollen Beiträge.
CANARY_AWSID_URLWenn Sie das Image für ein anderes System mit anderer Architektur erstellen möchten, können Sie die Images mit docker compose build --build-arg ARCH=<target arch>/ bauen. Beachten Sie den Schrägstrich am Ende des Arguments. Ohne diesen wird das Image nicht korrekt erstellt.