
Configuración de Docker para montar rápidamente tus propios Canarytokens.
por Thinkst Applied Research
Los Canarytokens ayudan a rastrear la actividad y las acciones en tu red.
Si tienes algún problema, consulta nuestras FAQ aquí, o crea un issue e intentaremos responderte lo antes posible.
Este proyecto y todos los que participan en él se rigen por el Código de conducta. Al participar, se espera que cumplas con este código. Por favor, reporta cualquier comportamiento inaceptable a [email protected].
docker compose -f docker-compose.yml down
o docker compose -f docker-compose-letsencrypt.yml downdocker-compose ya no funciona, y necesitarás ejecutar docker network prune antes de levantar tu instancia de Canarytokens con docker compose. Canarytokens v2 seguirá funcionando.canarytokens-docker.docker compose -f docker-compose.yml up -d
o docker compose -f docker-compose-letsencrypt.yml up -dNB: El repositorio actualizado canarytokens-docker ya no incluye el Dockerfile para Canarytokens v2, por lo que para ejecutarlo se requiere usar la imagen etiquetada thinkst/canarytokens:v2_latest. Recomendamos encarecidamente migrar a v3. Por favor, contáctanos si tienes problemas con la migración.
$ 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
#si esto falla con errores de PyYAML, instala el paquete de desarrollo libyaml
# sudo apt-get install libyaml-dev
switchboard.env.dist y frontend.env.dist. Deberás copiarlos/renombrarlos a switchboard.env y frontend.env respectivamente (esto garantiza que tu configuración no se pierda si descargas cambios). Una vez hecho esto, puedes editarlos:Revisa ambos archivos de configuración recién creados, switchboard.env y frontend.env, y completa la sección Required Settings. Las Optional Settings no son necesarias para el funcionamiento y tienen valores predeterminados sensatos, así que no las cambies a menos que sea necesario.
A continuación, decide qué proveedor de correo quieres usar para enviar alertas. Deberás elegir entre mailgun, SMTP y sendgrid. Los detalles requeridos correspondientes se encuentran en el archivo .env correspondiente.
Genera una única semilla de clave WireGuard para establecerla como CANARY_WG_PRIVATE_KEY_SEED tanto en switchboard.env como en frontend.env con el comando:
dd bs=32 count=1 if=/dev/urandom 2>/dev/null | base64
los dominios example1.com, example2.com y example3.com (PDFs) para los disparadores de canarytoken a través de switchboard
la IP pública 1.1.1.1 para los disparadores de switchboard
el dominio 'my.domain' para servir el frontend
el nombre de dominio de Mailgun 'x.y' y la clave API 'zzzzzzzzzz'
la semilla de clave WireGuard vk/GD+frlhve/hDTTSUvqpQ/WsQtioKAri0Rt5mg7dw=
frontend.env
#Estos dominios se usan para tokens de propósito general
CANARY_PUBLIC_IP=1.1.1.1
CANARY_DOMAINS=example1.com,example2.com
#Estos dominios se usan solo para tokens PDF
CANARY_NXDOMAINS=example3.com
#Requiere una clave de API de Google Cloud para generar un mapa de incidentes en la página de historial con la API de Google Maps JavaScript
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: Si solo posees un dominio y te gustaría usar tokens PDF, puedes usar subdominios para CANARY_NXDOMAINS. Usando example.com como dominio, puedes establecer CANARY_NXDOMAINS a nx.example.com. Luego inicia sesión en tu consola de administración de DNS (donde puedes editar los registros DNS de tu dominio) y agrega un registro NS de nx.example.com que apunte a example.com.
Los tokens se guardan en un archivo de base de datos Redis que existe fuera de los contenedores Docker. Busca dump.rdb en el directorio canarytokens-docker/data.
Si quieres borrar todos tus tokens, elimina dump.rdb.
Tenemos un archivo docker-compose separado que automatizará (en su mayoría) la puesta en marcha de un servidor de Canarytokens con HTTPS. Necesitarás hacer lo siguiente:
certbot.env. Deberás proporcionar tu dominio y dirección de correo electrónico (son necesarios para el proceso de registro de certbot).
Ej.:# 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]
Ahora, cuando quieras levantar tu servidor, usarás docker compose -f docker-compose-letsencrypt.yml up, lo que ejecutará el
servidor en primer plano para que puedas asegurarte de que todo se inicia correctamente.
Si todo está funcionando, es posible que quieras presionar CTRL+C, ejecutar docker compose -f docker-compose-letsencrypt.yml down para tener un estado limpio, y luego volver a ejecutar docker compose -f docker-compose-letsencrypt.yml up -d con el agregado -d para ejecutar el servidor en segundo plano (en modo demonio).
Ten en cuenta que usar el método HTTPS utilizará el correo electrónico y el nombre de dominio que especificaste para registrar el certificado. Puedes leer sobre el proceso de Let's Encrypt (usando certbot) aquí. El proceso implica verificar que eres el propietario del dominio que has especificado y registrarte con Let's Encrypt.
HAY UN LÍMITE DE TASA. Así que no levantes y bajes este servidor constantemente, de lo contrario alcanzarás rápidamente el límite de generación de certificados de Let's Encrypt. Para evitar esto, con fines de prueba puedes agregar --staging al comando ./certbot-auto en cerbot-nginx/start.sh, lo que probará si Let's Encrypt te otorga el certificado.
Puedes seguir estos pasos si deseas tener un sitio de canarytokens de cara al público pero te gustaría tener algo de autenticación básica para acceder a él.
git clone https://github.com/thinkst/canarytokens-docker.gitcd canarytokens-docker/nginx
cd canarytokens-docker/certbot-nginx
sudo htpasswd -c .htpasswd user donde user puede ser cualquier nombre de usuario que quieras usar.sudo chown <user>:<user> .htpasswd donde user es el usuario local de Linux.nginx.conf correspondiente yserver {
...
location ~* (/generate|/manage|/download|/history|/settings|/resources|/legal).* {
auth_basic "Basic Auth Restricted Canrytokens"; <---- ADD
auth_basic_user_file /etc/nginx/.htpasswd; <---- ADD
Dockerfile correspondiente y agrega debajo de COPY nginx.conf ...COPY .htpasswd /etc/nginx/.htpasswd
docker compose build
docker compose -f docker-compose-letsencrypt.yml build
reinicia tus contenedores Docker, ¡y a disfrutar!
Gracias, @mamisano por detectar un problema tonto con lo anterior 🙏
Vamos a registrar algunas características/adiciones nuevas aquí para que sea rápido y fácil ver lo que se ha añadido recientemente.
hemos movido el "What's new?" a Github Discussions. Míralo aquí.
ahora tenemos la capacidad de enviar registros de errores a un webhook de tu elección, con la esperanza de alertarte
a ti o a tu equipo sobre los fallos, en lugar de que estos errores solo vivan en un archivo de registro.
Simplemente proporciona la URI del webhook correspondiente en el valor ERROR_LOG_WEBHOOK de tu archivo switchboard.env. (2021-04-09)
hemos renombrado los archivos .env distribuidos a switchboard.env.dist y frontend.env.dist. Esto garantiza que tu configuración
local no se pierda cuando descargas cambios del repositorio. (Todavía usamos switchboard.env y frontend.env
para la configuración, solo significa que las nuevas copias del repositorio requieren que los usuarios copien/renombren los archivos dist).
hemos añadido una variable extra en switchboard.env llamada CANARY_IPINFO_API_KEY. Esto te permite usar tu clave de API de ipinfo.io si
lo deseas (ten en cuenta que ipinfo.io tiene un nivel gratuito de hasta 1000 solicitudes al día).
ahora tenemos soporte para Slack. Cuando proporciones un webhook, simplemente proporciona la URL de tu webhook de Slack. (Gracias a @shortstack).
hemos añadido una nueva variable de entorno a frontend.env llamada CANARY_AWSID_URL que te permite especificar una URL privada o
diferente para el token de AWS ID. Esto significa que puedes cambiar fácilmente entre cuentas. (2018-10-17)
si tienes la intención de construir la imagen para ejecutarla en otro sistema con una arquitectura diferente, puedes construir las imágenes con
docker compose build --build-arg ARCH=<target arch>/, ten en cuenta la barra diagonal al final del argumento. La imagen no se construirá
correctamente si esto no se incluye.
Tenemos una FAQ aquí
Por favor, revisa nuestros documentos de Código de conducta y Contribuciones antes de enviar una pull request.
Esperamos con interés tus valiosas contribuciones.