پنهانکردن نسخه سرور 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 با استفاده از پارامتر 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
قالب کار به صورت زیر است.
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 با ایجاد گمنامی، امنیت ایجاد میکند
مسلماً گمنامی امنیت ایجاد میکند. این یکی از روشهای پایه دفاعی است. با این وجود، نباید به عنوان روش اصلی دفاعی استفاده شود. شما حتماً نیاز به نوشتن کد ایمن خواهید داشت. یک فایروال و مخصوصاً یک WAF باید نصب کنید. دلیلی برای نمایش نسخه Nginx، PHP یا پایتون وجود ندارد؛ چرا که اطلاعات مفید برای یک مهاجم و هکر خواهد بود. به خاطر داشته باشید که سیستمعامل لینوکس یا یونیکس، برنامههای تحتوب Nginx باید فارغ از نمایش یا عدمنمایش نسخه سرور، باید به صورت ایمن باقی بمانند. در هر صورت، ما قرار نیست که با نشان دادن نسخه سرور Nginx به مهاجمان کمکی کرده باشیم. برای کسب اطلاعات بیشتر در مورد امنیت وبسرور Nginx میتوانید به مقاله ما در این زمینه نیز مراجعه کنید.
جمعبندی
ما در اینجا روشی ساده برای پنهانکردن نسخه سرور Nginx در سیستمهای مبتنی بر لینوکس یا یونیکس آموزش دادیم. بهعلاوه، در Nginx plus که نسخه پولی این وبسرور است، کاربران میتوانند نسخه ساختگی خود را نمایش دهند. همیشه میتوانید اسناد و مطالب رسمی مرتبط با Nginx را در اینجا پیدا کنید.
منبع: Cyberciti.biz