
تهيئة Docker لإعداد Canarytokens الخاصة بك بسرعة.
بواسطة Thinkst Applied Research
تساعد Canarytokens في تتبّع النشاط والإجراءات على شبكتك.
إذا كانت لديك أي مشكلات، يرجى الاطلاع على الأسئلة الشائعة هنا، أو إنشاء issue وسنحاول الرد عليك في أقرب وقت ممكن.
يخضع هذا المشروع وكل من يشارك فيه لـمدونة قواعد السلوك. بمشاركتك، يُتوقع منك الالتزام بهذه المدونة. يرجى الإبلاغ عن أي سلوك غير مقبول إلى [email protected].
docker compose -f docker-compose.yml down
أو docker compose -f docker-compose-letsencrypt.yml downdocker-compose يعمل، وستحتاج إلى تشغيل docker network prune قبل تشغيل نسختك من Canarytokens باستخدام docker compose. لا تزال 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
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 tokens، يمكنك استخدام نطاقات فرعية لـCANARY_NXDOMAINS. باستخدام example.com كنطاق، يمكنك تعيين CANARY_NXDOMAINS إلى nx.example.com. ثم سجّل الدخول إلى وحدة تحكم مدير DNS (حيث يمكنك تعديل سجلات DNS لنطاقك) وأضف سجل NS باسم nx.example.com يُوجَّه إلى example.com.
يتم حفظ tokens في ملف قاعدة بيانات Redis موجود خارج حاويات Docker. ابحث عن dump.rdb في دليل canarytokens-docker/data.
إذا أردت مسح جميع tokens، احذف 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 لتشغيل الخادم في الخلفية (بوضع الخفي/daemon)
يرجى مراعاة أن استخدام طريقة HTTPS سيعتمد على البريد الإلكتروني الذي حددته واسم النطاق لتسجيل الشهادة. يمكنك القراءة عن عملية let's encrypt (باستخدام cerbot) هنا. تتضمن العملية التحقق من أنك مالك النطاق الذي حددته وتسجيلك لدى 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 لرصده مشكلة بسيطة عند استخدام ما ورد أعلاه 🙏
سنقوم بتتبّع بعض الميزات/الإضافات الجديدة هنا بحيث يكون من السهل والسريع رؤية ما تمت إضافته مؤخرًا.
انتقلنا بـ"What's new?" إلى مناقشات Github. ألقِ نظرة هنا.
أصبح لدينا الآن القدرة على إرسال سجلات الأخطاء إلى webhook من اختيارك، على أمل تنبيهك أنت أو فريقك إلى حالات الفشل بدلاً من أن تبقى هذه الأخطاء في ملف سجل فقط. ما عليك سوى توفير عنوان URI الخاص بـ webhook في قيمة 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. عند توفير webhook، كل ما عليك هو توفير عنوان URL الخاص بـ Slack webhook. (بفضل @shortstack).
أضفنا متغيّر بيئة جديدًا إلى frontend.env باسم CANARY_AWSID_URL يسمح لك بتحديد عنوان URL خاص أو مختلف لرمز AWS ID. وهذا يعني أنه يمكنك التبديل بسهولة بين الحسابات. (2018-10-17)
لدينا أسئلة شائعة هنا
يرجى الاطلاع على وثيقتي مدونة قواعد السلوك والمساهمة قبل تقديم طلب سحب (pull request).
نتطلع إلى مساهماتكم القيّمة.
إذا كنت تنوي بناء الصورة لتشغيلها على نظام آخر ببنية معمارية مختلفة، يمكنك بناء الصور باستخدام docker compose build --build-arg ARCH=<target arch>/، مع ملاحظة الشرطة المائلة للأمام في نهاية الوسيط. لن يتم بناء الصورة بشكل صحيح إذا لم يتم تضمين ذلك.