क्यों नहीं / var / www में chmod 777 होना चाहिए


67

किसी लोकलहोस्ट पर पेज विकसित करते समय, मुझे कभी-कभी "अनुमति अस्वीकृत" त्रुटि मिलती है जिसे मैं चलाकर हल कर सकता हूं chmod -R 777 /var/www। हालांकि, लोग मुझे बता रहे हैं कि सुरक्षा कारणों से यह एक बुरा विचार है।

/var/www777 का चामड़ क्यों नहीं होना चाहिए ?


मैं इस सर्वर पर @ serverfault.com की सिफारिश करना चाहूंगा। यह Apache2 और अनुमतियों के लिए एक उदाहरण सेटअप देने का एक बड़ा काम करता है। serverfault.com/q/6895/57036 PS मैं टिप्पणी नहीं कर सकता, इसलिए मुझे इसे उत्तर के रूप में जोड़ना होगा।
मिस्ट्रीमैक्स

जवाबों:


80

777 सामान्य रूप से एक खराब अनुमति है और मैं आपको दिखाता हूं कि क्यों।

यह कैसिनो या लास वेगास में कैसे दिख सकता है, इसके बावजूद 777 का मतलब आपके लिए जैकपॉट नहीं है। बल्कि, आपकी फ़ाइलों को संशोधित करने की इच्छा रखने वाले किसी भी व्यक्ति के लिए जैकपॉट। 777 (और उसके चचेरे भाई बदसूरत 666) पढ़ने और लिखने की अनुमतियाँ (और 777 के मामले में, निष्पादित करें) अनुमति देने के लिए अन्य । आप फ़ाइल अनुमतियाँ कैसे काम करते हैं , इसके बारे में अधिक जान सकते हैं , लेकिन संक्षेप में अनुमतियों के तीन समूह हैं: स्वामी, समूह, और अन्य । अनुमति के लिए 6 या 7 ( rw-या rwx) अन्य के लिए आप किसी भी उपयोगकर्ता को उन फ़ाइलों और फ़ोल्डरों को संपादित करने और हेरफेर करने की क्षमता देते हैं। आमतौर पर, जैसा कि आप कल्पना कर सकते हैं, यह सुरक्षा के लिए बुरा है।

यहाँ मेरा उदाहरण है:

marco@desktop:~/Projects/AskUbuntu/20105$ cd ..
marco@desktop:~/Projects/AskUbuntu$ chmod 0777 20105
marco@desktop:~/Projects/AskUbuntu$ cd 20105/
marco@desktop:~/Projects/AskUbuntu/20105$ ls -lah
total 8.0K
drwxrwxrwx 2 marco marco 4.0K 2011-01-04 20:32 .
drwxr-xr-x 3 marco marco 4.0K 2011-01-04 20:32 ..
marco@desktop:~/Projects/AskUbuntu/20105$ touch test
marco@desktop:~/Projects/AskUbuntu/20105$ chmod 0666 test 

अब तक मैंने एक फ़ोल्डर बनाया है और "खराब" अनुमतियों (777 और 666) के साथ एक फ़ाइल बनाई है। अब मैं दूसरे उपयोगकर्ता में बदलूंगा और उन फाइलों में हेरफेर करने की कोशिश करूंगा।

marco@desktop:~/Projects/AskUbuntu/20105$ sudo su - malicious
malicious@desktop:~$ cd /home/marco/Projects/AskUbuntu/20105
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ ls
test
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ ls -lah
total 8.0K
drwxrwxrwx 2 marco marco 4.0K 2011-01-04 20:33 .
drwxr-xr-x 3 marco marco 4.0K 2011-01-04 20:32 ..
-rw-rw-rw- 1 marco marco    0 2011-01-04 20:33 test
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ touch bad
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ echo "OVERWRITE" > test 
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ cat test 
OVERWRITE

इस "दुर्भावनापूर्ण" उपयोगकर्ता के रूप में मैं फ़ाइलों को निर्देशिका में रखने और पहले से मौजूद फ़ाइलों में पाठ को इंजेक्ट करने में सक्षम था। जबकि नीचे, 755 के साथ एक निर्देशिका में और 644 के साथ फाइलें, मैं फ़ाइलों और निर्देशिकाओं के अंदर देखने में सक्षम हूं, लेकिन मैं फ़ाइलों को संपादित नहीं कर सकता और न ही नए बना सकता हूं:

malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ cd /home/marco/Projects
malicious@desktop:/home/marco/Projects$ touch hey
touch: cannot touch `hey': Permission denied

अपाचे अनुमतियों के लिए, आप umask 022क्रमशः फ़ोल्डर और फ़ाइलों के लिए 0755 और 0644 (AKA ) से चिपके रहना चाहते हैं। यह आपको अपाचे को संचालित करने के लिए आवश्यक न्यूनतम स्तर की अपाचे देते हुए फाइलों के मालिक के रूप में उन्हें संपादित करने और उनमें हेरफेर करने की अनुमति देता है।


13
मुझे भाषा के लिए खेद है लेकिन यह एक किक-गधा जवाब है। धन्यवाद मार्को।
लुइस अल्वारादो

क्या होगा यदि आपने केवल उन लोगों के लिए उपयोगकर्ता बनाए हैं, जिन्हें स्वतंत्र रूप से / var / www फ़ोल्डर का प्रबंधन करने की अनुमति है? मैं अपने द्वारा चलाए जाने वाले प्रत्येक वेबसर्वर के लिए समर्पित वर्चुअल मशीनों का उपयोग करता हूं, और मुझे आश्चर्य है कि अगर यह अभी भी सच है कि आपको इतना सावधान रहना चाहिए।
उरकोम

1
@UrkoM आप कभी भी सावधान नहीं हो सकते। यदि आप चाहते हैं कि लोग उन्हीं फ़ाइलों को एक्सेस करें जो आप समूह की अनुमतियों को 6/7 (0664/0775) तक बढ़ा सकते हैं और प्रत्येक उपयोगकर्ता को उस समूह में जोड़ सकते हैं। हालांकि यह सेटअप (और जो मैंने अपने उत्तर में वर्णित किया है) हर मापदंड को पूरा नहीं करता है, मैं कहूंगा कि 0755/0644 के समय का 90% एक अच्छा समय है, अनुमतियाँ जिन्हें आप उपयोग करना चाहते हैं। आप केवल "एक उपयोगकर्ता" सिस्टम है तो होने का खतरा है अन्य लिखने की अनुमति के साथ नहीं है के रूप में ज्यादा एक जोखिम।
मार्को Ceppi

4
@UrkoM दूसरी बात पर विचार करना है कि बहुत सारे "उपयोगकर्ता" हैं जो वास्तविक लोगों का प्रतिनिधित्व नहीं करते हैं, लेकिन मौजूद हैं ताकि कुछ सेवाएं कम क्षमताओं (मुख्य रूप से सुरक्षा कारणों से, लेकिन नुकसान को कम करने के लिए भी चल सकें) एक स्थिरता बग से)। की सामग्री देखें /etc/passwdऔर आप जैसे उपयोगकर्ताओं देखेंगे mail, newsऔर nobody। यहां तक ​​कि अगर यह आपके सिस्टम के सभी वास्तविक मानव उपयोगकर्ताओं के लिए ठीक है /var/www, की सामग्री को संशोधित करने में सक्षम है , तो इसका मतलब यह नहीं है कि आप चाहते हैं कि ये सभी प्रक्रियाएं इन "कृत्रिम" उपयोगकर्ताओं को चलाने में सक्षम हों।
एलियाह कगन

1) जैसा कि सबसे सरल उत्तर हो सकता है। यह नहीं बताता है कि Apache या Nginx फ़ोल्डर्स या फ़ाइलों में हेरफेर कैसे कर सकता है। Apache या Nginx सर्वर हैं, ताकि अनुप्रयोग, वे आपके "दुर्भावनापूर्ण" उपयोगकर्ता नहीं हैं, वे टाइप नहीं कर सकते हैं ls -lah, touch badया कोई अन्य कमांड नहीं कर सकते हैं । वे फ़ोल्डर्स और फ़ाइलों में हेरफेर कैसे कर सकते हैं? 2) वंशानुक्रम। आपने उनके भीतर फ़ोल्डर्स और फ़ाइलों के बीच कोई विरासत को कवर नहीं किया। एक फ़ाइल से पहले कम से कम 2-3 कदम हैं: /var, /var/www, /var/www/project। उपयोगकर्ता / समूह की अनुमतियाँ क्या होनी चाहिए /var? उपयोगकर्ता / समूह की अनुमतियाँ क्या होनी चाहिए /var/www? और इसी तरह। वे कैसे सहयोग करते हैं?
ग्रीन

15

अनिवार्य रूप से, 777 की अनुमतियाँ आपको अपने दम पर हैक होने वाली नहीं हैं, लेकिन अगर किसी को कहीं भी सभी में एक टोकन मिलता है, तो इसका उपयोग अनुमतियों को बढ़ाने और आपके कंप्यूटर पर पूर्ण नियंत्रण प्राप्त करने के लिए किया जा सकता है। सबसे बुरी बात यह है कि आपकी अनुमतियां "7" का उपयोग कर रही हैं - इसका मतलब है कि अनुमतियाँ पढ़ें, लिखें, और निष्पादित करें

मान लीजिए कि कोई हैकर आपके कंप्यूटर को संभालना चाहता है। वह वेब ब्राउज़र का उपयोग करके आपके कंप्यूटर से जुड़ सकता है, http://yourcomputer.example.com:80/ से कनेक्ट हो रहा है। यदि आपके पास कोई पेज उपलब्ध है जो उसे चित्र अपलोड करने देता है, तो वह ".jpg" के साथ समाप्त करने के लिए एक निष्पादन योग्य नाम बदल सकता है और इसे अपने सर्वर पर अपलोड कर सकता है। अब वह अपने वेब ब्राउजर में उस फाइल को ब्राउज करता है और उसे चलाता है, क्योंकि लाइनक्स एक्सटेंशन की परवाह नहीं करता है, यह केवल देखता है कि यह एक निष्पादन योग्य फाइल है। हो सकता है कि वह उसे ज्यादा न पाएं, लेकिन क्योंकि यह बिल्कुल भी चलता है, वह जानता है कि यह अपाचे उपयोगकर्ता के रूप में चला। वह फिर एक संशोधित संस्करण अपलोड करता है जो अपाचे की कॉन्फिग फाइलों को संपादित करेगा, उसे और भी अधिक पहुंच प्रदान करेगा - मान लीजिए कि अपाचे / etc / passwd की सामग्री का उत्पादन करेगा। वह उस जानकारी का उपयोग करके देख सकता है कि उपयोगकर्ता सिस्टम पर क्या मौजूद है। वह ssh का उपयोग करके कनेक्ट कर सकता है और उन उपयोगकर्ताओं के रूप में लॉग इन करने के लिए सामान्य पासवर्ड आज़मा सकता है - यदि वह काम नहीं करता है तो वह पूरी तरह से बल-बल के हमले का उपयोग करने के लिए कदम उठाएगा। यदि वह sudo एक्सेस के साथ एक उपयोगकर्ता के रूप में मिलता है,

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

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


"Toehold" और "escalate" के लिए +1। अवधारणा को अच्छी तरह से बताता है।
कारी कौशल्या

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