लिनक्स हार्डनिंग - वेब सर्वर


31

लिनक्स वेब सर्वर स्थापित करते समय आपकी चेकलिस्ट / दिनचर्या क्या है?

अधिकतम सुरक्षा प्राप्त करने के लिए आप क्या सलाह देते हैं?

क्या बार-बार रखरखाव करने का कोई पसंदीदा तरीका है?

जवाबों:


27
  • सबसे पहले, यह ध्यान रखें कि Apache (php, cgi, ruby, ...) में किसी भी स्क्रिप्टिंग की क्षमता स्क्रिप्ट चलाने वाले उपयोगकर्ता के विशेषाधिकारों के साथ एक शेल खाते के संभावित समकक्ष है।

  • यदि सर्वर कई उपयोगकर्ताओं के साथ साझा किया जाता है, तो आप suexec (- या ITK MPM - डेविड शमिट द्वारा सुझाए गए ) का उपयोग करने के बारे में सोचना चाह सकते हैं, इसलिए प्रत्येक स्क्रिप्ट एक ही अपाचे उपयोगकर्ता के रूप में नहीं चलती है।

  • वर्चुअलाइजेशन या चेरोट अपाचे, ताकि कोई भी समझौता कम से कम कुछ हद तक सुरक्षा की एक अतिरिक्त परत में निहित हो। इस बात से अवगत रहें कि जब आप अपाचे को काटते हैं, तो रखरखाव कठिन हो सकता है, जैसा कि आप जेल में चल रहे पुस्तकालयों को समाप्त करते हैं आदि। यदि आप फ्रीबीएसडी पर हैं, तो आप इसके बजाय जेल का उपयोग कर सकते हैं, जो बनाए रखने के लिए बहुत आसान है, क्योंकि आप बस अपाचे स्थापित कर सकते हैं। बंदरगाहों से, और किसी भी पुस्तकालय निर्भरता और मैन्युअल रूप से फ़ाइलों को स्थानांतरित करने के बारे में चिंता किए बिना, इसके भीतर से पोर्टाउडिट चलाएं, जो हमेशा एक बदसूरत गड़बड़ हो जाता है। बीएसडी जेलों के साथ आप बस पैकेज मैनेजमेंट सिस्टम (पोर्ट्स) का उपयोग कर सकते हैं। (GNU / लिनक्स पर आप वर्चुअलाइजेशन के लिए VServer का भी उपयोग कर सकते हैं । - डेविड श्मिट द्वारा सुझाए गए )

  • (जाहिर है) अपाचे के लिए ही नहीं, बल्कि PHP, रूबी, पर्ल, आदि के साथ अपडेट और पैचअप करते रहें ... आप सभी अपडेट्स को देने के लिए अपने OS पर भरोसा न करें। कुछ डिस्ट्रो अपने पैच के साथ बेहद धीमी हैं। जितना संभव हो, 0-दिन की कमजोरियों के लिए जोखिम समय को सीमित करें। चिपका milw0rm अपने आरएसएस रीडर में फ़ीड, की सदस्यता insecure.org मेलिंग सूची, आदि ... इतना ही नहीं यह पहले अपने ओएस एक पैच जारी करने के लिए चारों ओर हो जाता है आप कमजोरियों के बारे में जानने के लिए, आप भी कुछ php में कमजोरियों के बारे में जानेंगे में मदद मिलेगी उदाहरण के लिए cms अनुप्रयोग, जो आपके OS द्वारा प्रबंधित या पैच भी नहीं किया जा सकता है।

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

  • Php की सुरक्षा के लिए suhosin जैसे सामान का उपयोग करने से मदद मिलती है। लेकिन इसे समझना भी सीखें, यह आपके एप्लिकेशन के अपेक्षित मापदंडों के लिए कॉन्फ़िगर है।

  • PaX जैसे कर्नेल पैच का उपयोग करने से आपको कई बफर अतिप्रवाह कमजोरियों से बचाने में मदद मिल सकती है। भले ही आपका सॉफ्टवेयर असुरक्षित हो। (यह आपको अजेय नहीं बनाता है, यह अभी तक एक और मामूली, परत है।)

  • कुछ सुरक्षा उपकरण का उपयोग करते समय अति आत्मविश्वास न करें। आपके द्वारा उपयोग किए जाने वाले टूल को समझें और सामान्य ज्ञान का उपयोग करें। पढ़ो, सीखो, जितना हो सके उतना साथ रखो।

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

  • चीजों को सरल रखें। एक जटिल सुरक्षा रणनीति आपके खिलाफ काम कर सकती है।

  • अपाचे में, एक बहुत ही प्रतिबंधात्मक डिफ़ॉल्ट नियम (विकल्प कोई नहीं, सभी से इनकार, आदि ...) सेट करें और विशिष्ट VirtualHosts के लिए आवश्यकतानुसार ओवरराइड करें।

  • सभी डॉटफ़ाइल्स तक पहुँच से इनकार करें (जो तुरंत .htaccess फ़ाइलों को भी कवर करता है)

  • हमेशा किसी भी तरह के पासवर्ड प्रमाणीकरण के लिए https का उपयोग करें।

  • फ़ायरवॉल को एक डिफ़ॉल्ट-बाय-डिफ़ॉल्ट नीति होना चाहिए। विशिष्ट ट्रैफ़िक लॉग करने के लिए अपने फ़ायरवॉल में कुछ विशिष्ट नियम बनाएँ।

  • विसंगतियों के लिए अपने लॉग को स्कैन करने के लिए लॉग पार्सिंग स्क्रिप्ट सेट करें। ( प्रस्तावना आईडीएस सुइट ऐसा कर सकता है, लेकिन ईमानदारी से, मैं आपको समय के साथ अपनी स्क्रिप्ट बनाने की सलाह देता हूं, क्योंकि यह आपको अपने स्वयं के टूल और नियमों को बेहतर ढंग से समझने में मदद करेगा।)

  • सर्वर लॉग आप दैनिक रिपोर्ट पर पिछले लॉग इन उपयोगकर्ताओं, सक्रिय कनेक्शन, बैंडविड्थ इस्तेमाल किया, आदि है ...

  • सुसाइड बायनेरिज़, विश्व लेखन योग्य फ़ाइलों और उस तरह के सामान के लिए एक क्रोन स्कैन करें, और उन्हें आपके पास भेज दिया है।

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

  • एक अच्छी ठोस स्तरित निरर्थक बैकअप रणनीति रखें। और यह मत समझो कि हर चीज की एक छवि या कॉपी बनाना काम करता है। उदाहरण के लिए, यदि MySQL आपके बैकअप के दौरान किसी तालिका में लिखने के बीच में है, तो जब आप इस बैकअप को पुनर्स्थापित करते हैं तो आपकी MySQL बाइनरी फाइलें दूषित हो सकती हैं। तो आपको एक क्रोन की आवश्यकता होगी जो कि mysqldump के आपके डेटाबेस को नियमित छवियों के शीर्ष पर या रात के टारबॉल या संस्करण नियंत्रण या आपके पास जो भी सेटअप है, उसके ऊपर है। अपनी बैकअप रणनीति के बारे में सोचें। मेरा मतलब है, वास्तव में इसके बारे में सोचते हैं।

  • सुरक्षा के लिए इस तरह की सूचियों पर भरोसा न करें :) गंभीरता से! आप इन सभी को इंटरनेट पर बहुत सारे पाएंगे, उन सभी को पढ़ें, हर सुझाव पर शोध करें और अपने स्वयं के दिमाग को बनाने के लिए सामान्य ज्ञान और अनुभव का उपयोग करें। अंत में, अनुभव और सामान्य ज्ञान ही ऐसी चीजें हैं जो आपको बचाएंगी। न सूची, न उपकरण। पढ़ें, लेकिन बिना समझे कॉपी न करें।


