अज्ञात स्रोत से बैकअप बहाल करने के सुरक्षा निहितार्थ?


31

परिदृश्य : आपको एक डेटाबेस बैकअप दिया जाता है और इसे एक सर्वर पर पुनर्स्थापित करने के लिए कहा जाता है (जो पहले से ही अन्य डेटाबेस की मेजबानी कर रहा है), लेकिन बैकअप में क्या है या क्या स्रोत पर भरोसा किया जाना चाहिए, इसके बारे में कोई उपयोगी जानकारी नहीं दी गई है।

प्रश्न 1 : एक बैकअप को बहाल करने के संभावित निहितार्थ क्या हैं जो अच्छी तरह से दुर्भावनापूर्ण हो सकते हैं?

प्रश्न 2 : संभावित रूप से दुर्भावनापूर्ण बैकअप को पुनर्स्थापित करने के प्रभाव से आप अपने डेटाबेस / डेटा को अन्य डेटाबेस में सुरक्षित रखने के लिए क्या कर सकते हैं? RESTORE VERIFYONLYएक अच्छा पहला कदम प्रतीत होगा। अंतिम उत्तर शायद 'सैंडबॉक्स वीएम में डेटाबेस को पुनर्स्थापित करना है जिसमें बाहरी दुनिया तक पहुंच नहीं है', लेकिन मान लें कि विकल्प तालिका से दूर है। इस स्थिति में और क्या किया जाना चाहिए?


1
यहां तक ​​कि यह मानते हुए कि पुनर्स्थापना डेटा-ओनली है (कोई संग्रहीत कार्यविधियाँ, या कुछ ऐसी), दुर्भावना के बहुत सारे कारण हो सकते हैं। मान लीजिए कि बैकअप एक वेब एप्लिकेशन के लिए है जिसमें एक उपयोगकर्ता तालिका है, उनके संबंधित अनुमति स्तरों के साथ, एक दुर्भावनापूर्ण बैकअप उन उपयोगकर्ताओं तक पहुंच प्रदान कर सकता है जो उनके पास नहीं होना चाहिए, और जो जानते हैं कि वे उससे क्या कर सकते हैं।
रेयान

बहुत ही अजीब कोई भी CLR प्रक्रियाओं या कार्यों के संभावित जोखिम का उल्लेख नहीं किया। (डिफ़ॉल्ट रूप से अब अक्षम नहीं)
ALZDBA

जवाबों:


21

एक डेटाबेस में दुर्भावनापूर्ण कोड हो सकता है, संभवतः एक प्रक्रिया जो "सा" लॉगिन के लिए पासवर्ड बदलने या हर डेटाबेस को छोड़ने की होती है। हालाँकि, एकमात्र तरीका जो मैं देख सकता हूँ कि किसी समस्या के कारण डेटाबेस को पुनर्स्थापित करने के लिए एक व्यक्ति के लिए है, और फिर उस डेटाबेस के भीतर किसी भी कोड को मैन्युअल रूप से निष्पादित करता है। यह किसी भी स्वचालित तरीके से निष्पादित नहीं होगा।

ऐसी कोई सेटिंग नहीं है जिसे SQL सर्वर के लिए डेटाबेस के भीतर लागू किया जा सकता है SQL सर्वर पर सर्वर को पुनर्स्थापित करने पर स्वचालित रूप से कोड के कुछ बिट निष्पादित करता है। अगर ऐसा होता है तो मुझे उम्मीद है कि Microsoft उत्पाद के लिए सामान्य मानदंड प्रमाणन को ढीला कर देगा। यह मेरे लिए एक डीबीएमएस में अनुमति देने के लिए बग के महान है।


यदि सेवा ब्रोकर पुनर्स्थापना ( WITH ENABLE_BROKERएट अल का उपयोग करके ) के भाग के रूप में फिर से सक्षम है , तो कोड "स्वचालित रूप से" चल सकता है। जाहिर है कि यदि सुरक्षा की चिंता है तो पुनर्स्थापनाकर्ता उन विकल्पों में से किसी का भी उपयोग नहीं करना चाहेगा , लेकिन यह संभवतः एक 3-पार्टी विक्रेता ऐप के अंदर दफन किया जा सकता है जहां उपयोगकर्ता इसे नहीं देख सकता है।
जॉन सिगेल

सर्विस ब्रोकर के माध्यम से किस तरह का कोड निष्पादित किया जा सकता है? मैं कभी भी इसका इस्तेमाल नहीं करता या इसे सेट नहीं करता।
शॉन मेल्टन

