सवाल क्या मैं सभी सर्वर / ओएस जानकारी छुपा सकता हूं?


मैं नहीं चाहता कि कोई भी यह पता लगाने में सक्षम हो कि मैं इंटरनेट से एनजीआईएनएक्स या यहां तक ​​कि उबंटू का उपयोग कर रहा हूं। वहाँ उपकरण हैं (जैसे बिल्टविथ) जो सर्वर को स्कैन करने के लिए स्कैन करते हैं कि वे किस उपकरण का उपयोग कर रहे हैं। इसके अलावा, कुछ क्रैकिंग टूल्स डिटेटिंग में मदद कर सकते हैं। सबसे अच्छा / निकटतम क्या है कि मैं इस सारी जानकारी को बाहर से छुपा सकता हूं?


59
2017-12-19 21:00


मूल




जवाब:


आप इसे जोड़कर Nginx और OS के संस्करण को आउटपुट करना बंद कर सकते हैं

server_tokens off;

ए के लिए http, server, या location संदर्भ।

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

 more_clear_headers Server;

हालांकि, कई छिपे हुए तरीके सर्वर उनके कार्यान्वयन के माध्यम से दुर्घटना से प्रदर्शन करते हैं जो सिस्टम की पहचान करने में मदद कर सकते हैं। जैसे यह एक खराब एसएसएल अनुरोध का जवाब कैसे देता है। मुझे इसे रोकने का व्यावहारिक तरीका नहीं दिख रहा है।

कुछ चीजें जो मैं सुझा सकता हूं:

  • त्रुटि टेम्पलेट्स बदलें
  • आवश्यक सेवाओं को छोड़कर सभी बंदरगाहों को ब्लॉक करें

87
2017-12-19 21:18



माना। उदाहरण के लिए एनएमएपी के ओएस डिटेक्शन को देखें - यह लक्ष्य मेजबान के आईपी / टीसीपी अनुरोधों के जवाबों को देखता है और इस तरह ओएस को निर्धारित करने में सक्षम है। इसमें वास्तव में प्रयास करने लायक नहीं है। - EEAA
एरिका की सलाह पर +1। अस्पष्टता के माध्यम से सुरक्षा पर भरोसा करने के बजाय अपने सर्वर को जितना संभव हो उतना सुरक्षित करने के लिए बेहतर है। - Andy Smith
@ एरिका, @ एंडी, @ एंडी स्मिथ - धन्यवाद दोस्तों। - orokusaki
सर्वर टोकन केवल संस्करण संख्या को बंद कर देता है। Nginx पूरी तरह से हेडर को हटाने की अनुमति नहीं देता है। - Martin Fjordvald
"कोई संस्करण संख्या" जैसे महत्वपूर्ण सुरक्षा कारकों को अनदेखा करना और शायद "कोई भी सर्वर विक्रेता नाम" पूरी तरह से नहीं है ... शुरुआती गलती। बेशक अस्पष्टता के माध्यम से सुरक्षा आपकी सुरक्षा के लिए कुछ भी नहीं करती है परंतु यह सुनिश्चित है कि नरक कम से कम सबसे अधिक प्रचलित, सरल हमले वैक्टरों के खिलाफ सुरक्षा करेगा - अस्पष्टता के माध्यम से सुरक्षा एक है ज़रूरी कदम, यह पहला हो सकता है और चाहिए कभी नहीँ अंतिम सुरक्षा माप हो - इसे पूरी तरह से छोड़ना एक है बहुत खराब गलती, यहां तक ​​कि सबसे सुरक्षित वेबसर्वर भी क्रैक किए जा सकते हैं यदि संस्करण-विशिष्ट हमले वेक्टर ज्ञात हैं। - specializt


यदि आपने डेबियन या उबंटू में एपीटी-गेट का उपयोग करके nginx इंस्टॉल किया है, तो आपको "सर्वर" हेडर सेट या साफ़ करने के लिए पैकेज nginx-extras को स्थापित करने की आवश्यकता हो सकती है

एक बार यह हो जाने के बाद, आप nginx.conf (आमतौर पर /etc/nginx/nginx.conf) में नीचे दी गई पंक्तियां जोड़ सकते हैं:

"सर्वर" शीर्षलेख को पूरी तरह से साफ़ करने के लिए:

more_clear_headers Server; 

