सूडो पासवर्ड सूँघने से मैलवेयर रोकना


10

मैं अक्सर लोगों sudoको लिनक्स कंप्यूटर को संक्रमित करने के लिए मुख्य बाधाओं में से एक के रूप में उद्धृत करता हूं ।

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

लेकिन यह मुझे लगता है कि अधिकांश प्रणालियों पर डिफ़ॉल्ट रूप से, एक बार मैलवेयर ने एक व्यवस्थापक खाते को संक्रमित कर दिया है, विशेषाधिकार वृद्धि तुच्छ है - मैलवेयर को उपयोगकर्ता को चलाने के लिए इंतजार करना होगा sudo

जब उपयोगकर्ता चलता है sudo, तो रूट विशेष जानकारी प्राप्त करने के लिए मैलवेयर के लिए क्या तरीके मौजूद हैं , और हम उनसे कैसे बचाव कर सकते हैं?

संपादित करें: मैं विशेष रूप से एक समझौता किए गए व्यवस्थापक खाते से बचाने में दिलचस्पी रखता हूं; कहने का तात्पर्य यह है कि, एक खाता जिसमें पूर्ण रूट विशेषाधिकार हैं sudo(उदाहरण के लिए किसी विशिष्ट डेस्कटॉप सिस्टम पर उपयोगकर्ता का खाता)।


जिस तरह की चीज़ की मुझे तलाश है, उसके उदाहरण के लिए, मेरा उत्तर देखें । मैं उम्मीद कर रहा हूं कि कोई व्यक्ति वहां उठाए गए कुछ सुरक्षा जोखिमों (या किसी अन्य के बारे में जो वे सोच सकते हैं) पर विस्तार से बता सकते हैं, और उन्हें कम करने के तरीके प्रदान कर सकते हैं।
ज़ाज

आप विंडोज में UAC या सुरक्षित ध्यान अनुक्रम की तरह कुछ माँगते हैं। यूनिक्स सिस्टम में ऐसा नहीं है। प्रवेश करने का तरीका (होगा), मूर्खतापूर्ण चीजों के लिए अपने खातों का उपयोग नहीं करना है। अपने स्वयं के उत्तर में आपके द्वारा उल्लिखित कुछ चीजों को रोल आधारित या अनिवार्य पहुंच नियंत्रण प्रणालियों जैसे कि SELinux या Grececurity के साथ संरक्षित किया जा सकता है। वहां आप ऐसी नीतियां स्थापित कर सकते हैं जो गैर-रूट योग्य बायनेरिज़ को निष्पादित नहीं कर सकती हैं, इसलिए उस स्तर पर कोई ट्रोजन नहीं है। Btw, यदि आप X पर भरोसा नहीं करते हैं, तो सुपरसुसर विशेषाधिकारों के साथ X रन के लिए सिस्टम पर बिल्कुल भी भरोसा न करें।
काउंटरमोड

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

"एक्स सुपरसुअर विशेषाधिकार के साथ चलता है" - क्या? X की डिफ़ॉल्ट स्थापना पर , startxएक सामान्य उपयोगकर्ता की तरह ही ठीक काम करता है। वास्तव में, मैं अभी एक सामान्य उपयोगकर्ता के रूप में एक्स चला रहा हूं ।
ज़ाज़

हाँ सीखने की अवस्था खड़ी है। ग्रामसुरिटी पर एक नज़र डालें, यह सरल लेकिन अभी तक शक्तिशाली है। ~ X का विशेषाधिकार: मेरे बॉक्स पर X सर्वर SUID रूट है और एक रूट चलाता है।
काउंटरमॉड

जवाबों:


9

एक बार जब मैलवेयर का एक टुकड़ा उपयोगकर्ता के खाते में पहुंच जाता है, तो वह यह कर सकता है:

1.~/.bashrc एक कमांड (वर्तमान शेल में, और ) में एक कमांड बनाएं, जो [sudo] password for $USER:प्रॉम्प्ट को फेक करता है , और यूजर का पासवर्ड चुराता है।

