सवाल डेबियन सर्वर को सुरक्षित करने के लिए आप क्या कदम उठाते हैं? [बन्द है]


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

मैं इस प्रश्न का हिस्सा कवर करना चाहता हूं कि आप फ़ायरवॉल के रूप में क्या उपयोग करते हैं? केवल iptables मैन्युअल रूप से कॉन्फ़िगर किया गया है या आप सहायता करने के लिए किसी प्रकार का सॉफ़्टवेयर उपयोग करते हैं? सबसे अच्छा तरीका क्या है? सबकुछ अवरुद्ध करें और केवल वही चीज़ों की अनुमति दें? क्या इस विषय के शुरुआती लोगों के लिए शायद अच्छे ट्यूटोरियल हैं?

क्या आप अपना एसएसएच पोर्ट बदलते हैं? क्या आप सॉफ्टवेयर का उपयोग करते हैं fail2ban ब्रूटफोर्स हमलों को रोकने के लिए?


66


मूल


इसके साथ बहुत अधिक ओवरलैप है serverfault.com/questions/42/securing-a-fresh-ubuntu-server तथा - Zoredache
उबंटू ने ufw डेबियन नहीं किया है;) मैं घायल था कि लोग iptables को स्वयं को कॉन्फ़िगर कर रहे थे या फ़ायरहोल जैसे कुछ सॉफ़्टवेयर का उपयोग कर रहे थे - Thomaschaaf
मैं हमेशा iptables नियम लिखने के लिए प्रतिबद्ध है। मेरे पास एक बॉयलर प्लेट है जो सभी टुकड़ों, क्रिसमस पैकेट इत्यादि जैसी चीजें करता है। इससे परे कुछ भी सिस्टम विशिष्ट है, और आमतौर पर बहुत छोटा डांग छोटा होता है। Iptables, btw का उपयोग करते समय मैं पर्याप्त बूंदों को कम नहीं कर सकता। किसी कारण से मैंने अभी तक शोध नहीं किया है, iptables केवल पहले खंड की जांच करता है, और बिना जांच किए बाकी को अंधा कर देता है। मेरे दिमाग में, यह टुकड़े को देयता बनाता है। - Scott Pack
उहम ... डेबियन में ufw है। packages.debian.org/ufw - womble♦


जवाब:


अनिवार्य:

  • विशेषज्ञ मोड के साथ सिस्टम की स्थापना, केवल पैकेज जो मुझे चाहिए
  • IPtables 'इनपुट पर डिफ़ॉल्ट नीति के साथ हाथ से लिखा फ़ायरवॉल: ड्रॉप, एसएसएच, HTTP या जो कुछ भी दिया गया सर्वर तक चल रहा है
  • fail2ban एसएसएच के लिए [और कभी-कभी एफ़टीपी / HTTP / अन्य - संदर्भ के आधार पर]
  • रूट लॉग इन अक्षम करें, सामान्य उपयोगकर्ता और सूडो का उपयोग करके बल दें
  • कस्टम कर्नेल [बस पुरानी आदत]
  • अनुसूचित सिस्टम अपग्रेड

अतिरिक्त रूप से पारानोआ के स्तर के आधार पर:

  • कुछ स्वीकृत गंतव्यों / बंदरगाहों को छोड़कर आउटपुट पर नीति ड्रॉप करें
  • integrit उदाहरण के लिए, फाइल सिस्टम के कुछ हिस्सों को संशोधित नहीं किया गया है [मशीन के बाहर रखे चेकसम के साथ] Tripwire 
  • कम से कम सिस्टम से एनएमएपी के साथ अनुसूचित स्कैन
  • अज्ञात पैटर्न के लिए स्वचालित लॉग जांच [लेकिन यह ज्यादातर हार्डवेयर खराब होने या कुछ मामूली दुर्घटनाओं का पता लगाने के लिए है]
  • अनुसूचित रन chkrootkit
  • के लिए अपरिवर्तनीय विशेषता /etc/passwd इसलिए नए उपयोगकर्ताओं को जोड़ना थोड़ा मुश्किल है
  • / tmp noexec के साथ घुड़सवार
  • पोर्ट नॉकर या एसएसएच बंदरगाहों को खोलने के अन्य गैर-मानक तरीके [उदा। वेब सर्वर पर 'गुप्त' वेब पेज पर जाकर आने वाले एसएसएच कनेक्शन को आईपी पते से सीमित अवधि के लिए अनुमति देता है जो पृष्ठ को देखता है। यदि आप जुड़े हुए हैं, -m state --satete ESTABLISHED जब तक आप एक एकल एसएसएच सत्र का उपयोग नहीं करते तब तक पैकेट प्रवाह की अनुमति देने का ख्याल रखता है]