एक कस्टम स्ट्रिंग को "सर्वर" के रूप में सेट करने के लिए

more_set_headers 'Server: some-string-here';

20
2018-03-29 04:19



की पुष्टि की more_clear_headers Server; डेबियन जेसी 8.5 nginx संस्करण पर भी काम करता है: nginx / 1.6.2 - Brandon
इस उत्तर को और अधिक उन्नयन की जरूरत है। यद्यपि शायद यह ध्यान दिया जाना चाहिए कि निर्देश को फ़ाइल फ़ाइल के http ब्लॉक के अंदर रखा जाना चाहिए (मुझे लगता है) - Andy
यह काम करता है http, server, location, तथा location if संदर्भों। स्रोत: ngx_headers_more प्रलेखन - Kelvin


@ मार्टिन एफ। हाँ यह करता है। आपको इसे स्रोत से संकलित करना होगा और स्रोत को संकलित करने से पहले क्या आवश्यक है उसे बदलना होगा।

मुझे लगता है कि आपने आखिरी स्थिर संस्करण डाउनलोड किया है जिसे आपने इसे डंप्रेस किया था और आप जानते हैं कि फाइलें कहां हैं। यदि ऐसा है, तो निम्न कार्य करें:

nano src/http/ngx_http_header_filter_module.c

फिर अगर मुझे सही याद आती है तो लाइन 48 की तलाश करें।

static char ngx_http_server_string[] = "Server: nginx" CRLF;

Nginx को MyWhateverServerNameIWant उदा।

static char ngx_http_server_string[] = "Server: MyWhateverServerNameIWant" CRLF; 

फिर

nano src/core/nginx.h 

लाइन के लिए देखो

#define NGINX_VER          "nginx/" NGINX_VERSION

"nginx /" को "MyWhateverServerNameIwant /" में बदलें ताकि यह पढ़ सके

#define NGINX_VER          "MyWhateverServerNameIWant" NGINX_VERSION

अंत में यदि आप संस्करण संख्या भी बदलना चाहते हैं

लाइन के लिए देखो     # परिभाषित करें NGINX_VERSION "1.0.4"

और जो भी संस्करण आप चाहते हैं उसके लिए "1.0.4" बदलें। उदाहरण के लिए यह पढ़ेगा

#define NGINX_VERSION      "5.5.5"

आशा करता हूँ की ये काम करेगा। फिर भी। एक सर्वर को सुरक्षित करना दिखा रहा है कि क्या चल रहा है। PHP प्रकृति असुरक्षित है, और लिनक्स भी है। एक सभ्य सुरक्षा प्राप्त करने के लिए सभी आवश्यक उपायों को लिया जाता है, तो पाठ्यक्रम लिनक्स बहुत सुरक्षित हो सकता है। जहां तक ​​PHP का संबंध है, मैं उपयोग करने की सिफारिश करता हूं Suoshin अपने कोड की सुरक्षा को सख्त करने में मदद के लिए।


17
2018-06-11 04:36



+1, धन्यवाद। मैं आसान तरीका के कारण @ एंडी को आधिकारिक के रूप में छोड़ रहा हूं, लेकिन यह उत्कृष्ट जानकारी है। - orokusaki
मुझे लगता है कि आप सुहोसिन का मतलब है। - Beetle


उबंटू पर nginx के कस्टम स्वाद के लिए काम करने के बहुत समय बाद मुझे एहसास हुआ कि आप इसके लिए लुआ मॉड्यूल का उपयोग कर सकते हैं।

यदि आप इंस्टॉल करते हैं तो उबंटू 14.04 पर nginx-extras पैकेज का उपयोग करके आप सर्वर हेडर को हटा सकते हैं:

header_filter_by_lua 'ngx.header["server"] = nil';

इसे http ब्लॉक में फेंक दें और प्रत्येक अनुरोध में कमी होगी Server हैडर।

अगर यह काम नहीं करता है nginx -V यह सत्यापित करने के लिए कि आपके पास lua मॉड्यूल nginx की आपकी प्रति में संकलित है। यदि नहीं, तो संभवतः एक वैकल्पिक पैकेज है जिसका उपयोग आप इसे प्राप्त करने के लिए कर सकते हैं।


7
2017-12-18 05:45