alias sudo='echo -n "[sudo] password for $USER: " && \
            read -r password && \
            echo "$password" >/tmp/sudo-password'

2. इसी तरह, यह एक निष्पादन नामित जगह कर सकते हैं sudoमें ~/.bin, और संशोधित PATHएक ही प्रभाव को प्राप्त करने चर:PATH="$HOME/.bin:$PATH"

3. एक्स सर्वर के माध्यम से कुंजी दबाए रखें, शब्द के लिए देखें sudo, फिर Enterपासवर्ड के रूप में अगले दो प्रमुख प्रेस के बीच पाठ का प्रयास करें ।

4. उदाहरण के लिए किसी भी वातावरण (कंसोल, वेनल , एक्स) में एक समान काम किया जा सकता है $LD_PRELOAD

5. यदि मैलवेयर किसी ऐसे शेल को संक्रमित करता है जो उपयोग करता है sudo, और sudoक्रेडेंशियल्स को कैश करता है , तो मैलवेयर sudoबिना किसी पासवर्ड के संभव हो सकता है।

while : ; do
    echo | sudo -S echo "test" &>/dev/null && break
    sleep 10
done
sudo echo "We now have root access"


रोकथाम:

1 & 2. उपयोग करें \/bin/sudo\परग्रही जीवों की उपेक्षा /bin/…करता है $PATH। वैकल्पिक रूप से, एक उपनाम जोड़ें जैसे: ssudo="\/bin/sudo"और हमेशा ssudoइसके बजाय उपयोग करें sudo। यह संभव नहीं लगता है कि एक वायरस इस उपनाम को रीमैप करने के लिए पर्याप्त चतुर होगा।

3. X11 का उपयोग करते समय अपना पासवर्ड टाइप करने से बचें। इसके बजाय, वर्चुअल कंसोल या वेस्टन का उपयोग करें

5. सेट timestamp_timeout=0में /etc/sudoers


sudoपासवर्ड को सूँघने की संभावना को पूरी तरह से समाप्त करने का एकमात्र तरीका , इससे पूरी तरह से बचने के लिए लगता है। इसके बजाय, रूट के रूप में वर्चुअल कंसोल में लॉगिन करें।

अलेक्जेंडर पेस्लीक के अनुसार : "सु [और सूडो ] के लिए एकमात्र सुरक्षित उपयोग अधिक विशेषाधिकार प्राप्त खाते से कम विशेषाधिकार वाले खाते में स्विच करना है ..."


एक साइड नोट पर, sudo में कुछ काउंटरमेसर हैं:

  • sudoके ttyबजाय से पढ़ता है stdin, इसलिए alias sudo='tee -a /tmp/sudo-password | sudo'टूट जाता है sudo(लेकिन पासवर्ड कैप्चर करता है)।

sudo उपयोगकर्ताओं के पासवर्ड से पूछता है, इसलिए मैलवेयर उस उपयोगकर्ता के पासवर्ड को कैप्चर कर लेगा जिसे उसने पहले ही एक्सेस कर लिया था।
लूट

3
@rob: यह वास्तव में इस बात पर निर्भर करता है कि आप कैसे sudoकॉन्फ़िगर किए गए हैं, लेकिन किसी भी तरह से, अब मैलवेयर के पास पासवर्ड की आवश्यकता होती है sudo, इसलिए यदि उपयोगकर्ता के पास रूट एक्सेस है, तो मैलवेयर करता है।
ज़ाज़

3

कोई वास्तविक सुरक्षा नहीं है।

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

अगर मैं पहुंच का इरादा कर रहा था, तो मैं बैश और ज़ीश और मछली के लिए एक उपयोगी शिम बनाऊंगा, आदि मैं निष्पादित कमांड की निगरानी करूंगा। कुछ समय बाद एक सूडो शून्य की स्थिति के साथ वापस आ गया है, मैं "sudo chmod + s / bin / sh" या अन्य nastinesses जारी करना शुरू करूँगा।

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

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

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

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


