Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
canarytokens-docker — Конфигурация Docker для быстрого развёртывания собственных Canarytokens. | Kitploit
Инструменты/GitHubGitHub/thinkst/canarytokens-docker
Оборонительные ИнструментыСетевая безопасностьОбнаружение ВторженийРеагирование на Инциденты
GitHubthinkst/canarytokens-docker

canarytokens-docker

Конфигурация Docker для быстрого развёртывания собственных Canarytokens.

Репозиторий
65811941 месяц назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Dockerized Canarytokens

от Thinkst Applied Research

Обзор

Canarytokens помогают отслеживать активность и действия в вашей сети.

Если у вас возникли проблемы, пожалуйста, ознакомьтесь с нашим FAQ здесь или создайте issue, и мы постараемся ответить вам как можно скорее.

Содержание

  • Кодекс поведения
  • Предварительные требования
  • Переход на v3
  • Настройка (в Ubuntu)
  • Сохранение данных
  • Как включить HTTPS
  • Включение базовой аутентификации для вашего сайта Canarytokens
  • Что нового?
  • FAQ
  • Участие в разработке

Кодекс поведения

Этот проект и все, кто участвует в нём, регулируются Кодексом поведения. Участвуя, вы обязуетесь соблюдать этот кодекс. Пожалуйста, сообщайте о неприемлемом поведении на [email protected].

Предварительные требования

  • Как минимум одно доменное имя. Если вы хотите включить отслеживание открытия PDF-файлов, нужно как минимум два домена.
  • Docker-хост с доступом в интернет. Вы можете быстро установить Docker на Linux-хост.

Переход на v3

  • В зависимости от того, используете ли вы letsencrypt: docker compose -f docker-compose.yml down или docker compose -f docker-compose-letsencrypt.yml down
  • Если вы используете более старую версию Docker, вам потребуется обновить её.
  • docker-compose больше не работает, и перед запуском вашего экземпляра Canarytokens с помощью docker compose необходимо выполнить docker network prune. Canarytokens v2 по-прежнему будет работать.
  • Скачайте последнюю версию репозитория canarytokens-docker.
  • И соответственно: docker compose -f docker-compose.yml up -d или docker compose -f docker-compose-letsencrypt.yml up -d

Примечание: в обновлённом репозитории canarytokens-docker больше нет Dockerfile для Canarytokens v2, поэтому для его запуска необходимо использовать образ с тегом thinkst/canarytokens:v2_latest. Мы настоятельно рекомендуем перейти на v3. Пожалуйста, свяжитесь с нами, если у вас возникли проблемы с миграцией.

Настройка (в Ubuntu)

  • Запустите ваш Docker-хост и запишите публичный IP-адрес.
  • Настройте ваши домены так, чтобы их серверы имён указывали на публичный IP-адрес Docker-хоста. Это требует изменения у вашего регистратора. Простого изменения NS-записей в зонном файле недостаточно. Вам понадобится A-запись вашего домена, указывающая на ваш публичный IP-адрес.
  • Клонируйте Docker-настройку:
root@kitploit:~
$ git clone https://github.com/thinkst/canarytokens-docker
$ cd canarytokens-docker
  • Установите Docker compose (если он ещё не установлен):
root@kitploit:~
$ 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, которые будут использоваться для настройки, а именно switchboard.env.dist и frontend.env.dist. Вам нужно скопировать/переименовать их в switchboard.env и frontend.env соответственно (это гарантирует, что ваша конфигурация не будет потеряна при загрузке изменений). После этого вы можете отредактировать их:
  1. Пожалуйста, просмотрите оба ваших новых файла конфигурации, switchboard.env и frontend.env, и заполните раздел Required Settings. Раздел Optional Settings не обязателен для работы и имеет разумные значения по умолчанию, поэтому не меняйте их, если в этом нет необходимости.

  2. Затем решите, какого почтового провайдера вы хотите использовать для отправки уведомлений. Вам нужно выбрать между mailgun, SMTP и sendgrid. Соответствующие необходимые детали можно найти в соответствующем файле .env.

  3. Сгенерируйте единственный уникальный ключ-зерно WireGuard, чтобы установить его как CANARY_WG_PRIVATE_KEY_SEED в обоих файлах switchboard.env и frontend.env, с помощью команды:

root@kitploit:~
dd bs=32 count=1 if=/dev/urandom 2>/dev/null | base64
  • Вот примеры файлов для настройки, в которой используются:
    • домены example1.com, example2.com и example3.com (для PDF) для срабатываний canarytoken через switchboard

    • публичный IP-адрес 1.1.1.1 для срабатываний switchboard

    • домен 'my.domain' для обслуживания фронтенда

    • доменное имя Mailgun 'x.y' и API-ключ 'zzzzzzzzzz'

    • ключ-зерно WireGuard vk/GD+frlhve/hDTTSUvqpQ/WsQtioKAri0Rt5mg7dw=

    • frontend.env

root@kitploit:~
#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
  • switchboard.env (Пример использования Mailgun для электронной почты)
root@kitploit:~
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=
  • Наконец, загрузите и запустите образы:
root@kitploit:~
$ docker compose up
  • Фронтенд и switchboard теперь будут работать в режиме переднего плана. Фронтенд доступен по адресу http://example1.com/generate. Если вы хотите запустить их в фоновом режиме, вы можете использовать
root@kitploit:~
$ docker compose up -d

ПРИМЕЧАНИЕ: Если у вас только один домен, и вы хотите использовать PDF-токены, вы можете использовать поддомены для CANARY_NXDOMAINS. Используя example.com в качестве вашего домена, вы можете установить CANARY_NXDOMAINS в nx.example.com. Затем войдите в консоль вашего DNS-менеджера (где вы можете редактировать DNS-записи вашего домена) и добавьте NS-запись nx.example.com, указывающую на example.com.