सक्रियण संग्रहीत कार्यविधियाँ। Technet.microsoft.com/en-us/library/…
जॉन सिगेल

2
हो सकता है कि डेटाबेस को सक्षम करने के लिए यह देखने के लिए भी जल्द से जल्द करें। यदि ऐसा है, और सर्वर पर कंसंट्रेशन सक्षम है, तो उपयोगकर्ता आपको सर्वर एक्सेस दिए बिना ही इसे एक्सेस कर पाएंगे। यह SQL 2012 या नए के लिए है, बिल्कुल। यदि सर्वर पर नियंत्रण सक्षम नहीं है, और बैकअप में डेटाबेस ने इसे सक्षम किया है, तो पुनर्स्थापना विफल हो जाएगी, इसलिए मुख्य रूप से केवल एक चिंता है अगर यह सर्वर पर सक्षम है।
राबर्ट एल डेविस

1
@JonSeigel मुझे नहीं लगता कि वे स्वचालित रूप से आग लगा देंगे। SOMETHING को एक संदेश को एक सेवा में भेजकर एक कतार में रखना पड़ता है, इसलिए उस डेटाबेस के भीतर कुछ इंटरेक्शन होना चाहिए ताकि कोई रिकॉर्ड या प्रक्रिया या कुछ और फायर किया जा सके। ब्रोकर कतारें बिना किसी इंटरैक्शन के अपनी सक्रियण प्रक्रिया को पूरा नहीं कर पातीं, वे संदेशों को कतार में दिखाने के लिए देखते हैं।
JNK

11

कुछ रोकथाम कदम हैं जो आप कर सकते हैं।

  1. सुनिश्चित करें कि कोई भी नहीं है, लेकिन एक sysadmin पुनर्स्थापित डेटाबेस तक पहुँच है।
  2. पुनर्स्थापना पूर्ण होने के बाद db को एकल उपयोगकर्ता मोड में रखें।
  3. सभी संग्रहीत कार्यविधियों और फ़ंक्शन के अंदर कोड की जाँच करें और इस डेटाबेस के अंदर ट्रिगर करें।
  4. यह सुनिश्चित करने के लिए एक dbcc चेकडब निष्पादित करें कि कोई अखंडता समस्या न हो।
  5. उन उपयोगकर्ताओं की जांच करें, जिनके पास डेटाबेस तक पहुंच थी और उन सभी को हटा दिया था।
  6. आपके द्वारा जाँच की गई विशिष्ट वस्तुओं तक पहुँच को प्रतिबंधित करना शुरू करें।

जैसा कि शॉन ने कहा, कोड तब तक स्वयं निष्पादित नहीं करेगा जब तक कि कुछ संग्रहीत प्रक्रिया जो अस्पष्ट लगती है, एक और दुर्भावनापूर्ण कोड का निष्पादन है। यह बहु उपयोगकर्ता मोड डालने से पहले उनमें से प्रत्येक के अंदर कोड की जांच करने का कारण है।


10

मैं यहां तक ​​पहुंच रहा हूं, लेकिन मैं कम से कम एक खतरनाक परिदृश्य के बारे में सोच सकता हूं: यदि आप एक डेटाबेस को पुनर्स्थापित करते हैं जिसमें एक फ़िलेबल है , तो वे फाइलें अब आपके नेटवर्क पर डिफ़ॉल्ट रूप से (और विशेष रूप से आपके SQL सर्वर पर) हैं। आप एक वायरस को पुनर्स्थापित कर सकते हैं।

वह स्वयं कुछ भी नहीं करेगा, निश्चित रूप से - वायरस अचानक भावुक नहीं हो जाता है - लेकिन यदि आपके उपयोगकर्ता फिर फ़ाइल तक पहुंचने का प्रयास करते हैं, तो वे संक्रमित हो सकते हैं। (अरे, मैंने कहा कि मैं पहुँच रहा था।) मैं एक परिदृश्य की परिकल्पना कर रहा हूँ जहाँ एक बाहरी हैकर दरवाज़े में मैलवेयर पाना चाहता है, और वह फिर अकाउंटिंग में बॉब को एक ईमेल भेजते हुए कहता है, "यहाँ फाइल है: \ sqlserver \ filetables \" myvirus.exe "- उस बिंदु पर यह आपके फ़ायरवॉल को बिना पता लगाए अतीत में चला गया है, और अब हम आपके आंतरिक एंटीवायरस और एंटी-मैलवेयर टूल के लिए नीचे हैं।


