
जनता के लिए वितरित अलर्टिंग!
सुरक्षाबॉट एक वितरित अलर्टिंग चैट बॉट का ओपन-सोर्स कार्यान्वयन है, जैसा कि रयान ह्यूबर के ब्लॉग पोस्ट में वर्णित है। वितरित अलर्टिंग आपकी सुरक्षा टीम की निगरानी दक्षता में सुधार करती है और आपको सुरक्षा घटनाओं को तेज़ी से और अधिक कुशलता से पकड़ने में मदद कर सकती है। हमने इस कोड से सभी ड्रॉपबॉक्स-वाद को हटाने का प्रयास किया है ताकि आपका अपना इंस्टेंस सेट करना काफी दर्द रहित हो। आवश्यक आवश्यकताओं को virtualenv/Docker कंटेनर में स्थापित करना और बस बॉट को अपना काम करने देना अपेक्षाकृत आसान होना चाहिए। हम डेटाबेस में जाने, API कॉल प्राप्त करने, और बॉट के लिए कस्टम अलर्ट बनाने के लिए एक सरल फ्रंट एंड भी प्रदान करते हैं ताकि वह इच्छानुसार लोगों तक पहुंच सके।
यह मार्गदर्शिका बिना किसी तामझाम के जितनी जल्दी हो सके सुरक्षाबॉट इंस्टेंस सेट करने के बारे में बताती है।
हम इसे Slack, SQL, और Duo से जोड़ेंगे।
एक बार हो जाने के बाद, हमारे पास एक फ़ाइल होगी जो कुछ इस तरह दिखेगी main.py।
आपको कहीं न कहीं किसी MySQL सर्वर पर securitybot नामक डेटाबेस की आवश्यकता होगी।
हमने securitybot/sql.py में स्थित init_sql नामक एक फ़ंक्शन प्रदान किया है जो SQL को प्रारंभ करेगा।
वर्तमान में यह होस्ट localhost का उपयोग करने के लिए सेट है जिसमें उपयोगकर्ता root और कोई पासवर्ड नहीं है।
आपको इसे बदलना होगा क्योंकि निश्चित रूप से आपका डेटाबेस इस तरह सेट नहीं है।
Slack के साथ एकीकृत करने में सक्षम होने के लिए आपको एक टोकन की आवश्यकता होगी।
सबसे अच्छी बात यह होगी कि एक बॉट उपयोगकर्ता बनाएं और सुरक्षाबॉट के लिए उस टोकन का उपयोग करें।
आप एक चैनल भी सेट करना चाहेंगे जिसमें बॉट रिपोर्ट करेगा जब उपयोगकर्ता निर्दिष्ट करते हैं कि उन्होंने कोई कार्रवाई नहीं की है।
उस चैनल के लिए अद्वितीय आईडी खोजें (यह C123456 जैसा दिखेगा) और बॉट उपयोगकर्ता को उस चैनल में आमंत्रित करना सुनिश्चित करें, अन्यथा वह संदेश नहीं भेज पाएगा।
Duo के लिए, आप एक Auth API इंस्टेंस बनाना चाहेंगे, इसे कुछ चतुर नाम दें, और एकीकरण कुंजी, गुप्त कुंजी, और Auth API एंडपॉइंट URI पर नज़र रखें।
इन सभी का उपयोग करने के तरीके के उदाहरण के लिए रूट निर्देशिका में प्रदान की गई main.py देखें।
सभी ग्लोबल वेरिएबल्स को आपके ऊपर मिले किसी भी चीज़ से बदलें।
यदि निम्नलिखित सभी सफलतापूर्वक उत्पन्न हो गए, तो सुरक्षाबॉट चालू और चलना चाहिए।
इसका परीक्षण करने के लिए, बॉट उपयोगकर्ता को संदेश भेजें जिसे इसे सौंपा गया है और hi कहें।
किसी अलर्ट से निपटने की प्रक्रिया का परीक्षण करने के लिए, बॉट को test संदेश भेजें।
सुरक्षाबॉट को यथासंभव मॉड्यूलर डिज़ाइन किया गया है। इसका मतलब है कि चैट सिस्टम, 2FA प्रदाताओं, और अलर्टिंग डेटा स्रोतों को आसानी से बदलना संभव है। एकमात्र सिस्टम जो बॉट के साथ कसकर एकीकृत है वह SQL है, लेकिन अन्य डेटाबेस के लिए समर्थन जोड़ना मुश्किल नहीं होना चाहिए। डेटाबेस होने से अलर्ट को स्थायी बनाया जा सकता है और इसका मतलब है कि यदि कोई क्षणिक विफलता होती है तो बॉट (बहुत अधिक) स्थिति नहीं खोता है।
बॉट स्वयं कार्यों का एक छोटा सेट करता है:
मैसेजिंग, 2FA, और अलर्ट प्रबंधन कॉन्फ़िगर करने योग्य मॉड्यूल द्वारा प्रदान किए जाते हैं, और प्रारंभिकरण पर बॉट में जोड़े जाते हैं।
बॉट इनकमिंग संदेशों को कमांड के रूप में संभालता है।
कमांड पार्सिंग और हैंडलिंग Securitybot वर्ग में की जाती है और कमांड स्वयं दो स्थानों पर प्रदान किए जाते हैं।
कमांड के लिए फ़ंक्शन commands.py में परिभाषित किए गए हैं और उनकी संरचना config/ निर्देशिका के अंतर्गत commands.yaml में परिभाषित की गई है।
सुरक्षाबॉट को विभिन्न प्रकार के मैसेजिंग सिस्टम के साथ संगत होने के लिए डिज़ाइन किया गया है।
हम वर्तमान में Slack के लिए बाइंडिंग प्रदान करते हैं, लेकिन बेझिझक किसी भी अन्य प्लगइन, जैसे Gitter या Zulip के लिए, अपस्ट्रीम में योगदान करें।
मैसेजिंग securitybot/chat/chat.py द्वारा संभव बनाई गई है जो मैसेजिंग समूह में उपयोगकर्ताओं को क्वेरी करने, उन उपयोगकर्ताओं को संदेश भेजने, और एक विशिष्ट चैनल/कक्ष में संदेश भेजने के लिए कुछ कार्य प्रदान करता है।
एक नए मैसेजिंग सिस्टम के लिए बाइंडिंग जोड़ने के लिए, Chat की उपश्रेणी बनाएं।
2FA समर्थन auth/auth.py द्वारा प्रदान किया गया है, जो async 2FA को कुछ कार्यों में लपेटता है जो 2FA क्षमता की जाँच, 2FA सत्र शुरू करने, और 2FA सत्र की स्थिति को पोल करने में सक्षम बनाता है।
हम Duo Auth API के माध्यम से Duo Push के लिए समर्थन प्रदान करते हैं, लेकिन किसी भिन्न उत्पाद या कुछ इन-हाउस 2FA समाधान के लिए समर्थन जोड़ना Auth की उपश्रेणी बनाने जितना आसान है।
कार्य प्रबंधन tasker/tasker.py और Tasker वर्ग द्वारा प्रदान किया गया है।
चूंकि अलर्ट SQL डेटाबेस में लॉग किए जाते हैं, प्रदान किया गया Tasker SQLTasker है।
यह व्यक्तिगत Task ऑब्जेक्ट के माध्यम से नए कार्यों को पकड़ने और उन्हें अपडेट करने के लिए समर्थन प्रदान करता है।
ब्लैकलिस्ट को SQL डेटाबेस द्वारा नियंत्रित किया जाता है, जो blacklist/blacklist.py और उपश्रेणी blacklist/sql_blacklist.py में प्रदान किया गया है।
User ऑब्जेक्ट उपयोगकर्ता स्थिति को संभालने के लिए समर्थन प्रदान करता है।
हम मैसेजिंग सिस्टम हमें जो भी जानकारी देता है, उसका ट्रैक रखते हैं, लेकिन वास्तव में केवल उपयोगकर्ता के अद्वितीय आईडी और उपयोगकर्ता नाम का उपयोग उनसे संपर्क करने के लिए करते हैं।
अलर्ट विशिष्ट रूप से SHA-256 हैश द्वारा पहचाने जाते हैं जो उस घटना के किसी हैश से आता है जिसने उन्हें उत्पन्न किया। हम मानते हैं कि SHA-256 हैश बिना किसी टकराव के पर्याप्त यादृच्छिक है। यदि आप SHA-256 टकराव का सामना करते हैं, तो कृपया अपने निकटतम विश्वविद्यालय में किसी से संपर्क करें और इससे होने वाली प्रसिद्धि और भाग्य का आनंद लें।
कृपया हमसे कुछ पूछें
योगदानकर्ताओं को ड्रॉपबॉक्स योगदानकर्ता लाइसेंस समझौते का पालन करना होगा।
कॉपीराइट 2016 ड्रॉपबॉक्स, इंक.
Apache License, Version 2.0 (the "License") के तहत लाइसेंस प्राप्त; आप इस फ़ाइल का उपयोग केवल लाइसेंस के अनुपालन में कर सकते हैं। आप लाइसेंस की एक प्रति प्राप्त कर सकते हैं
http://www.apache.org/licenses/LICENSE-2.0
जब तक लागू कानून द्वारा आवश्यक न हो या लिखित रूप में सहमति न हो, तब तक लाइसेंस के तहत वितरित सॉफ़्टवेयर "जैसा है" आधार पर वितरित किया जाता है, बिना किसी प्रकार की वारंटी या शर्तों के, या तो व्यक्त या निहित। लाइसेंस के तहत विशिष्ट भाषा के लिए लाइसेंस देखें।