1

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

SUDO - GRANULAR नियंत्रण

  • उपयोगकर्ता अनुभाग

    यह वह जगह है जहां आप उन समूहों के लिए सेटअप कर सकते हैं जिनके लिए आप कमांड निर्दिष्ट करेंगे। एक ऑपरेशन समूह सेट करता है;

    User_Alias  OPS = bob, jdoe 
    

    यह ओपीएस समूह बनाता है और बॉब और जेडो नाम के उपयोगकर्ताओं को समूह में रखता है

  • Cmnd_Alias

    यहां हम विशिष्ट कमांड सेट निर्दिष्ट करते हैं। आपको पूर्ण पथ और आपके द्वारा उपयोग किए जाने वाले किसी भी आदेश विकल्प को निर्दिष्ट करना होगा। संचालन समूह कमांड सेट करता है;

    Cmnd_Alias OPSCMD = /admin/bin/srvbkup, /admin/bin/test 
    

    यह तीन निर्दिष्ट कमांड को आदेश समूह OPSCMD में जोड़ता है।

  • उपयोगकर्ता विशेषाधिकार विशिष्टता

    यह वह जगह है जहां हम उन समूहों का उपयोग करेंगे जिनके पास हमने अभी तक सेटअप किया है;

    OPS  ALL=(root)  OPSCMD 
    

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

अपनी sudoनीतियों को उतना ही सख्त करें जितना आप अपने उपयोगकर्ताओं पर भरोसा नहीं करते :)


क्षमा करें, यदि मैं प्रश्न में स्पष्ट नहीं था, लेकिन मैं इस बारे में समझौता किए गए व्यवस्थापक खातों से बचाव करने में दिलचस्पी रखता हूं, तो यह कहना है कि जिन खातों में पूर्ण रूट विशेषाधिकार हैं sudo। विशेष रूप से, मैं सामान्य डेस्कटॉप सिस्टम के बारे में सोच रहा हूं।
ज़ैग

1

यदि आप एक ऐसी प्रणाली में रुचि रखते हैं, जिसे आप मानते हैं कि समझौता किया जा सकता है, तो "रूटकिट" चलाएं और फाइल सिस्टम की अखंडता की जांच करने के लिए "ट्रिपवायर" का उपयोग करें।

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


0

सबसे पहले /etc/sudoersफाइल पर एक नजर डालें ।

वाक्यविन्यास user MACHINE=COMMANDSप्रारूप होगा ।

उदाहरण के लिए रूट उपयोगकर्ता के पास root ALL=(ALL) ALL इसका अर्थ होगा कि रूट उपयोगकर्ता कहीं भी (सभी) कमांड चला सकता है।

यदि आपकी प्रविष्टि भी है ALL=(ALL)तो आप लगभग रूट उपयोगकर्ता के बराबर हैं। यदि यह मामला नहीं है और आपके पास केवल कुछ सीमित विशेषाधिकार हैं, तो हमलावर / मैलवेयर केवल उतना ही कर सकते हैं जितना आपका सुडोल विशेषाधिकार कर सकता है।

युक्तियाँ जो आपकी मदद कर सकती हैं:

  1. अपनी /etc/sudoersफ़ाइल की जाँच करें ।
  2. एक सुरक्षा स्कैनर चलाएं जैसे कि चकरोटिटक, रूटकिट हंटर, कॉन्फिग सर्वर एक्सप्लॉइट स्कैनर, स्नॉर्ट आदि।
  3. visudoअपने sudoers फ़ाइल के विशेषाधिकारों को संपादित करने और संशोधित करने के लिए कमांड का उपयोग करें ।
  4. स्कैनर फिर से चलाएं।

संदर्भ: sudoers और sudo man sudoers का लिनक्स मैन पेज

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