2
आप इसे इस रूप में भी व्यक्त कर सकते हैं कि 'डेटाबेस में हमारे व्यक्तित्व के लिए निर्देश-निर्देश शामिल हैं जिन्हें पढ़ा और लागू किया जाना चाहिए'। यदि वे दुर्भावनापूर्ण तरीके से पालन करते हैं, तो वे मास्को पर रॉकेट लॉन्च करेंगे। यह साधारण वर्चर इना टेबल होगा ... डिट्टो यदि आप बायनेरिज़ को पुनर्स्थापित करते हैं और कर्मचारियों को इसे चलाने के लिए आमंत्रित करते हैं तो इसे ओ / ओ को मान्य करने के लिए, आप इसे आने वाले थे।
रेमस रुसानु

@RemusRusanu ने मास्को पर रॉकेट लॉन्च किए, हाहाहा, अच्छा!
ब्रेंट ओजर

सामाजिक इंजीनियरिंग के नजरिए से प्यार करें। एक .bak फ़ाइल के साथ लक्षित ईमेल संभवतः लक्ष्य के आधार पर बहुत मोहक हो सकता है।
मैक्स वेरनॉन

7

तब वास्तव में एक अच्छा पहला कदम प्रतीत होगा। अंतिम उत्तर शायद 'सैंडबॉक्स वीएम में डेटाबेस को पुनर्स्थापित करना है जिसमें बाहरी दुनिया तक पहुंच नहीं है', लेकिन मान लें कि विकल्प तालिका से दूर है। इस स्थिति में और क्या किया जाना चाहिए?

पुन: सत्यापित करें डेटाबेस की अखंडता की पुष्टि करें यह आपको नहीं बताएगा कि बैकअप में दुर्भावनापूर्ण कोड शामिल है या नहीं, बल्कि केवल इसलिए नहीं कि बैकअप वॉल्यूम में निहित डेटा की संरचना को सत्यापित करने का प्रयास नहीं करता है। इसकी अत्यधिक विपरीतता यह है कि यदि बैकअप उस फर्म के अंदर से आता है जहां आप काम करते हैं तो आप दुर्भावनापूर्ण हो सकते हैं लेकिन अगर यह किसी तीसरे पक्ष से आता है तो आपको सावधान रहने की आवश्यकता है जैसा कि शॉन ने बताया है।

Microsoft ऑनलाइन प्रलेखन का कहना है कि

• सुरक्षा उद्देश्यों के लिए, हम अनुशंसा करते हैं कि आप अज्ञात या अविश्वसनीय स्रोतों से डेटाबेस को संलग्न या पुनर्स्थापित न करें। इस तरह के डेटाबेस में दुर्भावनापूर्ण कोड हो सकता है जो अनपेक्षित लेनदेन-SQL कोड को निष्पादित कर सकता है या स्कीमा या भौतिक डेटाबेस संरचना को संशोधित करके त्रुटियों का कारण बन सकता है। इससे पहले कि आप किसी अज्ञात या अविश्वसनीय स्रोत से डेटाबेस का उपयोग करें, एक गैर- संचालन सर्वर पर डेटाबेस पर DBCC CHECKDB चलाएं और डेटाबेस में संग्रहीत प्रक्रियाओं या अन्य उपयोगकर्ता-परिभाषित कोड जैसे कोड की भी जांच करें।


7

यह सवाल ज्यादातर मालवेयर युक्त बैकअप पर केंद्रित है, लेकिन पुनर्स्थापना ऑपरेशन से ही अवांछित और संभावित रूप से दुर्भावनापूर्ण व्यवहार करना भी संभव है।

मैंने गलती से अतीत में पाया है कि एक भ्रष्ट बैकअप फ़ाइल को पुनर्स्थापित करने का प्रयास करके SQL सर्वर को क्रैश करना संभव है, जो SQL सर्वर को बैकअप फ़ाइल के अंत में पढ़ने और क्रैश करने की कोशिश करता है। मुझे यकीन नहीं है कि कौन से संस्करण अतिसंवेदनशील हैं या वास्तव में समस्या को पुन: उत्पन्न करने के लिए क्या आवश्यक है। जब मैंने कुछ साल पहले इस समस्या का सामना किया था तब मैंने यहाँ कुछ सीमित विवरणों का दस्तावेजीकरण किया था।