चीजें जो मैं खुद नहीं करता लेकिन समझ में आता हूं:

  • grsecurity कर्नेल के लिए
  • रिमोट syslog इसलिए सिस्टम समझौता होने पर लॉग को ओवरराइट नहीं किया जा सकता है
  • किसी भी एसएसएच लॉगिन के बारे में चेतावनी
  • कॉन्फ़िगर rkhunter और इसे समय-समय पर चलाने के लिए सेट अप करें

50



सिस्टम के खिलाफ कुछ और देखने के लिए इन सभी रन बैस्टिल करने के बाद। मैं एक पूर्ण बोर, असुरक्षित जांच सिस्टम की नेसस स्कैन करने की भी सिफारिश करता हूं; फिर जो कुछ भी अलर्ट करता है उसे ठीक करें। - Scott Pack
एक कस्टम कर्नेल संकलन सुरक्षा लाभ प्रदान नहीं करता है जबतक कि आप वास्तव में नहीं जानते कि आप क्या कर रहे हैं। जब तक आप इसे पैकेज प्रबंधन प्रणाली में नहीं डाल देते, तब तक आप इसे अद्यतित रखने के लिए उपेक्षा भी करेंगे, जिसके परिणामस्वरूप सुरक्षा खराब हो जाएगी। - Adam Gibbins
अस्पष्टता के माध्यम से सुरक्षा के लिए -1। अन्यथा सभ्य उत्तर। - dwc
@ एडम - हाँ, मुझे पता है कि, मैं अभी भी मोनोलिथिक कर्नेल रखना पसंद करता हूं जिसमें केवल उन हिस्सों को शामिल किया जाता है जिन्हें मुझे चाहिए। शायद यह बहुत पिछड़ा है, लेकिन फिर भी मैं इसे करता हूं। @ डीडब्ल्यूसी - यह सिर्फ एक अतिरिक्त कदम है जो सिर्फ एक टुकड़ा है या जैसा कि हम अप्रिय सुगंधित चीजों के ढेर के शीर्ष पर चेरी कहते हैं। - pQd
और तुम्हारा मतलब सुडो नहीं सु - - LapTop006


आपकी मशीन को फायरवॉल करने पर बस एक नोट ...

  • श्वेतसूची का प्रयोग करें, न कि ब्लैकलिस्ट - यानी सबकुछ अवरुद्ध करें, और केवल आपको जो कुछ चाहिए, उसे अनुमति दें, बाकी सब कुछ नकारें।
  • GUIs / ncurses या अन्यथा किसी भी सॉफ़्टवेयर का उपयोग न करें जो आपके लिए फ़ायरवॉल लिखने का कार्य करने का प्रयास करता है। यदि आप करते हैं, तो आप सॉफ़्टवेयर को आपके लिए धारणाएं करने की अनुमति देंगे - आपको उस जोखिम को लेने की आवश्यकता नहीं है और नहीं करना चाहिए। इसे स्वयं कॉन्फ़िगर करें, अगर आप अनिश्चित हैं, तो इसे अक्षम करें - यदि आवश्यक हो तो आपको जल्द ही पता चल जाएगा। यदि यह पहले से ही ऊपर और चल रहा सिस्टम है और आप यातायात को बाधित नहीं कर सकते हैं (गलती से इसे अवरुद्ध करके), तो tcpdump (फ़ाइल में डंप करें) चलाएं और नमूने लें - बाद में उनका अध्ययन करें, और फिर पता लगाएं कि क्या मान्य है और क्या नहीं है।
  • मैं व्यक्तिगत रूप से एक गैर-मानक बंदरगाह पर सेवा चलाने में कोई भी बिंदु नहीं देखता हूं, उपकरण इन दिनों मानने के लिए इतने मूर्ख नहीं हैं क्योंकि उदाहरण के लिए पोर्ट 22 पर कुछ चल रहा है, तो यह एसएसएच होना चाहिए, अन्यथा नहीं - इसके लिए उदाहरण amap, तथा nmapकी -A विकल्प। ऐसा कहकर, आप (और शायद चिंतित होना चाहिए) अपनी सेवाओं को प्राइइंग आंखों से छिपाने के लिए संशोधित कर सकते हैं, उदाहरण के लिए, हमलावर को सटीक संस्करण के बारे में पता चल जाएगा OpenSSH कि आप दौड़ रहे हैं, फिर वे उस सटीक संस्करण के लिए शोषण की तलाश कर सकते हैं। यदि आप ऐसी चीजें छुपाते हैं, तो आप उनके लिए इसे कठिन बना देंगे।
    [रूट @ ud-olis-1 uhtbin] # टेलनेट लोकहोस्ट 22
    127.0.0.1 का प्रयास कर रहा है ...
    Localhost.localdomain से जोड़ा गया (127.0.0.1)।
    एस्केप कैरेक्टर '^]' है।
    SSH-2.0-OpenSSH_3.9p1
  • अपनी सभी सार्वजनिक सेवाओं को अद्यतित रखें और नवीनतम सुरक्षा पैच के साथ पैच करें।
  • गेटवे सर्वर पर किसी भी डेटा को स्टोर न करें, कम से कम आप समय खरीद लेंगे जब वे इस मशीन में तोड़ने का प्रबंधन करेंगे, और आप एक सेवा या दो खो देंगे, और कुछ समय, लेकिन डेटा नहीं।

