
Configurazione Docker per configurare rapidamente i tuoi Canarytokens.
di Thinkst Applied Research
I Canarytokens aiutano a tracciare l'attività e le azioni sulla tua rete.
Se hai problemi, consulta le nostre FAQ qui, oppure apri una segnalazione e cercheremo di risponderti il prima possibile.
Questo progetto e tutti coloro che vi partecipano sono disciplinati dal Codice di Condotta. Partecipando, ti impegni a rispettare questo codice. Segnala comportamenti inaccettabili a [email protected].
docker compose -f docker-compose.yml down
oppure docker compose -f docker-compose-letsencrypt.yml downdocker-compose non funziona più e dovrai eseguire docker network prune prima di avviare la tua istanza Canarytokens con docker compose. Canarytokens v2 funzionerà comunque.canarytokens-docker.docker compose -f docker-compose.yml up -d
oppure docker compose -f docker-compose-letsencrypt.yml up -dNB: il repo canarytokens-docker aggiornato non contiene più il Dockerfile per Canarytokens v2, quindi per eseguirlo è necessario usare l'immagine taggata thinkst/canarytokens:v2_latest. Consigliamo vivamente di passare alla v3. Contattaci se stai lottando con la migrazione.
$ 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 e frontend.env.dist. Dovrai copiarli/rinominarli rispettivamente in switchboard.env e frontend.env (questo garantisce che la tua configurazione non venga cancellata se esegui un pull delle modifiche). Una volta fatto, puoi modificarli:Esamina entrambi i file di configurazione appena creati, switchboard.env e frontend.env, e compila la sezione Required Settings. Le Optional Settings non sono necessarie per il funzionamento e hanno valori predefiniti sensati, quindi non modificarle se non serve.
Decidi poi quale provider email vuoi usare per inviare gli avvisi. Dovrai scegliere tra mailgun, SMTP e sendgrid. I dettagli richiesti si trovano nel file .env corrispondente.
Genera un singolo seed univoco per la chiave WireGuard da impostare come CANARY_WG_PRIVATE_KEY_SEED sia in switchboard.env che in frontend.env con il comando:
dd bs=32 count=1 if=/dev/urandom 2>/dev/null | base64
i domini example1.com, example2.com ed example3.com (PDF) per i trigger di canarytoken tramite switchboard
l'IP pubblico 1.1.1.1 per i trigger di switchboard
il dominio 'my.domain' per servire il frontend
il nome di dominio Mailgun 'x.y' e la chiave API 'zzzzzzzzzz'
il seed della chiave 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
NOTA: se possiedi un solo dominio e desideri usare i token PDF, puoi usare sottodomini per CANARY_NXDOMAINS. Usando example.com come dominio, puoi impostare CANARY_NXDOMAINS su nx.example.com. Poi accedi alla console del tuo gestore DNS (dove puoi modificare i record DNS del dominio) e aggiungi un record NS di nx.example.com che mappa a example.com.
I token vengono salvati in un file di database Redis che si trova al di fuori dei contenitori Docker. Cerca dump.rdb nella directory canarytokens-docker/data.
Se vuoi cancellare tutti i tuoi token, elimina dump.rdb.
Abbiamo un file docker-compose separato che automatizzerà (in gran parte) la messa in funzione di un server Canarytokens con HTTPS. Dovrai fare quanto segue:
certbot.env. Dovrai fornire il tuo dominio e il tuo indirizzo email (sono necessari per il processo di registrazione di certbot).
Es.:# 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]
Quando vuoi avviare il server, userai docker compose -f docker-compose-letsencrypt.yml up che eseguirà il server in primo piano così puoi assicurarti che tutto si avvii correttamente.
Se tutto è in esecuzione, potresti voler premere CTRL+C, eseguire docker compose -f docker-compose-letsencrypt.yml down per tornare a uno stato pulito, e poi rieseguire docker compose -f docker-compose-letsencrypt.yml up -d con l'aggiunta di -d per eseguire il server in background (in modalità daemon)
Tieni presente che usando il metodo HTTPS verranno usati l'email e il nome di dominio specificati per registrare il certificato. Puoi leggere il processo di let's encrypt (usando certbot) qui. Il processo prevede la verifica che tu sia il proprietario del dominio specificato e la registrazione presso let's encrypt.
C'È UN LIMITE DI FREQUENZA. Quindi non continuare ad avviare e fermare questo server, altrimenti raggiungerai rapidamente il limite di generazione dei certificati let's encrypt. Per evitarlo, a scopo di test puoi aggiungere --staging al comando ./certbot-auto in cerbot-nginx/start.sh per verificare se let's encrypt ti rilascia il certificato.
Puoi seguire questi passaggi se desideri avere un sito canarytokens pubblico ma vuoi una qualche autenticazione di base per accedervi.
git clone https://github.com/thinkst/canarytokens-docker.gitcd canarytokens-docker/nginx
cd canarytokens-docker/certbot-nginx
sudo htpasswd -c .htpasswd user dove user può essere qualsiasi nome utente tu voglia usare.sudo chown <user>:<user> .htpasswd dove user è l'utente Linux localenginx.conf appropriato eserver {
...
location ~* (/generate|/manage|/download|/history|/settings|/resources|/legal).* {
auth_basic "Basic Auth Restricted Canrytokens"; <---- ADD
auth_basic_user_file /etc/nginx/.htpasswd; <---- ADD
Dockerfile appropriato e aggiungi sotto COPY nginx.conf ...COPY .htpasswd /etc/nginx/.htpasswd
docker compose build
docker compose -f docker-compose-letsencrypt.yml build
riavvia i tuoi contenitori Docker e goditi il risultato!
Grazie, @mamisano per aver individuato uno sciocco problema usando quanto sopra 🙏
Terremo traccia qui di alcune nuove funzionalità/aggiunte, così da rendere rapido e semplice vedere cosa è stato aggiunto di recente.
abbiamo spostato la sezione "Cosa c'è di nuovo?" su Github Discussions. Dai un'occhiata qui.
ora abbiamo la possibilità di inviare i log degli errori a un webhook di tua scelta, sperando di avvisare te o il tuo team dei guasti, invece di lasciare che questi errori vivano solo in un file di log.
È sufficiente fornire l'URI del webhook corrispondente nel valore ERROR_LOG_WEBHOOK del tuo file switchboard.env. (2021-04-09)
abbiamo rinominato i file .env distribuiti in switchboard.env.dist e frontend.env.dist. Questo garantisce che la tua configurazione locale non venga cancellata quando esegui il pull delle modifiche dal repo. (Usiamo ancora switchboard.env e frontend.env per la configurazione; significa solo che i nuovi cloni del repo richiedono agli utenti di copiare/rinominare i file dist)
abbiamo aggiunto una variabile extra in switchboard.env chiamata CANARY_IPINFO_API_KEY. Questa ti permette di usare la tua API key di ipinfo.io se lo desideri (tieni presente che ipinfo.io ha un piano gratuito fino a 1000 richieste al giorno).
ora abbiamo il supporto Slack. Quando fornisci un webhook, basta inserire l'URL del tuo webhook Slack. (Grazie a @shortstack).
abbiamo aggiunto una nuova variabile d'ambiente a frontend.env chiamata che ti permette di specificare un URL privato o diverso per il token AWS ID. Questo significa che puoi cambiare facilmente account. (2018-10-17)
Abbiamo una FAQ qui
Ti invitiamo a consultare i documenti Codice di Condotta e Contribuire prima di inviare una pull request.
Non vediamo l'ora di ricevere i tuoi preziosi contributi.
CANARY_AWSID_URLse intendi costruire l'immagine per eseguirla su un altro sistema con architettura diversa, puoi costruire le immagini con
docker compose build --build-arg ARCH=<target arch>/, notando la barra in avanti alla fine dell'argomento. L'immagine non verrà costruita correttamente se questa non viene inclusa.