अपाचे httpd "सर्वर:" HTTP हेडर बदलें


33

HTTP हेडर में से एक जो अपाचेhttpd प्रतिक्रिया डेटा के साथ वापस भेजता है वह "सर्वर" है। उदाहरण के लिए, मेरी वेब सर्वर मशीन आर्क लिनक्स से अपेक्षाकृत अधिक अद्यतन है। यह शीर्ष हेडर को निम्नलिखित से मिलता जुलता है:

HTTP/1.1 404 Not Found
Date: Thu, 10 Apr 2014 17:19:27 GMT
Server: Apache/2.4.9 (Unix)
Content-Length: 1149
Connection: close
Content-Type: text/html

मेरे पास ServerSignature offहै /etc/httpd/conf/httpd.conf, लेकिन "सर्वर:" हेडर अभी भी दिखाई देता है। मैंने mod_headers के साथ प्रयोग किया है । मेरे पास यह सक्षम है, और मैंने कुछ चीजें आजमाई हैं:

<IfModule headers_module>
Header set ProcessingTime "%D"
Header set Server BigJohn
</IfModule>

httpdउपरोक्त कॉन्फ़िगरेशन के साथ रुकने और शुरू करने के बाद , HTTP हेडर में कुछ शामिल हैं ProcessingTime: 1523, लेकिन "सर्वर:" हेडर लाइन अपरिवर्तित रहती है। तो मुझे पता है कि "mod_headers" स्थापित और सक्षम है, और काम कर रहा है, लेकिन जैसा मैं चाहता हूं।

मैं देखता हूं कि "mod_security" नाम की कोई चीज ऐसा करने का दावा करती है, लेकिन मैं नहीं चाहता कि बाकी सभी सामान उस mod_security के साथ हों।

अद्यतन करें:

एक बार जब आप mod_securityस्थापित हो जाते हैं, तो आपको केवल कुछ निर्देशों की आवश्यकता होती है:

<IfModule security2_module>
SecRuleEngine on
ServerTokens Full
SecServerSignature "Microsoft-IIS/6.0"
</IfModule>

वह mod_security2.7.7 के लिए है


3
क्या आपने गोपनीय फ़ाइल को बदलने के बाद से अपाचे को फिर से शुरू किया है? इसके अलावा मैंने 'httpd.com' नामक फ़ाइल को कभी नहीं देखा है, आमतौर पर इसे 'httpd.conf' कहा जाता है।
माइकल ओजेरानस्की

@MichaelOzeryansky - गलत वर्तनी को पकड़ने के लिए धन्यवाद। यह "httpd.conf" है, मैं httpd.conf बदलने के बाद httpd को रोकता हूँ और शुरू करता हूँ।
ब्रूस एडिगर

जवाबों:


12

सर्वर ID / टोकन हेडर को " ServerTokens " निर्देश (द्वारा प्रदान किया गया mod_core) द्वारा नियंत्रित किया जाता है । अपाचे HTTPD स्रोत कोड को संशोधित करने या mod_securityमॉड्यूल का उपयोग करने के अलावा , सर्वर आईडी हेडर को पूरी तरह से दबाने का कोई अन्य तरीका नहीं है ।

mod_securityदृष्टिकोण के साथ , आप modsecurity.confफ़ाइल में मॉड्यूल के सभी निर्देशों / कार्यों को अक्षम कर सकते हैं , और बिना किसी अतिरिक्त "सामान" के केवल सर्वर हेडर आईडी निर्देश का लाभ उठा सकते हैं।


यह काम करता है, बहुत बहुत धन्यवाद। मुझे यह ध्यान रखना है कि mod_security Arch Linux के साधारण पैकेज में से एक नहीं है। AUR में PKGBUILD है, लेकिन इसे 2011 से (12 अप्रैल, 2014 तक) अपडेट नहीं किया गया है और यह mod_security के एक बहुत पुराने संस्करण का संदर्भ देता है। हमेशा की तरह, आपका डिस्ट्रो भिन्न हो सकता है।
ब्रूस एडिगर

25

mod_security बहुत बढ़िया है, लेकिन आपको अपने लक्ष्य को प्राप्त करने के लिए वास्तव में इसकी आवश्यकता नहीं है।

के बाद सभी mods आप में शामिल किया गया है httpd.confबस अपने चयन के हेडर को परेशान कर सकते हैं।

Header unset Server

ServerSignature Off
ServerTokens Prod

http://httpd.apache.org/docs/2.4/mod/core.html#serversignature


