
Db डेटाबेस मूल्यांकन उपकरण
Db डेटाबेस मूल्यांकन उपकरण
DbDat सुरक्षा का मूल्यांकन करने के लिए डेटाबेस पर अनेक जाँच करता है। जाँच की श्रेणियाँ कॉन्फ़िगरेशन, विशेषाधिकार, उपयोगकर्ता और जानकारी हैं। जाँच क्वेरी चलाकर या डेटाबेस कॉन्फ़िगरेशन फ़ाइलें पढ़कर की जाती हैं। इस उपकरण का उद्देश्य उन मुद्दों को उजागर करना है जिन पर तत्काल ध्यान देने की आवश्यकता है और उन कॉन्फ़िगरेशन सेटिंग्स की पहचान करना है जिनकी उपयुक्तता के लिए समीक्षा की जानी चाहिए। यह उपकरण किसी एप्लिकेशन में SQL इंजेक्शन कमजोरियों की पहचान करने के लिए नहीं है, इसके लिए पहले से ही अच्छे उपकरण उपलब्ध हैं (जैसे https://github.com/sqlmapproject)। साथ ही, यह उपकरण यह निर्धारित करने का प्रयास नहीं करता कि लक्ष्य डेटाबेस के संस्करण को कौन से CVE प्रभावित कर सकते हैं (लेकिन भविष्य में ऐसा कर सकता है - शायद)। बल्कि, यह उपकरण आपको कमजोर कॉन्फ़िगरेशन या एक्सेस नियंत्रण के कारण सफल SQL इंजेक्शन हमले के संभावित प्रभाव को बेहतर ढंग से समझने में मदद कर सकता है। अधिकांश जाँचें CIS (https://cisecurity.org) सुरक्षा बेंचमार्क से हैं, तो CIS को धन्यवाद! बेंचमार्क दस्तावेज़ यहां पाए जा सकते हैं: https://benchmarks.cisecurity.org/downloads/browse/index.cfm?category=benchmarks.servers.database
मैं दृढ़ता से अनुशंसा करता हूं कि आप अपने लक्ष्य डेटाबेस के लिए बेंचमार्क दस्तावेज़ डाउनलोड करें क्योंकि इसमें किए गए जाँचों के बारे में अतिरिक्त जानकारी है।
अंत में, DbDat को एक ढांचा (फ्रेमवर्क) के रूप में डिज़ाइन किया गया है जो नए प्लगइन्स और जाँचों को आसानी से बनाने में सक्षम बनाता है। सुरक्षा या यहां तक कि डेटाबेस प्रशासक समुदाय से योगदान ही इसे एक महान उपकरण बनाएगा। जाँचों का वर्तमान सेट किसी भी तरह से पूर्ण नहीं है, निश्चित रूप से और अधिक करने की आवश्यकता है। कृपया योगदान दें!
नए डेटाबेस जाँच विकसित करना
Pull requests are very welcome! जाँचें डेटाबेस प्रकार (जैसे MySQL, Oracle, MS SQL, आदि) के अनुसार प्लगइन्स फ़ोल्डर में संगठित की गई हैं। प्रत्येक जाँच एक एकल पायथन फ़ाइल है जिसके फ़ाइल नाम की शुरुआत में check_ होना चाहिए। प्रत्येक फ़ाइल में एक क्लास होती है जिसमें एक do_check विधि होती है। यह विधि जाँचों के लिए प्राथमिक तर्क है। शुरू करने का त्वरित तरीका किसी मौजूदा जाँच फ़ाइल को कॉपी करके उसे संशोधित करना है। हालाँकि, अधिक विवरण के लिए नीचे 'डिवेलपिंग प्लगइन्स' अनुभाग देखें।
etc/dbdat.conf फ़ाइल में एक कनेक्शन प्रोफ़ाइल प्रविष्टि जोड़ें।python dbdat.py -p <profile name>cd करें और python -m SimpleHTTPServer 9000 चलाएँ (या अपनी पसंद का पोर्ट नंबर चुनें)। फिर अपना ब्राउज़र खोलें और http://localhost:9000 पर जाएँ।अतिरिक्त कमांड लाइन तर्कों की सूची देखने के लिए python dbdat.py -h चलाएँ।
रिपोर्ट परिणामों को स्तरों द्वारा व्यवस्थित करती है, जो हैं RED, YELLOW, ORANGE, GRAY और GREEN।
अब तक DbDat का परीक्षण Debian Linux, CentOS Linux और Windows 7 पर Python 2.7 के साथ किया गया है।
चलाएँ: pip install MySQL-python
या Debian पर, चलाएँ: apt-get install python-mysqldb
चलाएँ: pip install psycopg2
चलाएँ: pip install cx_Oracle
नोट: इसके काम करने के लिए आपको Oracle क्लाइंट लाइब्रेरीज़ स्थापित करनी होंगी।
चलाएँ: pip install pymssql
चलाएँ: pip install ibm_db या easy_install ibm_db
नोट: आपको यह सुनिश्चित करना होगा कि DbDat चलाने वाले उपयोगकर्ता के पास DB2 CLP कमांड (जैसे db2 और db2level) निष्पादित करने की पहुंच हो।
चलाएँ: pip install pymongo
MongoDB YAML कॉन्फ़िगरेशन फ़ाइलों को समर्थन देने के लिए चलाएँ: pip install pyyaml
चलाएँ: pip install couchdb
प्लगइन्स फ़ोल्डर में प्रत्येक प्रकार के डेटाबेस के लिए एक फ़ोल्डर है, और प्रत्येक फ़ोल्डर में जाँच फ़ाइलें होती हैं। यह एक बहुत ही सरल संरचना है, लेकिन आप परिचित होने के लिए प्लगइन्स फ़ोल्डर भी ब्राउज़ कर सकते हैं https://github.com/foospidy/DbDat/tree/master/plugins
डेटाबेस फ़ोल्डर्स में शामिल होंगे:
__init.py - इनिट फ़ाइल में प्रत्येक जाँच फ़ाइल के लिए एक इम्पोर्ट स्टेटमेंट होता है।check_ फ़ाइलें - ये वास्तविक फ़ाइलें हैं जो डेटाबेस जाँच करती हैं। फ़ाइल और उसके अंदर परिभाषित क्लास का नाम समान होना चाहिए।helper.py - सामान्य कार्यों वाली फ़ाइल। जाँच फ़ाइलें सामान्य कार्यों का लाभ उठाने के लिए helper.py को इम्पोर्ट कर सकती हैं।नई जाँच फ़ाइल जोड़ते समय संबंधित प्लगइन निर्देशिका की __init__.py फ़ाइल में एक इम्पोर्ट स्टेटमेंट जोड़ना आवश्यक है। जाँचों के लिए कोड पैटर्न काफी सुसंगत हैं। यह समझने के लिए मौजूदा फ़ाइलों की समीक्षा करें कि वे कैसे संरचित हैं। sql और configuration_file प्रकार की जाँचों के बीच अंतर पर ध्यान दें।
जाँचों के विभिन्न "प्रकार" परिभाषित किए जा सकते हैं। जाँच प्रकार TYPE चर द्वारा निर्धारित किया जाता है और sql, configurtion_file, nosql या clp हो सकता है। नीचे विभिन्न जाँच प्रकार परिदृश्यों के लिए उदाहरण कार्यान्वयन हैं।
sql जाँचों के लिए do_check विधि हस्ताक्षर होना चाहिए: do_check(self, *results)
https://github.com/foospidy/DbDat/blob/master/plugins/mysql/check_user_empty_password.py
इस उदाहरण में हमें कॉल करने वाले पैरेंट क्लास से appuser चर की आवश्यकता है। appuser को sql स्टेटमेंट में गतिशील रूप से जोड़ने की आवश्यकता है, इसलिए self.SQL चर को __init__ विधि में सेट किया जा रहा है। साथ ही, चूंकि इस do_check विधि को sql निष्पादित करने की आवश्यकता है, हमें DB कर्सर (कनेक्शन) की भी आवश्यकता है, यह __init__ विधि में self.dbcurs = parent.dbcurs के साथ सेट किया गया है।
https://github.com/foospidy/DbDat/blob/master/plugins/mysql/check_privilege_user_grants.py
configuration_file जाँचों के लिए do_check विधि हस्ताक्षर होना चाहिए: do_check(self, configuration_file)
https://github.com/foospidy/DbDat/blob/master/plugins/mysql/check_configuration_general_log.py
इस उदाहरण में, PostgreSQL कॉन्फ़िगरेशन फ़ाइल में अनुभाग (जैसे [section_name]) नहीं हैं, इसलिए PostgreSQL फ़ोल्डर में हेल्पर मॉड्यूल में एक फ़ंक्शन है जो इसे संभालता है। helper.py में परिभाषित get_config_value फ़ंक्शन देखें।
अन्य कॉन्फ़िगरेशन फ़ाइल प्रारूपों के लिए आपको अपना स्वयं का पार्सिंग तर्क परिभाषित करना होगा।
nosql जाँचों के लिए do_check विधि हस्ताक्षर होना चाहिए: do_check(self)
NoSQL क्वेरी को do_check विधि में निष्पादित करने की आवश्यकता है, इसलिए क्लास __init__ विधि को self.db = parent.db लागू करना होगा। self.db चर का उपयोग तब do_check विधि में NoSQL क्वेरी निष्पादित करने के लिए किया जा सकता है।
https://github.com/foospidy/DbDat/blob/master/plugins/mongodb/check_information_banner.py