সংস্করণটি আড়াল করার একটি বিকল্প রয়েছে যাতে এটি কেবলমাত্র এনজিনেক্স প্রদর্শিত হবে, তবে এটিও লুকানোর কোনও উপায় আছে যাতে এটি কোনও কিছু দেখায় না বা শিরোনামটি পরিবর্তন করে না?
সংস্করণটি আড়াল করার একটি বিকল্প রয়েছে যাতে এটি কেবলমাত্র এনজিনেক্স প্রদর্শিত হবে, তবে এটিও লুকানোর কোনও উপায় আছে যাতে এটি কোনও কিছু দেখায় না বা শিরোনামটি পরিবর্তন করে না?
উত্তর:
অ্যাপাচি এর মতো এটি উত্সটিতে একটি দ্রুত সম্পাদনা এবং পুনরায় সংকলন। Calomel.org থেকে :
সার্ভার: স্ট্রিংটি শিরোনাম যা ক্লায়েন্টকে ফেরত পাঠানো হয় তা জানাতে আপনি কী ধরণের HTTP সার্ভার চালাচ্ছেন এবং সম্ভবত কোন সংস্করণ। এই স্ট্রিংটি অ্যালেক্সিয়া এবং নেটক্রাফ্টের মতো জায়গাগুলিতে ইন্টারনেটে কত এবং কী ধরণের ওয়েব সার্ভার লাইভ রয়েছে তা সম্পর্কিত পরিসংখ্যান সংগ্রহ করতে ব্যবহৃত হয়। এনগিনেক্সের লেখক এবং পরিসংখ্যানকে সমর্থন করার জন্য আমরা এই স্ট্রিংটি যেমন রাখি তেমন সুপারিশ করি। তবে, সুরক্ষার জন্য আপনি না চান আপনি কী চালাচ্ছেন তা লোকেরা জানতে পারে এবং আপনি এটি সোর্স কোডে পরিবর্তন করতে পারেন।
src/http/ngx_http_header_filter_module.c
48 এবং 49 লাইনের দিকে তাকান উত্স ফাইলটি সম্পাদনা করুন you স্ট্রিংকে আপনি যে কোনও কিছুতে পরিবর্তন করতে পারেন।
## 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 সম্পাদনা: Flavius করার সাজসরঞ্জাম নীচে একটি নতুন বিকল্প ইশারা, nginx এর স্ট্যান্ডার্ড প্রতিস্থাপন জন্য HttpHeadersModule সঙ্গে Forked HttpHeadersMoreModule । স্ট্যান্ডার্ড মডিউলটি পুনরায় সংশোধন করা এখনও দ্রুত সমাধান এবং আপনি যদি স্ট্যান্ডার্ড মডিউলটি ব্যবহার করতে চান এবং সার্ভারের স্ট্রিংটি প্রায়শই পরিবর্তন করবেন না তবে তা বোঝা যায়। তবে আপনি যদি এর চেয়ে আরও বেশি কিছু চান তবে এইচটিপিএইচইডারসমোরমোডিয়াল একটি শক্তিশালী প্রকল্প এবং এটি আপনাকে এইচটিটিপি শিরোনাম দিয়ে সমস্ত ধরণের রানটাইম ব্ল্যাক ম্যাজিক করতে দেয়।
r->headers_out.server
।
আপনি যদি একটি ব্যাক-এন্ড অ্যাপ্লিকেশন প্রক্সি করার জন্য এনজিনেক্স ব্যবহার করে থাকেন এবং ব্যাক- Server:
এন্ডটি এনজিনেক্স ওভাররাইটিং ছাড়াই তার নিজস্ব শিরোনামের বিজ্ঞাপন দিতে চান, তবে আপনি আপনার server {…}
স্তবকের ভিতরে গিয়ে সেট করতে পারেন :
proxy_pass_header Server;
এটি nginx কে সেই শিরকটি একা ছেড়ে দিতে এবং ব্যাক-এন্ডের দ্বারা সেট করা মানটি পুনর্লিখনের জন্য রাজি করবে।
সর্বশেষ আপডেটটি কিছুক্ষণ আগে ছিল, সুতরাং উবুন্টুতে আমার জন্য এটি কী কাজ করেছে:
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/NginxHttpHeedaMoreModule
এই মডিউলটি আপনাকে নির্দিষ্ট করে যে কোনও আউটপুট বা ইনপুট শিরোনাম সংযোজন, সেট করতে বা সাফ করতে দেয়।
এই মান এর একটি বর্ধিত সংস্করণ হেডার মডিউল কারণ এটি মত রিসেট বা ক্লিয়ারিং "হেডার builtin" মত আরো ইউটিলিটি উপলব্ধ
Content-Type
,Content-Length
এবংServer
।আরও_সেট_হেডারস এবং আরও_সামান্য_হেডার নির্দেশিকা সহ আউটপুট শিরোনামগুলি সংশোধন করার সময় বিকল্পটি
-s
ব্যবহার করে-t
একটি alচ্ছিক HTTP স্থিতি কোডের মানদণ্ড এবং বিকল্প ব্যবহার করে একটি option চ্ছিক বিষয়বস্তুর ধরণের মানদণ্ড নির্দিষ্ট করার অনুমতি দেয় ...
--add-module=/path-to-headers-more-nginx-module
এনগিনেক্স এক্সট্রা ইনস্টল করুন
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`
যা, সমাধান হিসাবে, কয়েকটি উল্লেখযোগ্য সুবিধা রয়েছে। যথা, যে আপনি আপনার এনগিনেক্স সংস্করণটিকে প্যাকেজ ম্যানেজার দ্বারা পরিচালনা করতে পারবেন (সুতরাং, উত্স থেকে কোনও সংকলন করা হয়নি) এমনকি যদি আপনার ডিসট্রোর জন্য এনগিনেক্স-এক্সট্রা উপলব্ধ না হয়, এবং আপনাকে অতিরিক্ত কোনওটির বিষয়ে চিন্তা করার দরকার নেই দুর্বল হওয়ার কারণে এনজিঙ্কস-এক্সট্রা জাতীয় কোনও কিছুর কোড।
অবশ্যই, আপনি server_tokens off
সংস্করণ নম্বরটি লুকানোর জন্য বিকল্পটি সেট করতে বা সেই বিন্যাসের স্ট্রিংটিও প্যাচ করতে চান।
আমি "পাঁচটি অক্ষর বা তার চেয়ে কম" বলি কারণ অবশ্যই আপনি সর্বদা প্রতিস্থাপন করতে পারেন:
nginx পান \ r \ 0
সঙ্গে
বব পান \ r \ 0 পান \ r \ 0
শেষ দুটি বাইট অপরিবর্তিত রেখে
যদি আপনি আসলে পাঁচটিরও বেশি অক্ষর চান তবে আপনি সার্ভার_ টোকেনগুলি ছেড়ে যেতে চান এবং (কিছুটা দীর্ঘ) ফর্ম্যাট স্ট্রিংটি প্রতিস্থাপন করতে পারবেন, যদিও আবার ফর্ম্যাট স্ট্রিংয়ের দৈর্ঘ্যের দ্বারা আরোপিত সেই দৈর্ঘ্যের উপরের একটি সীমা রয়েছে - 1 এর জন্য গাড়ি ফেরত).
... যদি উপরের কোনওটি আপনাকে বোঝায় না, বা আপনি আগে কখনও বাইনারি প্যাচ করেন না, তবে আপনি এই পদ্ধতির থেকে দূরে থাকতে চাইতে পারেন।
sed
উপরের কমান্ডটি চালাবেন , `which nginx`
অংশটি বাইনারিটির দিকে ফিরে আসে, এবং sed
কমান্ডটি বাইট প্রতিস্থাপন করে।
nginx
পরিবর্তনগুলি কার্যকর হওয়ার জন্য আপনার যদি পুনরায় চালু করার দরকার হয় তবে আমি অবাক হব না । সব কি বলেছে? আমি আপনাকে অন্য একটি উত্তর ব্যবহার না করার জন্য অনুরোধ করছি। যদি আমি বলি সমস্ত জিনিস যদি ইতিমধ্যে আপনার পরিচিত না হয় এবং /etc
ডিরেক্টরিটি কী তা আপনি জানেন না , তবে এই জাতীয় হ্যাকটি একধরণের বিপজ্জনক।
একমাত্র উপায় হ'ল src / http / ngx_http_header_filter_module.c ফাইলটি সংশোধন করা। আমি 48 লাইনে nginx পরিবর্তন করেছি অন্য স্ট্রিংয়ে।
আপনি nginx কনফিগারেশন ফাইলে যা করতে পারেন তা হ'ল সার্ভার_ টোকেন সেট অফ। এটি nginx কে সংস্করণ নম্বর মুদ্রণ করতে বাধা দেবে।
জিনিসগুলি যাচাই করতে, কার্ল চেষ্টা করুন -I http://vurbu.com/ | গ্রেপ সার্ভার
এটা ফিরে আসা উচিত
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`
আমি আরও খনন করার পরে আমি জানতে পারি যে এনগিনেক্স দ্বারা উত্পাদিত ত্রুটি বার্তাটিও এই ফাইলে অন্তর্ভুক্ত রয়েছে।
<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
এনগিনেক্স ডকুমেন্টেশন অনুসারে এটি কাস্টম মান বা এমনকি বাদ পড়াকে সমর্থন করে:
Syntax: server_tokens on | off | build | string;
তবে দুঃখজনকভাবে কেবল বাণিজ্যিক সাবস্ক্রিপশন সহ :
অতিরিক্ত হিসাবে, আমাদের বাণিজ্যিক সাবস্ক্রিপশনের অংশ হিসাবে, সংস্করণ 1.9.13 থেকে ত্রুটি পৃষ্ঠাগুলিতে স্বাক্ষর এবং "সার্ভার" প্রতিক্রিয়া শিরোনাম ক্ষেত্র মানটি ভেরিয়েবলগুলির সাথে স্ট্রিং ব্যবহার করে সুস্পষ্টভাবে সেট করা যেতে পারে। একটি খালি স্ট্রিং "সার্ভার" ক্ষেত্রের নির্গমনকে অক্ষম করে।
আমি জানি পোস্টটি বেশ পুরানো, তবে উত্স থেকে এনজিনেক্স সংকলন না করে আমি একটি সমাধান সহজ সমাধান পেয়েছি যা দেবিয়ান ভিত্তিক বিতরণে কাজ করে।
প্রথমে nginx- এক্সট্রা প্যাকেজ ইনস্টল করুন
sudo অ্যাপ্লিকেশন ইনস্টল nginx- অতিরিক্ত
তারপরে nginx.conf সম্পাদনা করে এবং সার্ভার ব্লকের ভিতরে নিম্নলিখিত লাইনটি যুক্ত করে আরও এনজিএনএক্স HTTP শিরোনামগুলি আরও মডিউল লোড করুন
লোড_মডিউল মডিউল / এনজিএক্স_এইচটিটিপি_হেডারস_মোর_ ফিল্টার_মডিউল.এসও;
এটি সম্পন্ন হয়ে গেলে আপনার আরও_সেট_হেডার এবং আরও_সামান্য_চোষী নির্দেশিকা উভয়ই অ্যাক্সেস পাবেন।
Nginx- অতিরিক্ত প্যাকেজটি এখন হ্রাস করা হয়েছে।
নিম্নলিখিতগুলি এখন আমার পক্ষে কাজ করেছে কারণ আমি আরও_সেট_হেডারস সার্ভার: আমার খুব নিজের সার্ভার 'ইনস্টল করার চেষ্টা করেছি;
আপনি কেবল নিম্নলিখিতটি করতে পারেন এবং কোনও সার্ভার বা সংস্করণ তথ্য ফেরত পাঠানো হবে না
server_tokens '';
আপনি যদি এই সংস্করণ নম্বরটি সরাতে চান তবে
server_tokens off;
আপনি কি প্রতিক্রিয়াতে সার্ভার শিরোনাম মান সম্পর্কে জিজ্ঞাসা করছেন? আপনি একটি অ্যাড-হেডার নির্দেশিকা সহ এটি পরিবর্তন করার চেষ্টা করতে পারেন, তবে এটি কার্যকর হবে কিনা তা আমি নিশ্চিত নই। http://wiki.codemongers.com/NginxHttpHeadersModule