डेबियन जेसी 8.5 nginx संस्करण पर इस काम की पुष्टि की: nginx / 1.6.2 - Brandon
डेबियन परीक्षण पर यह काम नहीं लगता है लेकिन स्थापित करना nginx-extra बनाया गया more_set_headers "Server: whatever"; काम, तो +1: डी - Shautieh
काम करने के लिए आपको केवल LUA सक्षम होना चाहिए। tnx - glavić


के स्थान पर header_filter_by_lua नए निर्देश का उपयोग करने की सिफारिश की जाती है header_filter_by_lua_block जो सीधे घुंघराले ब्रेसिज़ के बीच लुआ स्रोत को रेखांकित करता है ({})। इसके साथ विशेष पात्रों से बचने के लिए इसकी आवश्यकता नहीं है।

header_filter_by_lua_block { ngx.header["server"] = nil }

https://github.com/openresty/lua-nginx-module#header_filter_by_lua_block


6
2017-10-02 07:08





Nginx स्रोत कोड फ़ोल्डर में इस बैश फ़ंक्शन को चलाएं। Nginx- $ संस्करण में, src / में नहीं।

आधारित इस जवाब पर

hidengxver () {
read -r -p "Your own http_server_string for safety: " http_server_string
first_string="static char ngx_http_server_string\[\] = \"Server: nginx\" CRLF;"
second_string="static char ngx_http_server_string\[\] = \"$http_server_string\" CRLF;"
sed -ire "s/$first_string/$second_string/g" src/http/ngx_http_header_filter_module.c

read -r -p "Your own NGINX_VER const: " nginx_ver
third_string="\#define NGINX\_VER          \"nginx\/\" NGINX\_VERSION"
forth_string="\#define NGINX\_VER          \"$nginx_ver\" NGINX\_VERSION"
sed -ire "s/$third_string/$forth_string/g" src/core/nginx.h

real_nginx_version=$( grep '#define NGINX_VERSION' src/core/nginx.h | gawk -F'"' '{print $2}' )
read -r -p "Your own NGINX_VERSION const: " new_nginx_version
fifth_string="\#define NGINX\_VERSION      \"$real_nginx_version\""
sixth_string="\#define NGINX\_VERSION      \"$new_nginx_version\""
sed -ire "s/$fifth_string/$sixth_string/g" src/core/nginx.h
}

0
2017-10-27 20:07





सबसे पहले: हेडर अधिक Nginx के रूप में एक अतिरिक्त मॉड्यूल का उपयोग क्यों? केवल सर्वर हेडर छुपाने के लिए। यदि कुछ रेखाएं हैं, तो सरल पैच आपके लिए एक ही समाधान तक पहुंच सकता है।

एक अतिरिक्त मॉड्यूल का उपयोग करने के परिणामस्वरूप अस्थिरता (आपके पर्यावरण के साथ कितनी अच्छी तरह से परीक्षण किया गया है? आपके अन्य मॉड्यूल इत्यादि के साथ) या असुरक्षा (क्या यह मॉड्यूल नियमित रूप से बग और / या सुरक्षा संबंधी फिक्स के साथ अपडेट किया गया है?)

दूसरी बात। यह धागा उत्तर 27938 9 के रूप में वर्णन करता है कि आप सर्वर हेडर को बदलने के लिए Nginx कोड को कैसे समायोजित कर सकते हैं। समस्या यह है कि वे HTTP / 2 भूल गए हैं। संक्षेप में, कुछ भी नहीं बदलेगा। सर्वर हेडर अभी भी दिखाई देगा।

कम बेहतर है। ठीक है, मैं मानता हूं, मैं भी लंबे समय से एक अच्छा समाधान ढूंढ रहा हूं। लेकिन अंत में मिला:

Nginx सर्वर हेडर हटाने पैच

मुझे अंततः उस परेशान Nginx सर्वर शीर्षलेख से रिडीम किया गया है।


0
2018-06-18 23:25





इसका संदर्भ लें सार। निश्चित रूप से आपकी मदद करेगा।


-1
2018-06-02 09:30



सर्वर फॉल्ट में आपका स्वागत है! जबकि यह सैद्धांतिक रूप से सवाल का जवाब दे सकता है, यह बेहतर होगा यहां उत्तर के आवश्यक हिस्सों को शामिल करने के लिए, और संदर्भ के लिए लिंक प्रदान करें। - Gerald Schneider