پنهان‌کردن نسخه سرور Nginx در لینوکس یا یونیکس چیزی است که در این آموزش دنبال می‌کنیم. در هنگامی که تیتر درخواست‌ها یا خطاهای HTTP توسط سرور Nginx تولید می‌شوند، نسخه Nginx نیز به صورت پیش‌فرض در معرض نمایش قرار می‌گیرد. در این آموزش کوتاه، نحوه حذف یا پنهان‌کردن نسخه Nginx را بدون راه‌اندازی دوباره سیستم بررسی می‌کنیم. با ما همراه باشید.

پیش‌نیازها

  • سیستم‌عامل و برنامه: سرویس Nginx اجرا در لینوکس یا یونیکس
  • دسترسی‌های کاربری روت

نمایش نسخه کنونی Nginx با استفاده از CLI

Nginx نسخه خود را در صفحات پیغام خطا و در فیلد پاسخ سرور نشان می‌دهد. برای بررسی و تأیید این موضوع، فرمان زیر را به کار می‌بریم.

$ curl -I https://your-domain
$ curl -I https://www.ariaservice.net

نمونه خروجی

HTTP/2 200
server: nginx/1.17.10 (Ubuntu)
date: Tue, 23 Jun 2020 09:36:49 GMT
content-type: text/html; charset=UTF-8
strict-transport-security: max-age=15768000
x-whome: l-ncbz01-mg-wg

در اینجا صفحه نمونه پیغام خطای HTTP/502 را همراه با نمایش اطلاعات ملاحظه می‌کنید.

پنهان‌کردن نسخه سرور Nginx در لینوکس

پنهان‌کردن نسخه سرور Nginx با استفاده از پارامتر server_tokens

برای پنهان‌کردن نسخه سرور Nginx در لینوکس و سیستم‌عامل‌های لینوکس نیاز به تنظیم پارامتر server_tokens به صفر دارید. برای این منظور، از یک ویرایشگر متنی مانند Vim یا nano برای ویرایش فایل nginx.conf استفاده کنید.

$ sudo vim /etc/nginx/nginx.conf

امکان تنظیم server_tokens در http، سرور یا موقعیت مکانی خاص وجود دارد. در اینجا، تنظیم را برای بخش http انجام می‌دهیم.

server_tokens off;

نتیجه چیزی شبیه به زیر خواهد بود.

http {
## Basic Settings ##
charset utf-8;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
log_not_found off;
keepalive_timeout 65;
types_hash_max_size 2048;
client_max_body_size 16M;
include /etc/nginx/mime.types;
default_type application/octet-stream;
## Hide Nginx version ##
server_tokens   off;
## Security headers for Nginx ##
add_header Strict-Transport-Security "max-age=15768000" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Xss-Protection "1; mode=block" always;
add_header Referrer-Policy  strict-origin-when-cross-origin;
add_header Feature-policy "accelerometer 'none'; camera 'none'; geolocation 'none'; gyroscope 'none'; magnetometer 'none'; microphone 'none'; payment 'none'; usb 'none'";
add_header Content-Security-Policy   "default-src 'self' http: https: data: blob: 'unsafe-inline'" always;
## SSL Settings ##
ssl_protocols TLSv1.3;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
## Virtual Host Configs ##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}

حالا نوبت به راه‌اندازی دوباره سرور Nginx است.

$ sudo nginx -t
$ sudo nginx -s reload

تأیید پنهان‌بودن نسخه سرور Nginx

برای این منظور از فرمان curl به صورت زیر استفاده کنید.

curl -I https://your-domain-name-here
curl -I https://www.ariaservice.net

در اینجا ببینید که نسخه Nginx نمایش داده نمی‌شود.

HTTP/2 200
server: nginx
date: Tue, 23 Jun 2020 09:43:17 GMT
content-type: text/html; charset=UTF-8
strict-transport-security: max-age=15768000

فایرفوکس نیز تأیید می‌کند که ما پنهان‌کردن نسخه سرور Nginx را به‌درستی انجام داده‌ایم.

تأیید پنهان‌کردن نسخه سرور Nginx در فایرفاکس

تأیید پنهان‌کردن نسخه سرور Nginx در فایرفاکس

سایر مقادیر ممکن برای پنهان‌کردن نسخه سرور Nginx

قالب کار به صورت زیر است.

server_tokens on | off | build | string;

تنظیم پیش‌فرض در لینوکس، BSD و یونیکس

server_tokens on;

برداشتن نسخه از تیتر سرور و صفحات پیغام خطا

می‌توانیم مقادیر زیر را برای فعال یا غیرفعال‌کردن انتشار نسخه Nginx تغییر دهیم.

on: نمایش عدد نسخه سرور

off: خاموش‌کردن نمایش عدد نسخه سرور

build: نمایش عنوان ساخت همراه با نسخه سرور Nginx. برای این منظور باید از Nginx نسخه 1.11.10 استفاده کنید.

string: این گزینه تنها برای عضویت‌های تجاری کار می‌کند و از نسخه 1.9.13 در اختبار قرار گرفه است. امضای صفحات پیغام خطا و مقادیر تیتر پاسخ سرور می‌توانند به صورت رشته‌ای تنظیم شوند. یک رشته خالی می‌تواند نمایش فیلد “Server” را غیرفعال کند.

تنظیم عدد سفارشی برای نسخه سرور Nginx

کاربران نسخه پولی و تجاری Nginx Plus می‌توانند تنظیمات زیر را برای نمایش یک نسخه ساختگی سرور انجام دهند.

server_tokens "AriaService_WWW";

راه‌اندازی دوباره سرور Nginx

# service nginx reload

بررسی با استفاده از فرمان curl

curl -I http://127.0.0.1/
پنهان‌کردن نسخه Nginx و تنظیم یک نسخه یا اسم سفارشی

پنهان‌کردن نسخه سرور Nginx و تنظیم یک نسخه یا اسم سفارشی

پنهان‌کردن نسخه سرور Nginx با ایجاد گمنامی، امنیت ایجاد می‌کند

مسلماً گمنامی امنیت ایجاد می‌کند. این یکی از روش‌های پایه دفاعی است. با این وجود، نباید به عنوان روش اصلی دفاعی استفاده شود. شما حتماً نیاز به نوشتن کد ایمن خواهید داشت. یک فایروال و مخصوصاً یک WAF باید نصب کنید. دلیلی برای نمایش نسخه Nginx، PHP یا پایتون وجود ندارد؛ چرا که اطلاعات مفید برای یک مهاجم و هکر خواهد بود. به خاطر داشته باشید که سیستم‌عامل لینوکس یا یونیکس، برنامه‌های تحت‌وب Nginx باید فارغ از نمایش یا عدم‌نمایش نسخه سرور، باید به صورت ایمن باقی بمانند. در هر صورت، ما قرار نیست که با نشان دادن نسخه سرور Nginx به مهاجمان کمکی کرده باشیم. برای کسب اطلاعات بیشتر در مورد امنیت وب‌سرور Nginx می‌توانید به مقاله ما در این زمینه نیز مراجعه کنید.

جمع‌بندی

ما در اینجا روشی ساده برای پنهان‌کردن نسخه سرور Nginx در سیستم‌های مبتنی بر لینوکس یا یونیکس آموزش دادیم. به‌علاوه، در Nginx plus که نسخه پولی این وب‌سرور است، کاربران می‌توانند نسخه ساختگی خود را نمایش دهند. همیشه می‌توانید اسناد و مطالب رسمی مرتبط با Nginx را در اینجا پیدا کنید.

منبع: Cyberciti.biz