निचली पंक्ति यह है कि आप कभी भी 100% सुरक्षित बनाने में सफल नहीं होंगे - यह संभव नहीं है - इसलिए लक्ष्य बनाना जितना संभव हो उतना सुरक्षित है - यदि यह आपके सिस्टम को तोड़ने के लिए बहुत अधिक प्रयास है, तो यह काफी अच्छा है, और सबसे अधिक लेमर स्क्रिप्ट-किड्डी अगले सिस्टम पर चले जाएंगे।

  • iptables किसी भी लिनक्स सिस्टम के लिए जाने का तरीका है - लेकिन इसे स्वयं कॉन्फ़िगर करें।

किसी भी "सुरक्षा सॉफ़्टवेयर" का कभी भी उपयोग न करें जो खुले मानकों पर आधारित नहीं है - वे खराब लिखे जाने के लिए बर्बाद हो जाते हैं और हैक किया जाएगा ("अगर", लेकिन "कब" का मामला नहीं)। ओपन सोर्स और ओपन प्रोटोकॉल सार्वजनिक जांच के लिए खुले हैं और परिपक्व और भरोसेमंद उत्पाद बनने के लिए अभिसरण हैं; बंद स्रोत सॉफ्टवेयर लेखकों पर अधिक निर्भर करता है कि कितना महान / सुरक्षित-उत्पाद है वे ऐसा लगता है - यानी आंखों की एक छोटी संख्या आंखों से भरा पृथ्वी बनाम।

उम्मीद है की वो मदद करदे :)


18



"... आंखों की एक छोटी संख्या आंखों से भरा पृथ्वी बनाम।" - मैं चाहता हूं कि पर्याप्त "निगम" इसे महसूस करें, लेकिन अस्पष्टता के माध्यम से सुरक्षा सबसे अधिक प्रवृत्ति है। हां एक गैर-मानक बंदरगाह पर, एसएसएच की तरह एक सेवा चला रहा है, एक निर्धारित हमलावर नहीं रखेगा। हालांकि यह स्क्रिप्ट किड्स को दूर रखेगा - कोई पोर्ट 22 पर आईपी पते की एक श्रृंखला पर एक शब्दकोश हमला चला रहा है। - L0neRanger


  • रूट लॉगिन अक्षम करें
  • पासवर्ड से लॉगिन अक्षम करें (केवल सार्वजनिक कुंजी द्वारा लॉगिन करें)
  • एसएसएच बंदरगाह बदलें
  • denyhosts (या इसी तरह) का उपयोग करें

  • अपनी खुद की iptbles स्क्रिप्ट लिखें (इसलिए आप वास्तव में नियंत्रित करते हैं कि बाकी सब कुछ कैसे छोड़ सकता है और छोड़ सकता है)

  • एसएसएल / टीएलएस सुरक्षित संचार के उपयोग को मजबूर करें और सुनिश्चित करें कि वैध, गैर-समाप्त और हस्ताक्षरित प्रमाणपत्र हों

  • सभी बाहरी सेवाओं के लिए सख्त प्रमाणपत्र सत्यापन चालू करें (उदाहरण के लिए जब किसी अन्य मशीन पर एलडीएपी सर्वर वाले उपयोगकर्ताओं को प्रमाणित करते हैं)

12



पासवर्ड एथ अक्षम करने के लिए आपको एक उपरोक्त मिलता है। - derobert


यहाँ से प्रारंभ करें:

http://www.debian.org/doc/manuals/securing-debian-howto/


9



