फोर्क बम से उबटन को कैसे सुरक्षित रखें


72

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

मैंने सुना है कि कुछ OS कांटा बमों के प्रभाव को कम करने के लिए उपयोगकर्ता प्रक्रियाओं पर कुछ सीमा तक प्रशासक को अनुमति देता है, क्या यह उबंटू में डिफ़ॉल्ट रूप से सुरक्षा है या सूडो विशेषाधिकार वाले व्यक्ति को इसे सेट करना होगा? यदि हां, तो कैसे?

जवाबों:


73

आप उन प्रक्रियाओं की मात्रा को आसानी से सीमित कर सकते हैं जिन्हें उबंटू और अधिकांश अन्य लिनक्स वितरणों में संशोधित करके संशोधित किया जा सकता है /etc/security/limits.conf

sudoedit /etc/security/limits.conf

फिर इस लाइन को उस फाइल के निचले हिस्से में जोड़ें:

*    hard     nproc     nnn

कहाँ पे:

  • hard कर्नेल स्तर पर सीमा निर्धारित करता है ताकि इसे रिबूट किए बिना बदला नहीं जा सके।
  • nproc प्रति उपयोगकर्ता प्रक्रियाओं की अधिकतम संख्या है।
  • nnn एक संख्या है जिसे आपको अपने सिस्टम के लिए गणना करनी चाहिए:

    ps aux -L | cut --delimiter=" " --fields=1 | sort | uniq --count | sort --numeric-sort | tail --lines=1
    

उपरोक्त आदेश थ्रेड्स सहित सभी उपयोगकर्ताओं के लिए सभी प्रक्रियाओं को सूचीबद्ध करेगा , उन्हें योग करेगा और सबसे बड़ी प्रक्रियाओं के साथ उपयोगकर्ता नाम सूचीबद्ध करेगा। सुरक्षित पक्ष पर होने के लिए, ऊपर दिए गए कमांड को चलाने से पहले सामान्य रूप से आवश्यक कई एप्लिकेशन खोलें और फिर सुरक्षा के लिए उस संख्या को दोगुना करें।

इस सीमा को लागू करने के बाद, आपको रिबूट करने की आवश्यकता होगी, लेकिन यह सिस्टम पर प्रत्येक गैर-रूट उपयोगकर्ता को प्रभावित करेगा । इसलिए यदि किसी भी गैर-रूट उपयोगकर्ता द्वारा कांटा बम को निष्पादित किया जाता है, तो उसके पास यह कठिन सीमा होगी।

समूह और वाइल्डकार्ड सीमाएँ डिफ़ॉल्ट रूप से रूट उपयोगकर्ता पर लागू नहीं होती हैंrootनियमों में शाब्दिक उपयोगकर्ता नाम का उपयोग करें यदि आप सुपरयुसर को एक नियम लागू करना चाहते हैं।

इसके अलावा, यदि आप जल्द ही किसी भी समय को पुनः आरंभ नहीं करना चाहते हैं, तो आप उपयोग कर सकते हैं sudo ulimit -u 800जो केवल सत्र चलाने पर प्रतिबंध लगाएगा, लेकिन sudoविशेषाधिकारों के साथ एक फोर्क बम को आसानी से दरकिनार किया जा सकता है !

पुनः आरंभ करने के बाद, जो कुछ भी है, /etc/security/limits.confउसका उपयोग किया जाएगा।

कांटा बम के बारे में कुछ अतिरिक्त जानकारी: वे मैलवेयर या भयानक कुछ भी नहीं हैं। वे आम तौर पर एक स्क्रिप्ट के रूप में मूल रूप से कुछ के होते हैं जो खुद को दो बार कहते हैं - जिससे मशीन पर अपनी उपस्थिति तेजी से बढ़ रही है। भले ही उनके पास एक छोटी सी स्मृति पदचिह्न हो, जिस तेजी से उन्होंने कई बार वे उपलब्ध रैम को भरते हैं और मशीन को जमा देता है या रिबूट करता है। केवल खतरे की जानकारी खो दी है। मैं दुर्भावनापूर्ण सॉफ़्टवेयर की तुलना में प्रैंक के रूप में एक forkbomb को अधिक वर्गीकृत करूंगा।

एक महत्वपूर्ण अनुस्मारक:

जब आप इसकी कार्रवाई के 98% निश्चित नहीं होते हैं, तो आपको कमांड लाइन में कभी भी किसी भी चीज को निष्पादित करना चाहिए। यदि आप उन आदेशों को नहीं पढ़ सकते हैं जिन्हें आप निष्पादित कर रहे हैं - ऐसा न करें। यह हेक्स / बेस 64 वर्णों के अपठनीय विखंडू पर लागू होता है, जिसका उपयोग सभी प्रकार की नग्नता को अस्पष्ट करने के लिए किया जा सकता है। यदि आप एक कमांड से अनिश्चित हैं, तो आप हमेशा उबंटू मानपज में इसकी क्रियाओं को खोज सकते हैं और sudoरूट उपयोक्ता के रूप में निष्पादित होने के बाद इसका उपयोग करते समय अतिरिक्त सावधानी बरत सकते हैं।


@MarcoCeppi: आपका नंबर एक विशिष्ट एकता उपयोगकर्ता के लिए बहुत दूर नहीं था: गणना के लिए आउटपुट वर्तमान में मेरे सिस्टम के लिए 404 है ...
Fabby

1
अगर मैं कहता हूं, तो alias ":(){ :|: & };:"="echo 'No.'"मेरी तरह कुछ रखो .bashrc- क्या यह हर लॉगिन को निष्पादित करेगा?
यूनिवर्सलीयूनीकिड

क्या एक उच्च nproc सीमा लेने का नुकसान है? ऐसा लगता है कि प्रक्रियाओं की वर्तमान # सीमा से दोगुना या बहुत अधिक स्थान नहीं है, क्या यह सीमा बहुत अधिक होगी, यहां तक ​​कि 10,000 या उससे अधिक भी, फिर भी एक कांटा बम के खिलाफ प्रभावी होगा? प्रत्येक कांटा / प्रक्रिया की खपत कितनी होती है? शायद एक अधिक सार्वभौमिक रैम-व्युत्पन्न सीमा है?
Xen2050 7

1

एक सरल तरीका मुझे पसंद है कि एक उपनाम बनाना है, हालांकि उपनाम 'हमेशा लागू नहीं होता है, ऊपर दिए गए उत्तर की जांच करें।

alias :="echo No."

अभी

$ :(){ :|: & };:
bash: syntax error near unexpected token `('

22
निश्चित रूप से, यह एक सामान्य समाधान है; यह कैसे रुकता है a(){ a|a & };a? (या किसी अन्य समारोह का नाम?)
बिल्ली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.