संस्करण को छिपाने का एक विकल्प है, इसलिए यह केवल नगनेक्स प्रदर्शित करेगा, लेकिन क्या इसे छिपाने का एक तरीका है ताकि यह कुछ भी नहीं दिखाएगा या हेडर को बदल देगा?
संस्करण को छिपाने का एक विकल्प है, इसलिए यह केवल नगनेक्स प्रदर्शित करेगा, लेकिन क्या इसे छिपाने का एक तरीका है ताकि यह कुछ भी नहीं दिखाएगा या हेडर को बदल देगा?
जवाबों:
अपाचे की तरह, यह स्रोत और recompile के लिए एक त्वरित संपादन है। से Calomel.org :
सर्वर: स्ट्रिंग हेडर है जो क्लाइंट को यह बताने के लिए वापस भेजा जाता है कि आप किस प्रकार का http सर्वर चला रहे हैं और संभवतः किस संस्करण में हैं। इस स्ट्रिंग का उपयोग एलेक्सिया और नेटक्राफ्ट जैसी जगहों पर आँकड़ों को इकट्ठा करने के लिए किया जाता है कि इंटरनेट पर कितने और किस तरह के वेब सर्वर हैं। Nginx के लिए लेखक और आंकड़ों का समर्थन करने के लिए हम इस स्ट्रिंग को रखने की सलाह देते हैं। लेकिन, सुरक्षा के लिए आप नहीं चाहते कि लोग यह जान सकें कि आप क्या चला रहे हैं और आप इसे स्रोत कोड में बदल सकते हैं।
src/http/ngx_http_header_filter_module.c
48 और 49 लाइनों को देखते हुए स्रोत फ़ाइल को संपादित करें । आप स्ट्रिंग को अपनी इच्छानुसार बदल सकते हैं।
## vi src/http/ngx_http_header_filter_module.c (lines 48 and 49)
static char ngx_http_server_string[] = "Server: MyDomain.com" CRLF;
static char ngx_http_server_full_string[] = "Server: MyDomain.com" CRLF;
मार्च 2011 संपादित करें: फ्लेवियस के प्रॉप्स नीचे एक नया विकल्प उनका कहना है, Nginx के मानक की जगह के लिए HttpHeadersModule साथ काँटेदार HttpHeadersMoreModule । मानक मॉड्यूल को फिर से जमा करना अभी भी जल्दी ठीक है, और समझ में आता है कि क्या आप मानक मॉड्यूल का उपयोग करना चाहते हैं और सर्वर स्ट्रिंग को अक्सर नहीं बदलेंगे। लेकिन अगर आप इससे अधिक चाहते हैं, तो HttpHeadersMoreModule एक मजबूत परियोजना है और आपको अपने HTTP हेडर के साथ सभी प्रकार के रनटाइम ब्लैक मैजिक करने देता है।
r->headers_out.server
।
यदि आप एक बैक-एंड एप्लिकेशन को प्रॉक्सी करने के लिए nginx का उपयोग कर रहे हैं और चाहते हैं कि Server:
nginx को ओवरराइट किए बिना अपने हेडर का विज्ञापन करें , तो आप अपने server {…}
श्लोक के अंदर जा सकते हैं और सेट कर सकते हैं :
proxy_pass_header Server;
यह नेगनेक्स को उस हेडर को अकेले छोड़ने के लिए मनाएगा और बैक-एंड द्वारा निर्धारित मूल्य को फिर से नहीं लिखेगा।
अंतिम अपडेट कुछ समय पहले हुआ था, इसलिए यहाँ उबंटू पर मेरे लिए काम किया गया है:
sudo apt-get update
sudo apt-get install nginx-extras
फिर निम्नलिखित दो पंक्तियों को उस http
अनुभाग में जोड़ें nginx.conf
, जो आमतौर पर /etc/nginx/nginx.conf पर स्थित होता है:
sudo nano /etc/nginx/nginx.conf
server_tokens off; # removed pound sign
more_set_headers 'Server: Eff_You_Script_Kiddies!';
इसके अलावा, के साथ nginx पुनः आरंभ करने के लिए मत भूलना sudo service nginx restart
।
more_set_headers 'Server: ';
सरल, /etc/nginx/nginx.conf संपादित करें और टिप्पणी को हटा दें
#server_tokens off;
HTTP अनुभाग खोजें ।
यह बहुत सरल है: इन पंक्तियों को सर्वर सेक्शन में जोड़ें:
server_tokens off;
more_set_headers 'Server: My Very Own Server';
nginx-extra
उस मॉड्यूल को प्राप्त करने के लिए इंस्टॉल कर सकते हैं ।
एक विशेष मॉड्यूल है: http://wiki.nginx.org/NginxHttpHeadersMoreModule
यह मॉड्यूल आपको आपके द्वारा निर्दिष्ट किसी भी आउटपुट या इनपुट हेडर को जोड़ने, सेट करने या साफ़ करने की अनुमति देता है।
इस मानक का एक उन्नत संस्करण है हेडर मॉड्यूल क्योंकि यह की तरह रीसेट करके या समाशोधन "हेडर निर्मित" की तरह अधिक उपयोगिताओं प्रदान करता है
Content-Type
,Content-Length
औरServer
।यह आपको
-s
विकल्प का उपयोग करके एक वैकल्पिक HTTP स्थिति कोड मानदंड और विकल्प का उपयोग करके एक वैकल्पिक सामग्री प्रकार मानदंड निर्दिष्ट करने की अनुमति देता है ,-t
जबकि आउटपुट हेडर को अधिक_सेट_हेडर्स और more_clear_headers निर्देशों के साथ संशोधित करता है ...
--add-module=/path-to-headers-more-nginx-module
Nginx अतिरिक्त स्थापित करें
sudo apt-get update
sudo apt-get install nginx-extras
सर्वर विवरण nginx.conf (http अनुभाग के तहत) में दो पंक्तियों को जोड़कर प्रतिक्रिया से हटाया जा सकता है
more_clear_headers Server;
server_tokens off;
yum install nginx-extras
काम नहीं करता है - मुझे लगता है कि यह काम डेबिया / उबंटू आदि पर काम करता है apt-get
)।)
यदि आप ठीक से हेडर को दूसरे स्ट्रिंग पाँच अक्षरों या उससे कम में बदल रहे हैं, तो आप बस बाइनरी पैच कर सकते हैं।
sed -i 's/nginx\r/thing\r/' `which nginx`
जो, समाधान के रूप में, कुछ उल्लेखनीय फायदे हैं। अर्थात्, आप अपने nginx संस्करण को पैकेज प्रबंधक द्वारा नियंत्रित करने की अनुमति दे सकते हैं (इसलिए, स्रोत से कोई संकलन नहीं) भले ही nginx-extras आपके distro के लिए उपलब्ध नहीं है, और आपको अतिरिक्त में से किसी के बारे में चिंता करने की आवश्यकता नहीं है नग्नेक्स-एक्सट्रा जैसी किसी चीज़ का कोड असुरक्षित है।
बेशक, आप विकल्प को सेट करना चाहते server_tokens off
हैं, संस्करण संख्या को छिपाने के लिए, या उस प्रारूप स्ट्रिंग को भी पैच कर सकते हैं।
मैं कहता हूं "पांच अक्षर या उससे कम" क्योंकि निश्चित रूप से आप हमेशा बदल सकते हैं:
nginx \ r \ 0
साथ में
बॉब \ r \ 0 \ r \ 0
पिछले दो बाइट्स को अपरिवर्तित छोड़ दें।
यदि आप वास्तव में पाँच से अधिक वर्ण चाहते हैं, तो आप server_tokens को छोड़ना चाहते हैं, और (थोड़ी लंबी) प्रारूप स्ट्रिंग को बदल सकते हैं, हालांकि फिर से प्रारूप स्ट्रिंग की लंबाई द्वारा लगाए गए उस लंबाई की एक ऊपरी सीमा है - 1 (के लिए) कैरिज रिटर्न)।
... यदि उपरोक्त में से कोई भी आपके लिए समझ में नहीं आता है, या आपने पहले कभी बाइनरी पैच नहीं किया है, तो आप इस दृष्टिकोण से दूर रहना चाह सकते हैं, हालांकि।
sed
कमांड को ऊपर चलाएंगे , यह `which nginx`
हिस्सा बाइनरी के लिए रास्ता देता है, और sed
कमांड बाइट रिप्लेसमेंट करता है।
nginx
परिवर्तनों को प्रभावी करने के लिए पुनः आरंभ करने की आवश्यकता है तो मुझे आश्चर्य नहीं होगा । वो सब कहा? मेरा आपसे आग्रह है कि आप अन्य उत्तरों में से एक का उपयोग न करें। अगर मैं कह रहा हूं कि सभी चीजें पहले से ही आपके लिए परिचित नहीं हैं, और आप नहीं जानते कि /etc
निर्देशिका क्या है, तो इस तरह का एक हैक खतरनाक है।
फ़ाइल src / http / ngx_http_header_filter_module.c को संशोधित करने का एकमात्र तरीका है। मैंने ४। पर एक अलग स्ट्रिंग में नंगेक्स को बदल दिया।
आप nginx config फ़ाइल में क्या कर सकते हैं बंद करने के लिए server_tokens सेट करने के लिए है। यह नेगनेक्स को संस्करण संख्या को प्रिंट करने से रोकेगा।
चीजों की जाँच करने के लिए, कोशिश कर्ल मैं http://vurbu.com/ | grep सर्वर
इसे वापस लौटना चाहिए
Server: Hai
पार्थियन शॉट के उत्तर को पढ़ने के बाद, मैं /usr/sbin/nginx
बाइनरी फ़ाइल में खुदाई करता हूं । तब मुझे पता चला कि फ़ाइल में ये तीन लाइनें हैं।
Server: nginx/1.12.2
Server: nginx/1.12.2
Server: nginx
मूल रूप से उनमें से पहले दो server_tokens on;
निर्देश (सर्वर संस्करण शामिल हैं) के लिए हैं। फिर मैं बाइनरी फ़ाइल के भीतर उन लाइनों से मेल खाने के लिए खोज मानदंड बदल देता हूं।
sed -i 's/Server: nginx/Server: thing/' `which nginx`
मैंने आगे खुदाई करने के बाद मुझे पता चला कि nginx द्वारा उत्पन्न त्रुटि संदेश भी इस फ़ाइल में शामिल है।
<hr><center>nginx</center>
उनमें से तीन हैं, एक संस्करण के बिना, उनमें से दो संस्करण शामिल थे। इसलिए मैं त्रुटि संदेश के भीतर nginx स्ट्रिंग को बदलने के लिए निम्न कमांड चलाता हूं।
sed -i 's/center>nginx/center>thing/' `which nginx`
/usr/sbin
फ़ोल्डर के अंदर निष्पादित आपकी पहली कमांड से यह पैदावार होती है:sed: can't read is: No such file or directory
Nginx प्रलेखन के अनुसार यह कस्टम मान या बहिष्करण का समर्थन करता है:
Syntax: server_tokens on | off | build | string;
लेकिन दुख की बात केवल एक व्यावसायिक सदस्यता के साथ :
इसके अतिरिक्त, हमारी वाणिज्यिक सदस्यता के हिस्से के रूप में, संस्करण 1.9.13 से शुरू होने पर त्रुटि पृष्ठों पर हस्ताक्षर और "सर्वर" प्रतिक्रिया हेडर फ़ील्ड मान स्पष्ट रूप से चर के साथ स्ट्रिंग का उपयोग करके सेट किया जा सकता है। एक खाली स्ट्रिंग "सर्वर" फ़ील्ड के उत्सर्जन को निष्क्रिय करता है।
मुझे पता है कि पोस्ट थोड़े पुरानी है, लेकिन मुझे एक समाधान आसान लगा है, जो स्रोत से नग्नेक्स को संकलित किए बिना डेबियन आधारित वितरण पर काम करता है।
पहले nginx-extras पैकेज स्थापित करें
sudo apt स्थापित नग्नेक्स-एक्सट्रा
फिर nginx.conf को संपादित करके और सर्वर ब्लॉक के अंदर निम्न पंक्ति जोड़कर nginx http हेडर को अधिक मॉड्यूल लोड करें
load_module मॉड्यूल / ngx_http_headers_more_filter_module.so;
एक बार यह हो जाने के बाद आपके पास और अधिक_सेट_हेडर्स और अधिक_क्लेअर_हेडर्स निर्देशों तक पहुँच होगी।
अब नगनेक्स-अतिरिक्त पैकेज को हटा दिया गया है।
इसलिए निम्न ने अब मेरे लिए काम किया क्योंकि मैंने विभिन्न पैकेज अधिक_सेट_हेडर्स 'सर्वर: माई वेरी ओन सर्वर' स्थापित करने की कोशिश की;
आप बस निम्नलिखित कर सकते हैं और कोई सर्वर या संस्करण जानकारी वापस नहीं भेजी जाएगी
server_tokens '';
यदि आप अभी संस्करण संख्या को निकालना चाहते हैं तो यह काम करता है
server_tokens off;
क्या आप प्रतिक्रिया में सर्वर हेडर मूल्य के बारे में पूछ रहे हैं? आप एक add_header निर्देश के साथ इसे बदलने की कोशिश कर सकते हैं, लेकिन मुझे यकीन नहीं है कि यह काम करेगा। http://wiki.codemongers.com/NginxHttpHeadersModule