
تنبيه موزّع للجميع!
Securitybot هو تنفيذ مفتوح المصدر لروبوت محادثة للتنبيهات الموزعة، كما هو موصوف في منشور مدونة لـ Ryan Huber. التنبيهات الموزعة تحسن كفاءة المراقبة لفريق الأمان لديك ويمكن أن تساعدك في اكتشاف الحوادث الأمنية بشكل أسرع وأكثر كفاءة. لقد حاولنا إزالة جميع خصائص Dropbox من هذا الكود بحيث يكون إعداد نسختك الخاصة سهلاً إلى حد ما. يجب أن يكون من السهل نسبياً تثبيت المتطلبات المدرجة في حاوية virtualenv/Docker والسماح للروبوت بالقيام بعمله. نوفر أيضاً واجهة أمامية بسيطة للتنقل عبر قاعدة البيانات، واستقبال استدعاءات API، وإنشاء تنبيهات مخصصة للروبوت للتواصل مع الأشخاص حسب الرغبة.
هذا الدليل يشرح إعداد نسخة من Securitybot بأسرع ما يمكن دون تعقيدات.
سنقوم بتوصيله بـ Slack و SQL و Duo.
عند الانتهاء، سيكون لدينا ملف يشبه main.py.
ستحتاج إلى قاعدة بيانات تُسمى securitybot على خادم MySQL في مكان ما.
لقد قدمنا دالة تُسمى init_sql موجودة في securitybot/sql.py والتي ستقوم بتهيئة SQL.
حالياً تم إعدادها لاستخدام المضيف localhost مع المستخدم root وبدون كلمة مرور.
ستحتاج إلى تغيير هذا لأنه بالطبع ليست هذه هي الطريقة التي تم بها إعداد قاعدة البيانات الخاصة بك.
ستحتاج إلى رمز مميز لتتمكن من التكامل مع Slack.
أفضل ما يمكن فعله هو إنشاء مستخدم بوت واستخدام ذلك الرمز المميز لـ Securitybot.
ستحتاج أيضاً إلى إعداد قناة سيقوم الروبوت بالإبلاغ فيها عندما يحدد المستخدمون أنهم لم يقوموا بإجراء ما.
ابحث عن المعرف الفريد لتلك القناة (سيبدو مشابهاً لـ C123456) وتأكد من دعوة مستخدم الروبوت إلى تلك القناة، وإلا فلن يتمكن من إرسال الرسائل.
بالنسبة لـ Duo، ستحتاج إلى إنشاء نسخة Auth API، قم بتسميتها باسم ذكي، وتتبع مفتاح التكامل، المفتاح السري، وURI نقطة نهاية Auth API.
ألق نظرة على main.py المقدم في الدليل الجذر للحصول على مثال حول كيفية استخدام كل هذه.
استبدل جميع المتغيرات العالمية بما وجدته أعلاه.
إذا تم إنشاء كل ما يلي بنجاح، فيجب أن يكون Securitybot قيد التشغيل.
لاختباره، أرسل رسالة إلى مستخدم الروبوت المخصص له وقل hi.
لاختبار عملية التعامل مع تنبيه، أرسل test لاختبار الروبوت.
تم تصميم Securitybot ليكون معيارياً قدر الإمكان. هذا يعني أنه من الممكن استبدال أنظمة الدردشة، موفري المصادقة الثنائية، ومصادر بيانات التنبيه بسهولة. النظام الوحيد المدمج بشكل وثيق مع الروبوت هو SQL، ولكن إضافة دعم لقواعد بيانات أخرى لا ينبغي أن يكون صعباً. وجود قاعدة بيانات يسمح بأن تكون التنبيهات ثابتة ويعني أن الروبوت لا يفقد (الكثير من) الحالة إذا كان هناك فشل مؤقت.
يقوم الروبوت نفسه بمجموعة صغيرة من الوظائف:
المراسلة، المصادقة الثنائية، وإدارة التنبيهات يتم توفيرها بواسطة وحدات قابلة للتكوين، وتضاف إلى الروبوت عند التهيئة.
يعالج الروبوت الرسائل الواردة كأوامر.
يتم تحليل الأوامر ومعالجتها في الفئة Securitybot ويتم توفير الأوامر نفسها في مكانين.
يتم تعريف وظائف الأوامر في commands.py ويتم تعريف هيكلها في commands.yaml ضمن الدليل config/.
تم تصميم Securitybot ليكون متوافقاً مع مجموعة واسعة من أنظمة المراسلة.
نوفر حالياً روابط لـ Slack، ولكن لا تتردد في المساهمة بأي إضافات أخرى، مثل Gitter أو Zulip، في المشروع الرئيسي.
تصبح المراسلة ممكنة بواسطة securitybot/chat/chat.py الذي يوفر عدداً صغيراً من الوظائف للاستعلام عن المستخدمين في مجموعة مراسلة، وإرسال رسائل لهؤلاء المستخدمين، وإرسال رسائل إلى قناة/غرفة معينة.
لإضافة روابط لنظام مراسلة جديد، قم بتوريث الفئة Chat.
دعم المصادقة الثنائية يتم توفيره بواسطة auth/auth.py، الذي يغلف المصادقة الثنائية غير المتزامنة في بعض الوظائف التي تمكن من التحقق من قدرة المصادقة الثنائية، بدء جلسة المصادقة الثنائية، والاستعلام عن حالة جلسة المصادقة الثنائية.
نوفر دعم Duo Push عبر Duo Auth API، ولكن إضافة دعم لمنتج مختلف أو حل مصادقة ثنائية داخلي هو سهل مثل إنشاء فئة فرعية من Auth.
إدارة المهام يتم توفيرها بواسطة tasker/tasker.py والفئة Tasker.
بما أن التنبيهات تُسجل في قاعدة بيانات SQL، فإن الـ Tasker المقدم هو SQLTasker.
هذا يوفر دعمًا للحصول على مهام جديدة وتحديثها عبر كائنات Task فردية.
يتم التعامل مع القوائم السوداء بواسطة قاعدة بيانات SQL، والمقدمة في blacklist/blacklist.py والفئة الفرعية blacklist/sql_blacklist.py.
كائن User يوفر دعمًا لمعالجة حالة المستخدم.
نتتبع أي معلومات يعطينا إياها نظام المراسلة، لكننا في الواقع نستخدم فقط المعرف الفريد للمستخدم واسم المستخدم للاتصال بهم.
يتم تعريف التنبيهات بشكل فريد بواسطة تجزئة SHA-256 والتي تأتي من تجزئة للحدث الذي أنشأها. نفترض أن تجزئة SHA-256 عشوائية بما يكفي لعدم وجود تصادمات. إذا واجهت تصادماً في SHA-256، يرجى الاتصال بشخص ما في أقرب جامعة لك واستمتع بالشهرة والثروة التي ستجلبها لك.
يرجى سؤالنا عن الأشياء
يجب على المساهمين الالتزام بـ اتفاقية ترخيص المساهمة من Dropbox.
Copyright 2016 Dropbox, Inc.
مرخص بموجب ترخيص Apache، الإصدار 2.0 (المشار إليه باسم "الترخيص")؛ لا يجوز لك استخدام هذا الملف إلا بالامتثال للترخيص. يمكنك الحصول على نسخة من الترخيص على
http://www.apache.org/licenses/LICENSE-2.0
ما لم ينص القانون المعمول به أو تم الاتفاق عليه كتابةً، يتم توزيع البرنامج المرخص على أساس "كما هو"، بدون ضمانات أو شروط من أي نوع، سواء كانت صريحة أو ضمنية. انظر الترخيص لمعرفة الأذونات والقيود المحددة.