अच्छी बात। जरूरी नहीं कि मैं "वैध बैकअप जिसमें मैलवेयर हो" पर ध्यान केंद्रित करने का मतलब नहीं था, एक अमान्य बैकअप के माध्यम से SQL सर्वर को क्रैश करना भी "क्या गलत हो सकता है?"
साइमन रिगार्ट्स

5

एक अज्ञात स्रोत से एक अज्ञात डेटाबेस को पुनर्स्थापित करने में क्या जोखिम है? कोई नहीं।

एक अज्ञात एप्लिकेशन को उस डेटाबेस से कनेक्ट करने और कोड चलाना शुरू करने के लिए एक अज्ञात एप्लिकेशन को कनेक्ट करने देने में क्या जोखिम है? बहुत! यदि एप्लिकेशन खाते में केवल डेटाबेस के भीतर अधिकार है और कोई सर्वर स्तर नहीं है, तो ऐसा कुछ भी नहीं है जो वास्तव में डेटाबेस के बाहर कर सकता है। यह मूल रूप से शुरू करने के लिए सर्वर पर एक उचित सुरक्षा ढांचा सेटअप होने के लिए नीचे आता है।


2

आपको एक डेटाबेस बैकअप सौंपा गया है और इसे एक सर्वर पर पुनर्स्थापित करने के लिए कहा गया है (जो पहले से ही अन्य डेटाबेस की मेजबानी कर रहा है), लेकिन बैकअप में क्या है या क्या स्रोत पर भरोसा किया जाना चाहिए, इसके बारे में कोई उपयोगी जानकारी नहीं दी गई है।

अच्छा लगा। आप एक हस्ताक्षरित लिखित बयान की मांग करते हैं जो कोई भी आपको ऐसा करने के लिए कह रहा है कि वे परिणामों के लिए पूरी जिम्मेदारी स्वीकार करते हैं। यदि वे ऐसा करने के लिए तैयार नहीं हैं, तो आपको बैकअप फ़ाइल (यदि संभव हो) की जांच करने के बाद सैंडबॉक्स में इंस्टॉल का परीक्षण करना चाहिए, और सभी तालिकाओं, प्रक्रियाओं आदि की अच्छी तरह से जांच करनी चाहिए, अगर किसी भी बिंदु पर कुछ भी अजीब गंध आ रही है, तो इसे न डालें। उत्पादन प्रणाली। फिर भी, आपको यह स्पष्ट करना चाहिए (अपने बॉस और उसके वरिष्ठों के लिए) कि आपने कभी बैकअप पर भरोसा नहीं किया और केवल सीधे आदेशों के तहत ऐसा कर रहे हैं।

यदि वे इस तरह के बयान पर हस्ताक्षर नहीं करेंगे, तो कुछ भी करने से पहले अपने बेहतर (ओं) को सचेत करें। एक पेशेवर के रूप में, यह आपका कर्तव्य है कि आप जितना संभव हो सके अपने सिस्टम की रक्षा करें, चाहे कोई भी डिम-वायर्ड सुपीरियर आपको करने का आदेश दे सकता है। आप निकाल सकते हैं, लेकिन आप अपने सिर को ऊंचा पकड़ सकते हैं और जान सकते हैं कि आपने सही काम किया है।


2

प्रति कहे जाने वाले खतरों के अलावा, कुछ दूरगामी लोगों के अलावा यहाँ सुझाव नहीं हैं। जैसा कि उल्लेख किया गया था, डेटाबेस बैकअप में ही ऑटो-एग्जीक्यूटिव सामान रखना कठिन है। इसे किसी प्रकार के बाहरी ट्रिगरिंग तंत्र की आवश्यकता है।

अगर लाइसेंसिंग एक समस्या है तो एक पुराना लैपटॉप / डेस्कटॉप और अपने डेटाबेस सॉफ्टवेयर (एसक्यूएलएक्सप्रेस) का मूल्यांकन संस्करण प्राप्त करें। मशीन पर बैकअप फ़ाइल को कॉपी करें, नेटवर्क / वायरलेस को अनप्लग करें, और बहाली करें। फिर खुदाई शुरू करें। हर समय आपकी ज़रूरत है, क्योंकि कई जगह सामान छिपा हो सकता है, उनमें से ज्यादातर पहले से ही इस धागे में अन्य पदों से आच्छादित हैं।

आपके डीबीए की अखंडता और आपके उत्पादन वातावरण की भलाई किसी भी वरिष्ठ द्वारा दिए गए आदेश से अधिक महत्वपूर्ण है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.