मैं सिर्फ एक उबंटू 11.10 बॉक्स का उपयोग करता हूं और फिर apt-get install apache2 php5
बॉक्स पर apache2 और PHP 5 स्थापित करने के लिए दौड़ा । अब यह "वेब सर्वर" के रूप में कार्य कर रहा है और यह "इट वर्क्स" को लोड करता है। पृष्ठ। अब मैं सुरक्षा बढ़ाने की कोशिश कर रहा हूं और मेरे पास लिनक्स वेब सर्वर के बारे में निम्नलिखित प्रश्न हैं:
- अपाचे को किसके रूप में चलना चाहिए?
- इस उपयोगकर्ता को किस समूह में होना चाहिए?
- क्या पैकेज (s) PHP (और Apache?) फ़ाइलों के स्वामी के रूप में चला सकते हैं? (जैसे साझा वेब होस्ट पर) क्या मुझे इन पैकेजों का उपयोग करना चाहिए? क्या वे एक छोटी प्रणाली पर बनाए रखने में आसान / संभव हैं?
- वेब पर अपाचे के साथ चलने वाली फ़ाइलों और फ़ोल्डरों के लिए डिफ़ॉल्ट अनुमतियाँ क्या होनी चाहिए
www-data
? उपयोगकर्ता के रूप में अपाचे / php के लिए चल रहा है?
मैंने डिफ़ॉल्ट सेटअप की जांच में निम्नलिखित बातें की हैं:
फ़ाइल संरचना
जब मैं cd /
और एक कर ls -al
सामग्री की लिस्टिंग, मैं देख रहा हूँ /var
:
drwxr-xr-x 13 root root 4096 2012-02-04 20:47 var/
मैं तो cd
में var
और है ls -al
मैं देख रहा हूँ:
drwxr-xr-x 2 root root 4096 2012-02-04 20:47 www/
अंत में, /var/www
मैं अंदर देखता हूं:
drwxr-xr-x 2 root root 4096 2012-02-04 20:47 ./
drwxr-xr-x 13 root root 4096 2012-02-04 20:47 ../
-rw-r--r-- 1 root root 177 2012-02-04 20:47 index.html
मेरा मुख्य साधन यह है कि अब तक ये सभी root:root
फाइलें 644 की अनुमतियों की हैं, और निर्देशिकाओं की 755 की अनुमति है।
अपाचे की अनुमतियाँ
यदि मैं /var/www/test.php
सामग्री के साथ रूट के रूप में एक फ़ाइल बनाता हूं :
<?php echo shell_exec('whoami');
और उस फ़ाइल को एक ब्राउज़र में लोड करें जो मुझे बताती है www-data
, जो कि फ़ाइल के समान है /etc/apache2/envvars
:
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
अगर मैं ps aux | grep -i apache
निम्नलिखित देखता हूं:
root 1916 1.2 104664 7488 Ss 20:47 /usr/sbin/apache2 -k start
www-data 1920 0.8 105144 5436 S 20:47 /usr/sbin/apache2 -k start
www-data 1921 1.0 105144 6312 S 20:47 /usr/sbin/apache2 -k start
www-data 1922 0.7 104688 4624 S 20:47 /usr/sbin/apache2 -k start
www-data 1923 0.7 104688 4624 S 20:47 /usr/sbin/apache2 -k start
www-data 1924 0.7 104688 4624 S 20:47 /usr/sbin/apache2 -k start
www-data 1925 0.7 104688 4624 S 20:47 /usr/sbin/apache2 -k start
तो कौन अपाचे के रूप में चल रहा है? ऐसा लगता है कि शायद पहली प्रक्रिया इस प्रकार है root
, हो सकता है कि /etc/init.d/apache
स्क्रिप्ट से जब सिस्टम शुरू हुआ हो, और अन्य www-data
पहले के रूप में पैदा हुए हों। क्या वो सही है?
अगला, अगर मैं टाइप करता हूं groups www-data
तो मैं देखता हूं www-data : www-data
- इसलिए यह केवल www-data
समूह में होना चाहिए । मुझे लगता है कि यह मानक अभ्यास है।
साझा होस्टिंग और सुरक्षा
इसलिए यदि मैं चीजों को सही ढंग से समझता हूं, अगर अपाचे के रूप में चल रहा है www-data
और मैं चाहता हूं कि अपाचे एक निर्देशिका को पढ़ने में सक्षम हो, तो x
बिट को दुनिया (अन्य) समूह ( o+x
) के लिए सेट करने की आवश्यकता है, और यह भी सभी माता-पिता पर सेट करने की आवश्यकता है सभी तरह से श्रृंखला ( www
, var
) निर्देशिका। और अगर मैं चाहता हूं कि अपाचे एक फ़ाइल से पढ़ने में सक्षम हो, तो o+r
बिट को सेट करने की आवश्यकता है।
दुर्भाग्य से मेरा मानना है कि यह एक ही बॉक्स पर कई अनुप्रयोगों और / या कई उपयोगकर्ताओं के लिए एक सुरक्षा छेद का परिचय देता है: सभी वेब फ़ाइलों को विश्व-पठनीय होना चाहिए, और इसलिए वे सिस्टम पर अन्य अनुप्रयोगों और अन्य उपयोगकर्ताओं द्वारा भी सुलभ हैं। यदि सिस्टम पर स्थापित एक अनुप्रयोग में सुरक्षा भेद्यता थी, जो कच्चे, प्रचलित उपयोगकर्ता इनपुट की अनुमति देता था, जिसे तब PHP द्वारा निष्पादित किया जाता था, एक दूरस्थ हमलावर तब वेब सिस्टम पर सभी अन्य फ़ाइलों को ब्राउज़ कर सकता था जो दुनिया में पठनीय थे। इसी तरह, यदि बॉक्स में कई उपयोगकर्ता थे, और एक उपयोगकर्ता किसी अन्य उपयोगकर्ता की वेब फ़ाइलों का पथ जानता था, तो वह फ़ाइल सामग्री को पढ़ सकता था (और डेटाबेस कनेक्शन स्ट्रिंग्स, आदि जैसी संवेदनशील चीजें देख सकता था)।
मैंने दो पैकेजों के बारे में सुना है, suphp
और phpsuexec
यह एक साझा प्रणाली पर उपयोगकर्ताओं की फ़ाइलों को "उन्हें" के रूप में "बाहर" दिए जाने की अनुमति देता है। इनमें से एक उपनाम यह है कि यह वेब एप्लिकेशन (जैसे वर्डप्रेस) को फाइल बनाने और संशोधित करने की अनुमति देता है - थीम, प्लगइन्स को जोड़ने और सॉफ़्टवेयर को अपग्रेड करने के लिए बहुत उपयोगी है। बेशक, इन चीजों को मैन्युअल रूप से करना अधिक सुरक्षित है, लेकिन क्या उपरोक्त उल्लिखित पैकेजों में से एक के साथ समझौता किया जा सकता है? या संभवतः chown
वर्डप्रेस निर्देशिका समूह बनाने के लिए उपयोग करके समूह www-data
पर चिपचिपा बिट सेट करें ( g+s
)?
मैंने इन्हें केवल एक वेब होस्टिंग कंपनी के अंतिम उपयोगकर्ता के रूप में इस्तेमाल किया है, और इसलिए मैं इन-इन-आउट के बारे में नहीं जानता, और यदि वे एक छोटी सी प्रणाली पर स्थापित करने के लिए उचित हैं, या यदि कुछ और हैं सुरक्षा उपाय जो मुझे इसके बजाय उपयोग करने चाहिए, लेकिन मैंने सोचा कि मैं उनका उल्लेख यहां करूंगा क्योंकि वे मेरी कुछ चिंताओं को दूर करने के एक संभावित तरीके की तरह प्रतीत होते हैं।
वापस प्रश्नों के लिए
- अपाचे को किसके रूप में चलना चाहिए?
- इस उपयोगकर्ता को किस समूह में होना चाहिए?
- क्या पैकेज (s) PHP (और Apache?) फ़ाइलों के स्वामी के रूप में चला सकते हैं? (जैसे साझा वेब होस्ट पर) क्या मुझे इन पैकेजों का उपयोग करना चाहिए? क्या वे एक छोटी प्रणाली पर बनाए रखने में आसान / संभव हैं?
- वेब पर अपाचे के साथ चलने वाली फ़ाइलों और फ़ोल्डरों के लिए डिफ़ॉल्ट अनुमतियाँ क्या होनी चाहिए
www-data
? उपयोगकर्ता के रूप में अपाचे / php के लिए चल रहा है?