डेबियन सुरक्षा मैनुअल एक शानदार संसाधन है। - kce


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

  • नवीनतम ओएस पैच / पैकेज लागू करें
  • सिस्टम / कर्नेल / प्रक्रिया लेखांकन सक्षम करें।
  • मैक सक्षम करें (उदाहरण के लिए, SELinux या AppArmor)।
  • होस्ट-आधारित फ़ायरवॉल (iptables) सक्षम करें।
  • एपीटी स्रोतों को सत्यापित करें। सूची (कुंजी सही हैं, स्रोत विश्वसनीय हैं)।
  • नेटवर्क सेवाओं को कम करें, आवश्यक सब कुछ अक्षम करें, और फ़ायरवॉल क्या है।
  • सिस्टम पहुंच को और प्रतिबंधित करने के लिए TCPWrappers का उपयोग करें।
  • केवल एन्क्रिप्टेड नेटवर्क प्रोटोकॉल का उपयोग करें, अनएन्क्रिप्टेड सेवाओं को अक्षम करें (टेलनेट, FTP, आदि)।
  • केवल एसएसएच तक दूरस्थ पहुंच कॉन्फ़िगर करें।
  • उपयोगकर्ता लॉगिन पासवर्ड अक्षम करें और कुंजी-आधारित प्रमाणीकरण की आवश्यकता है।
  • फाइल सिस्टम साझाकरण अक्षम करें (एनएफएस, एसएमबी)।
  • दूरस्थ / केंद्रीकृत सिस्टम लॉगिंग सक्षम करें (और नियमित रूप से लॉग की समीक्षा करें!)।
  • एक BIOS / फर्मवेयर स्तर पासवर्ड सेट करें।
  • बूटलोडर पासवर्ड सेट करें।
  • सिस्टम बैकअप कॉन्फ़िगर करें, एक आपदा रिकवरी योजना और टेस्ट करें कि बैकअप मान्य हैं, और उन कर्मियों को आपदा पुनर्प्राप्ति प्रक्रियाएं पता हैं!

इन सभी विभिन्न सेटिंग्स पर कई संसाधन हैं, जिनमें विशिष्ट कमांड और कॉन्फ़िगरेशन फ़ाइलें शामिल हैं, जो सीआईसीक्योरिटी बेंचमार्क में सिस्टम पर लागू करने के लिए हैं।


6





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

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

मैं सर्वर पर किसी प्रकार का इंटरफ़ेस फ़ायरवॉलिंग का भी सुझाव देना चाहूंगा - गहराई में रक्षा कुंजी है। प्रशासन से संबंधित सेवाओं के लिए गैर-मानक बंदरगाहों का उपयोग करना कोई चोट नहीं पहुंचाता है। fail2ban ठीक है। अधिक विचारों को ढूंढने के लिए सर्वरफॉल्ट पर सुरक्षा अनुप्रयोगों के बारे में अधिक विशिष्ट प्रश्नों का पालन करें।

सुरक्षा दो हाइकर्स और भालू के बारे में मजाक की तरह है - जबकि कोई भी पूर्ण सुरक्षा प्राप्त नहीं कर सकता है, यह अन्य लोगों की तुलना में अधिक कठिन लक्ष्य बनना सहायक होता है।


5



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


कुछ लोगों ने ध्यान दिया है डेबियन मैनुअल सुरक्षित। यह सैन्य आवश्यकताओं के अलावा सब कुछ के लिए पूरी तरह से पर्याप्त होना चाहिए।

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

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

मैं अपने सभी सर्वरों के लिए पूर्ण-डिस्क एन्क्रिप्शन में कनवर्ट करने की प्रक्रिया में हूं।

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

मैं अच्छा उपयोग करता हूँ, यादृच्छिक रूप से उत्पन्न मेरे खातों के लिए पासवर्ड और उन लोगों को रखने के लिए मेरे एसएसएच सर्वर (और अन्य सभी सेवाओं) पर भरोसा करें जो पासवर्ड नहीं जानते हैं। fail2ban केवल लॉग फाइलों, आईएमओ के लिए सीमित स्थान वाले लोगों के लिए है। (आपके पास उन पर भरोसा करने में सक्षम होने के लिए पर्याप्त पर्याप्त पासवर्ड होना चाहिए।)


4





Www.debian.org/doc/manuals/securing-debian-howto/ पर इस अच्छी तरह से कैसे जाएं

मैं व्यक्तिगत रूप से एसएसएच पोर्ट बदलता हूं और fail2ban + denyhosts का उपयोग करता हूं। और मैं जो कुछ भी जरूरी नहीं है उसे अवरुद्ध करता हूं। जितना अधिक आप ब्लॉक करेंगे उतना ही आपको चिंता करने की ज़रूरत है।


3



ओह। आपने मुझे "एसएसएच पोर्ट बदलना" तक रखा था। कोई मतलब नहीं है। विशेष रूप से जब कोई भी जो स्कूमो अपने हाथों पर पर्याप्त समय के साथ आपको स्कैन कर सकता है और तत्काल पता लगा सकता है कि एसएसएच किस पोर्ट पर चल रहा है। जैसे ही आप कनेक्ट करते हैं, यह सेवा का नाम (और सर्वर संस्करण) घोषित करता है। - Matt Simmons
हां, मुझे पता है कि कोई भी आपको पोर्ट स्कैन कर सकता है, और सही बंदरगाह ढूंढ सकता है। लेकिन अधिकांश हमले डिफ़ॉल्ट बंदरगाह पर हैं। बंदरगाह को बदलकर बस कुछ आंकड़े प्राप्त करने का प्रयास करें। - Vihang D