
Конфигурация Docker для быстрого развёртывания собственных Canarytokens.
от Thinkst Applied Research
Canarytokens помогают отслеживать активность и действия в вашей сети.
Если у вас возникли проблемы, пожалуйста, ознакомьтесь с нашим FAQ здесь или создайте issue, и мы постараемся ответить вам как можно скорее.
Этот проект и все, кто участвует в нём, регулируются Кодексом поведения. Участвуя, вы обязуетесь соблюдать этот кодекс. Пожалуйста, сообщайте о неприемлемом поведении на [email protected].
docker compose -f docker-compose.yml down
или docker compose -f docker-compose-letsencrypt.yml downdocker-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. Пожалуйста, свяжитесь с нами, если у вас возникли проблемы с миграцией.
$ 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, которые будут использоваться для настройки, а именно switchboard.env.dist и frontend.env.dist. Вам нужно скопировать/переименовать их в switchboard.env и frontend.env соответственно (это гарантирует, что ваша конфигурация не будет потеряна при загрузке изменений). После этого вы можете отредактировать их:Пожалуйста, просмотрите оба ваших новых файла конфигурации, switchboard.env и frontend.env, и заполните раздел Required Settings. Раздел Optional Settings не обязателен для работы и имеет разумные значения по умолчанию, поэтому не меняйте их, если в этом нет необходимости.
Затем решите, какого почтового провайдера вы хотите использовать для отправки уведомлений. Вам нужно выбрать между mailgun, SMTP и sendgrid. Соответствующие необходимые детали можно найти в соответствующем файле .env.
Сгенерируйте единственный уникальный ключ-зерно WireGuard, чтобы установить его как CANARY_WG_PRIVATE_KEY_SEED в обоих файлах switchboard.env и frontend.env, с помощью команды:
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
#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
ПРИМЕЧАНИЕ: Если у вас только один домен, и вы хотите использовать 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.
У нас есть отдельный файл docker-compose, который автоматизирует (в основном) запуск сервера Canarytokens с HTTPS. Вам нужно сделать следующее:
certbot.env. Вам нужно указать ваш домен и адрес электронной почты (они необходимы для процесса регистрации certbot).
Например:# 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, но хотите ограничить доступ с помощью базовой аутентификации.
git clone https://github.com/thinkst/canarytokens-docker.gitcd canarytokens-docker/nginx
cd canarytokens-docker/certbot-nginx
sudo htpasswd -c .htpasswd user, где user — это любое имя пользователя, которое вы хотите использовать.sudo chown <user>:<user> .htpasswd, где user — это локальный пользователь Linux.nginx.conf иserver {
...
location ~* (/generate|/manage|/download|/history|/settings|/resources|/legal).* {
auth_basic "Basic Auth Restricted Canrytokens"; <---- ADD
auth_basic_user_file /etc/nginx/.htpasswd; <---- ADD
Dockerfile и добавьте после COPY nginx.conf ...COPY .htpasswd /etc/nginx/.htpasswd
docker compose build
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 здесь
Пожалуйста, ознакомьтесь с нашими документами Кодекс поведения и Участие в разработке перед отправкой pull request.
Мы с нетерпением ждём ваших ценных вкладов.
если вы собираетесь собрать образ для запуска на другой системе с другой архитектурой, вы можете собрать образы с помощью
docker compose build --build-arg ARCH=<target arch>/, обратите внимание на косую черту в конце аргумента. Образ не соберётся
правильно, если она не будет включена.