Сохранение данных

Токены сохраняются в файле базы данных Redis, который находится вне Docker-контейнеров. Ищите dump.rdb в каталоге canarytokens-docker/data.

Если вы хотите удалить все свои токены, удалите dump.rdb.

Как включить HTTPS

У нас есть отдельный файл docker-compose, который автоматизирует (в основном) запуск сервера Canarytokens с HTTPS. Вам нужно сделать следующее:

  • Отредактируйте certbot.env. Вам нужно указать ваш домен и адрес электронной почты (они необходимы для процесса регистрации certbot). Например:
root@kitploit:~
# 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 для перехода в чистое состояние, а затем снова выполнить docker compose -f docker-compose-letsencrypt.yml up -d с добавленным -d для запуска сервера в фоновом режиме (в режиме демона).

  • Имейте в виду, что при использовании метода HTTPS для регистрации сертификата будут использованы указанные вами адрес электронной почты и доменное имя. Вы можете прочитать о процессе Let's Encrypt (с использованием certbot) здесь. Процесс включает проверку того, что вы являетесь владельцем указанного домена, и регистрацию вас в Let's Encrypt.

  • СУЩЕСТВУЕТ ЛИМИТ ЗАПРОСОВ. Поэтому не поднимайте и не опускайте этот сервер постоянно, иначе вы быстро достигнете лимита генерации сертификатов Let's Encrypt. Чтобы избежать этого, в целях тестирования вы можете добавить --staging к команде ./certbot-auto в cerbot-nginx/start.sh, что позволит проверить, выдаёт ли Let's Encrypt вам сертификат.

Включение базовой аутентификации для вашего сайта Canarytokens

Вы можете выполнить следующие шаги, если хотите иметь общедоступный сайт canarytokens, но хотите ограничить доступ с помощью базовой аутентификации.

  1. git clone https://github.com/thinkst/canarytokens-docker.git
  2. Перейдите в папку nginx:
    • для HTTP:
    root@kitploit:~
    cd canarytokens-docker/nginx
    
    • для HTTPS:
    root@kitploit:~
    cd canarytokens-docker/certbot-nginx
    
  3. sudo htpasswd -c .htpasswd user, где user — это любое имя пользователя, которое вы хотите использовать.
  4. sudo chown <user>:<user> .htpasswd, где user — это локальный пользователь Linux.
  5. отредактируйте соответствующий nginx.conf и
root@kitploit:~
server {
    ...
    location ~* (/generate|/manage|/download|/history|/settings|/resources|/legal).* {
        auth_basic           "Basic Auth Restricted Canrytokens"; <---- ADD
        auth_basic_user_file /etc/nginx/.htpasswd;                 <---- ADD
  1. отредактируйте соответствующий Dockerfile и добавьте после COPY nginx.conf ...
root@kitploit:~
COPY .htpasswd /etc/nginx/.htpasswd
  1. пересоберите образы, используя:
    • для HTTP:
    root@kitploit:~
    docker compose build
    
    • для HTTPS:
    root@kitploit:~
    docker compose -f docker-compose-letsencrypt.yml build
    

перезапустите ваши docker-контейнеры и наслаждайтесь!

Спасибо, @mamisano, за обнаружение глупой проблемы при использовании вышеуказанного 🙏

Что нового?

Мы будем отслеживать некоторые новые функции и дополнения здесь, чтобы было быстро и легко увидеть, что было недавно добавлено.

  • мы перенесли раздел "Что нового?" в Github Discussions. Ознакомьтесь с ним здесь.

  • теперь у нас есть возможность отправлять журналы ошибок в вебхук по вашему выбору, надеясь предупредить вас или вашу команду о сбоях, а не только хранить эти ошибки в файле журнала. Просто укажите соответствующий URI вебхука в значении ERROR_LOG_WEBHOOK в вашем файле switchboard.env. (2021-04-09)

  • мы переименовали распространяемые файлы .env в switchboard.env.dist и frontend.env.dist. Это гарантирует, что ваша локальная конфигурация не будет потеряна при загрузке изменений из репозитория. (Мы по-прежнему используем switchboard.env и frontend.env для конфигурации, просто новые клоны репозитория требуют, чтобы пользователи скопировали/переименовали dist-файлы)

  • мы добавили дополнительную переменную switchboard.env под названием CANARY_IPINFO_API_KEY. Это позволяет использовать ваш API-ключ ipinfo.io, если вы хотите (имейте в виду, что у ipinfo.io есть бесплатный тариф до 1000 запросов в день).

  • теперь у нас есть поддержка slack. Когда вы указываете вебхук, вы просто вводите URL вашего slack-вебхука. (Спасибо @shortstack).

  • мы добавили новую переменную окружения в frontend.env под названием CANARY_AWSID_URL, которая позволяет указать частный или другой URL для токена AWS ID. Это означает, что вы можете легко переключаться между аккаунтами. (2018-10-17)

FAQ

У нас есть FAQ здесь

Участие в разработке

Пожалуйста, ознакомьтесь с нашими документами Кодекс поведения и Участие в разработке перед отправкой pull request.

Мы с нетерпением ждём ваших ценных вкладов.

Скачать инструмент
  • если вы собираетесь собрать образ для запуска на другой системе с другой архитектурой, вы можете собрать образы с помощью docker compose build --build-arg ARCH=<target arch>/, обратите внимание на косую черту в конце аргумента. Образ не соберётся правильно, если она не будет включена.