
Configuração Docker para configurar rapidamente seus próprios Canarytokens.
por Thinkst Applied Research
Os Canarytokens ajudam a rastrear atividades e ações na sua rede.
Se você tiver algum problema, consulte nossa FAQ aqui, ou crie uma issue e tentaremos responder o mais rápido possível.
Este projeto e todos que participam dele são regidos pelo Código de Conduta. Ao participar, você deve respeitar este código. Por favor, relate comportamentos inaceitáveis para [email protected].
docker compose -f docker-compose.yml down
ou docker compose -f docker-compose-letsencrypt.yml downdocker-compose não funciona mais, e você precisará executar docker network prune antes de subir sua instância Canarytokens com docker compose. O Canarytokens v2 ainda funcionará.canarytokens-docker.docker compose -f docker-compose.yml up -d
ou docker compose -f docker-compose-letsencrypt.yml up -dNB: O repositório atualizado canarytokens-docker não possui mais o Dockerfile para o Canarytokens v2, portanto, executá-lo requer usar a imagem marcada thinkst/canarytokens:v2_latest. Recomendamos fortemente a migração para a v3. Entre em contato conosco se estiver enfrentando problemas com a migração.
$ 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. Você precisará copiá-los/renomeá-los para switchboard.env e frontend.env respectivamente (isso garante que sua configuração não seja apagada se você baixar alterações). Depois de fazer isso, você pode editá-los:Revise ambos os arquivos de configuração recém-criados, switchboard.env e frontend.env, e preencha a seção Required Settings. As Optional Settings não são necessárias para o funcionamento e têm padrões sensatos, então não as altere se não precisar.
Em seguida, decida qual provedor de e-mail você deseja usar para enviar alertas. Você terá que escolher entre mailgun, SMTP e sendgrid. Os detalhes necessários relevantes podem ser encontrados no arquivo .env correspondente.
Gere uma única seed de chave WireGuard exclusiva para definir como CANARY_WG_PRIVATE_KEY_SEED tanto em switchboard.env quanto em frontend.env com o comando:
dd bs=32 count=1 if=/dev/urandom 2>/dev/null | base64
os domínios example1.com, example2.com e example3.com (PDFs) para gatilhos de canarytoken via switchboard
o IP público 1.1.1.1 para os gatilhos do switchboard
o domínio 'my.domain' para servir o frontend
o Nome de Domínio Mailgun 'x.y' e a Chave de API 'zzzzzzzzzz'
a seed de chave 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 você possui apenas um domínio e gostaria de usar tokens PDF, você pode usar subdomínios para CANARY_NXDOMAINS. Usando example.com como nosso domínio, você pode definir CANARY_NXDOMAINS como nx.example.com. Então, entre no console do seu gerenciador de DNS (onde você pode editar os registros DNS do seu domínio) e adicione um registro NS de nx.example.com mapeando para example.com.
Os tokens são salvos em um arquivo de banco de dados Redis que existe fora dos contêineres Docker. Procure por dump.rdb no diretório canarytokens-docker/data.
Se você quiser apagar todos os seus tokens, exclua dump.rdb.
Temos um arquivo docker-compose separado que automatizará (principalmente) a criação e execução de um servidor Canarytokens com HTTPS. Você precisará fazer o seguinte:
certbot.env. Você precisará fornecer seu domínio e endereço de e-mail (eles são necessários para o processo de registro do certbot).
Ex.:# 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]
Agora, quando você quiser iniciar seu servidor, use docker compose -f docker-compose-letsencrypt.yml up, que executará o
servidor em primeiro plano para que você possa garantir que tudo seja iniciado corretamente.
Se tudo estiver funcionando, você pode querer pressionar CTRL+C, executar docker compose -f docker-compose-letsencrypt.yml down para obter um estado limpo, e então executar novamente docker compose -f docker-compose-letsencrypt.yml up -d com o -d adicionado para executar o servidor em segundo plano (no modo daemon)
Tenha em mente que usar o método HTTPS usará o e-mail que você especificou e o nome de domínio para registrar o certificado. Você pode ler sobre o processo let's encrypt (usando cerbot) aqui. O processo envolve verificar que você é o proprietário do domínio que você especificou e registrar você no let's encrypt.
HÁ UM LIMITE DE TAXA. Portanto, não fique subindo e descendo este servidor, caso contrário você atingirá rapidamente o limite de geração de certificados let's encrypt. Para evitar isso, para fins de teste, você pode adicionar --staging ao comando ./certbot-auto em cerbot-nginx/start.sh, o que testará se o let's encrypt fornece o certificado.
Você pode seguir estes passos se deseja ter um site canarytokens público, mas gostaria de alguma autenticação básica para acessá-lo.
git clone https://github.com/thinkst/canarytokens-docker.gitcd canarytokens-docker/nginx
cd canarytokens-docker/certbot-nginx
sudo htpasswd -c .htpasswd user onde user pode ser qualquer nome de usuário que você queira usar.sudo chown <user>:<user> .htpasswd onde user é o usuário linux local.nginx.conf apropriado 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 apropriado e adicione abaixo de COPY nginx.conf ...COPY .htpasswd /etc/nginx/.htpasswd
docker compose build
docker compose -f docker-compose-letsencrypt.yml build
reinicie seus contêineres docker e aproveite!
Obrigado, @mamisano por pegar um problema bobo usando o acima 🙏
Vamos acompanhar alguns novos recursos/adições aqui para que seja rápido e fácil ver o que foi adicionado recentemente.
movemos o "What's new?" para as Discussões do Github. Confira aqui.
agora temos a capacidade de enviar logs de erros para um webhook de sua escolha, esperamos que isso alerte você ou sua equipe sobre as falhas, em vez de esses erros viverem apenas em um arquivo de log. Basta fornecer o URI do webhook correspondente no valor ERROR_LOG_WEBHOOK no seu arquivo switchboard.env. (2021-04-09)
renomeamos os arquivos .env distribuídos para switchboard.env.dist e frontend.env.dist. Isso garante que sua configuração local não seja apagada quando você baixar alterações do repositório. (Ainda usamos switchboard.env e frontend.env para a configuração; isso apenas significa que novos clones do repositório exigem que os usuários copiem/renomeiem os arquivos dist)
adicionamos um switchboard.env extra chamado CANARY_IPINFO_API_KEY. Isso permite que você use sua chave de API ipinfo.io se quiser (lembre-se de que o ipinfo.io tem um plano gratuito de até 1000 solicitações por dia).
agora temos suporte a Slack. Quando você fornece um webhook, basta fornecer a URL do webhook do Slack. (Obrigado a @shortstack).
adicionamos uma nova variável de ambiente ao frontend.env chamada CANARY_AWSID_URL que permite especificar uma URL privada ou diferente para o token de ID da AWS. Isso significa que você pode alternar facilmente entre contas. (2018-10-17)
se você pretende construir a imagem para ser executada em outro sistema com arquitetura diferente, você pode construir as imagens com docker compose build --build-arg ARCH=<target arch>/, observando a barra no final do argumento. A imagem não será construída corretamente se isso não for incluído.
Temos uma FAQ aqui
Por favor, consulte nossos documentos Código de Conduta e Contribuição antes de enviar um pull request.
Esperamos ansiosamente suas valiosas contribuições.