移除 Nginx/IIS 伺服器資訊

公司最近做了資安檢測,有被檢測出來 response 中不應該帶入 server 的版本相關資訊,才不會因此而被拿來做為攻擊的依據,以下會說明 IIS 和 nginx 各自怎麼設定。

IIS

如果網站數量比較少,可以考慮用 web.config 來設定,因為公司有多台主機而且服務眾多,以下選擇從 IIS 上每台作設定。

使用 web.config 的設定可以參考保哥的文章 如何設定 ASP.NET Core 在發行到 IIS 時移除 X-Powered-By 標頭

在 IIS root 的右側找到 管理 -> 設定編輯器

iis-root

點開後總共要改三個東西,修改後要將 IIS 重啟

Server Header

在上面的區段找到 system.webServer/security/requestFilter,在下方的內容找到 revmoeServerHeader 將值改為 true,修改後要點選右方 動作套用
iis_server_header

X-Powered-By

在區段找到 system.webServer/httpProtocol,下方的 customHeader 點開來

iis_x_powered_by1

先點選 X-Powered_By項目,再點選右邊的移除,修改後要點選右方 動作套用
iis_x_powered_by2

Version Header

找到區段 system.web/httpRuntime,選擇 enableVersionHeader 將值改為 false,修改後要點選右方 動作套用

iis_version_header

Nginx

打開 nginx.conf 找到 http 的區塊作以下的調整

Hide Version

只要加上 server_tokens 的設定,就可以版本隱藏掉

1
2
3
4
5
http {
...
server_tokens off;
...
}

Clear Server Header

想要把 nginx 的資訊完全隱藏掉的話,可以安裝模組

1
apt install nginx-extras
1
2
3
4
5
http {
...
more_clear_headers Server;
...
}

組合起來就是這樣

1
2
3
4
5
6
http {
...
server_tokens off;
more_clear_headers Server;
...
}