2
mod_sec को कस्टम टेक्स्ट को पूरी तरह से काम अपाचे को छिपाने के लिए आवश्यक है अन्यथा आपका समाधान अच्छा और सरल है :)
intika

यह मेरे लिए कोई प्रभाव नहीं है अपाचे 2.2 (
पैचेड

1
अपाचे 2.4 में, इसे सिंटैक्स त्रुटि के रूप में सूचित किया जाता है: अमान्य कमांड 'हैडर', शायद सर्वर कॉन्फ़िगरेशन में शामिल नहीं किए गए एक मॉड्यूल द्वारा गलत वर्तनी या परिभाषित किया गया
रैप्टर

3
@ रैप्टर आपको mod_headers कोsudo a2enmod headers
Ortomala Lokni

1
Header unset ServerApache 2.2 और 2.4 में काम नहीं करता है। रिस्पांस हेडर में अभी भी शामिल हैंServer: Apache
मैरिस बी।

13

बस उन लोगों के लिए इसे अपडेट कर रहे हैं जो अभी भी देख रहे हैं। मुझे HTTP हेडर में सर्वर लाइन बदलने में परेशानी हो रही थी। यह सलाह प्रणाली और अपाचे 2.4.7 के साथ डेबियन शाखा डिस्ट्रोस के लिए काम करना चाहिए। विशेष रूप से, मैं Ubuntu सर्वर LTS 14.04.03 का उपयोग कर रहा हूं। कुछ सलाह मुझे करनी थी

grep -Ri servertokens /etc/apache2

यह मुझे /etc/apache2/conf-available/security.conf पर ले गया, जहाँ ServerTokens और ServerSignature दोनों निर्दिष्ट थे। इसलिए, मैं /etc/apache2/apache2.conf में जो भी बदलाव कर रहा हूं, वह पहले से ही सुरक्षा में निर्दिष्ट निर्देशों द्वारा अधिलेखित किया जा रहा था।

मैंने बस सुरक्षा में निर्देश बदल दिए हैं।

ServerTokens Prod
ServerSignature Off

हैडर अनसेट सर्वर के विषय पर, मुझे एक बग रिपोर्ट मिली, जहां अपाचे देवताओं ने कहा कि यह एक समस्या ठीक नहीं है। उनके लिए स्पष्ट रूप से यह एक दार्शनिक मुद्दा है, इसके बावजूद कि HTTP / 1.1, RFC 2616 के विनिर्देशन ने टिम बर्नर्स-ली के हिस्से में लिखा है, यह कहते हुए कि सर्वर टैग वैकल्पिक है।

मैं वास्तव में "क्वालिस" को खुश करने के लिए सर्वर टैग को "अज्ञात" पर सेट करना चाहता था। तो, मैंने mod_security स्थापित किया, जिसे अब इस DigitalOcean tutorial के बाद libapache2-modsecurity कहा जाता है । शुभकामनाएं, मुझे आशा है कि मैंने आप सभी भविष्य के पाठकों के लिए मदद की।


1

मैंने Oracle HTTP Server 11.1.1.9 (जो Apache 2.2.22 पर बनाया गया है) पर कुछ परीक्षण किया है, जो कुछ हद तक मेरे लिए काम करता है।

"ServerTokens" को "कोई नहीं" पर सेट करने से "Server" हेडर मान को हटाने लगता है, हालांकि हेडर स्वयं प्रतिक्रिया में भेजा जा रहा है, लेकिन अब इसका एक शून्य मान है।

ServerTokens कोई नहीं

प्रतिक्रिया शीर्षलेख इस तरह दिखेगा:

HTTP / 1.1 200 ठीक है

दिनांक: सोम, २: दिसंबर २०१५ ०:.० ९: ४५ जीएमटी

सर्वर:

अंतिम-संशोधित: सूर्य, 27 दिसंबर 2015 07:29:13 GMT


2
अपाचे 2.2 स्टॉक पर, सेंटोस 6 रेपो से, "कोई नहीं" के मूल्य को सेट करने से अपाचे सभी डेटा का उत्पादन करता है। उदाहरण के लिए: "सर्वर: Apache / 2.2.15 (CentOS) DAV / 2 PHP / 5.3.3 mod_ssl / 2.2.15 OpenSSL / 1.0.1e-phips_Passenger / 4.0.59 mod_perl / 2.0.4 Perl / v5.10.1"
jph

सहमत, आप noneनवीनतम Apache पर उपयोग नहीं कर सकते :ServerTokens takes 1 argument: 'Prod(uctOnly)', 'Major', 'Minor', 'Min(imal)', 'OS', or 'Full'
vladkras
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.