+1, शानदार सूची! मैं ITK एम पी एम (में एक देखो की सलाह देते हैं mpm-itk.sesse.net ) suexec और लिनक्स VServer के बजाय ( linux-vserver.org ) के बजाय chroots। इसके अलावा, फ़ाइल सिस्टम स्कैन के लिए, ट्रिपवायर या सहयोगी और चकरोटकिट है।
डेविड श्मिट

तो, अंत में, एक वेब सर्वर की सुरक्षा लगभग एक जीवनकाल लेता है। ऐसा लगता है कि आप पर्याप्त रूप से तैयार नहीं हो सकते हैं, इसलिए अजीब घटनाओं के बारे में नियमित अपडेट पैकेज प्रबंधक में पाए जाने वाले पहले सुरक्षा उपकरण से बेहतर हैं। :) महान सूची, लेकिन मैं अपना समय लूंगा। अत्यधिक संभावना है कि यह उत्तर एक होगा। :)
pestaa

@ डेविड: हाँ, ट्राइपवायर का उल्लेख करने के साथ मैं इस तरह के निहितार्थ का उल्लेख करता हूं, मैं केवल मामले में एक सहयोगी लिंक जोड़ूंगा। मैं vserver सुझाव भी जोड़ूंगा। हां, वर्चुअलाइजेशन और / या पैरावर्चुअलाइजेशन चेरोट से बेहतर होने जा रहा है, यही वजह है कि मैंने फ्रीबीएसडी जेलों का उल्लेख किया। हालांकि वर्चुअल मशीन के साथ एक बात यह है कि प्रत्येक vm के लिए यूजरलैंड + आवश्यक टूल को दोहराने के लिए अतिरिक्त डिस्क स्थान का एक बहुत कुछ खाने जा रहा है, जो कि एक मुद्दा हो सकता है
jns

