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

کد:
$curl -I 192.168.56.170
نکته اینکه بجای IP نوشته شده،شما باید از IP و یا دامنه ی سرور خود استفاده نمایید و اگر بسته ی curl روی سیستم شما نصب نیست کافیست تا آن را نصب کنید.یک نمونه خروجی دستور گفته شده را در پایین مشاهده می کنید که نسخه nginx 1.6.3 را نمایش می دهد :

کد:
$ curl -I 192.168.56.170
HTTP/1.1 200 OK
Server: nginx/1.6.3
Date: Sun, 17 Apr 2016 13:12:51 GMT
Content-Type: text/html
Content-Length: 3700
Last-Modified: Tue, 26 Jan 2016 18:15:47 GMT
Connection: keep-alive
ETag: “56a7b7d3-e74”
Accept-Ranges: bytes
اکنون جهت مخفی کردن نسخه ی Nginx کافیست تا فایل تنظیمات Nginx را باز کنید :

کد:
# vi /etc/nginx/nginx.conf
اکنون کافیست تا این خط را در قسمت http قرار دهید :

کد:
server_tokens off;
یک نمونه از فایل تنظیمات را در پایین مشاهده می کنید :

کد:
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

events {
worker_connections 1024;
}

http {

server_tokens off;

log_format main ‘$remote_addr – $remote_user [$time_local] “$request” ‘
‘$status $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent” “$http_x_forwarded_for”‘;

access_log /var/log/nginx/access.log main;

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;

include /etc/nginx/mime.types;
default_type application/octet-stream;

# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;

server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

location / {
}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}
اکنون کافیست تا سرویس nginx را یکبار restart کنید :

کد:
#systemctl restart nginx
جهت آزمایش کار می توانید از این دستور استفاده کنید :

کد:
$curl  -I 192.168.56.170
که در خروجی چیزی شبیه به این خواهید دید :

کد:
$ curl -I 192.168.56.170
HTTP/1.1 200 OK
Server: nginx
Date: Sun, 17 Apr 2016 13:02:18 GMT
Content-Type: text/html
Content-Length: 3700
Last-Modified: Tue, 26 Jan 2016 18:15:47 GMT
Connection: keep-alive
ETag: “56a7b7d3-e74”
Accept-Ranges: bytes
همانطور که در خروجی مشاهده می کنید نسخه Nginx حذف شده است.