अगर आपको बहुत सारी चीजों को वर्चुअलाइज करने की जरूरत है, या कैश / हार्डवेयर की कमी है। जेल + नुल्फ़्स माउंट उस समस्या को दरकिनार कर सकते हैं। और चूंकि जेलों का वर्चुअलाइजेशन नहीं किया गया है और न ही उनका उत्सर्जन किया गया है। मुझे लगता है कि vserver GNU / Linux पर अगली सबसे अच्छी बात है।
मई'09

वाह! यह वास्तव में बहुत अच्छा है .. साथ ही sans.org पर उपलब्ध चेकलिस्ट चेकआउट करें। यह वास्तव में बहुत मदद करता है। sans.org/score/checklists
लालाकाज

5

मैं SAN से लिनक्स सुरक्षा चेकलिस्ट की सिफारिश करता हूं । मैं इसका उपयोग करता हूं, साथ ही इन-हाउस प्रक्रियाओं का उपयोग करता हूं। चेकलिस्ट थोड़ा आउट-डेटेड हो सकता है, लेकिन कई प्रमुख बिंदु सही हैं।


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

4

अपना ~ / .ssh / config संपादित करें

permit_root_login no

यह बनाता है

ssh root@server

जवाब नहीं लेकिन

ssh user@server
user$ su

यदि आप रूट के रूप में लॉगिन करना चाहते हैं तो काम करेगा।


1

जाँच करने के लिए हमेशा अनगिनत अनुमतियाँ होंगी, अनगिनत जाँच-पड़ताल करने वाले, नए बग / भेद्यता की खोज को कभी खत्म नहीं करेंगे। सुरक्षा मुझे नहीं लगता कि कुछ ऐसा है जिसे आप चालू या बंद करते हैं, यह कुछ ऐसा है जो आप लगातार करते हैं।

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

यह कहते हुए कि डिफ़ॉल्ट नीति मदद नहीं करेगी, लेकिन मैं व्यक्तिगत रूप से जानना चाहता हूं कि यह क्या अनुमति देता है।

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