默認地,服務器HTTP響應頭會包含apache,nginx和php版本號。像下面的,這是有危害的,因為這會讓黑客通過知道詳細的版本號而發起已知該版本的漏洞攻擊。
為了阻止這個,需要在httpd.conf設置ServerTokens為PRod,這會在響應頭中顯示“Server:Apache”而不包含任何的版本信息。
下面是ServerTokens的一些可能的賦值:
ServerTokens Prod 顯示“Server: Apache” ServerTokens Major 顯示 “Server: Apache/2″ ServerTokens Minor 顯示“Server: Apache/2.2″ ServerTokens Min 顯示“Server: Apache/2.2.17″ ServerTokens OS 顯示 “Server: Apache/2.2.17 (Unix)” ServerTokens Full 顯示 “Server: Apache/2.2.17 (Unix) PHP/5.3.5″
需要將php.ini中的expose_php = On,改為Off,頭信息中將隱藏X-Powered-By:PHP/7.1.0
1.隱藏版本號:
在http 加上 server_tokens off;
如下:
http {……省略配置server_tokens off; ->即可隱藏版本號…….省略配置}重啟nginx后,我們返回的Server頭格式為Server:nginx ,而且nginx自己的404頁面也沒有版本號的信息
2.返回自定義的server 混淆Server信息
我是不太愿意告訴別人我是使用什么Server的,但沒有找到相關文獻去隱藏它,所以我們可以混淆她,如把Server返回GFW之類的,嚇唬嚇唬那些腳本小子
大部分情況下,腳本的小子的掃描工具是掃描我們response返回的header中的server信息.我們可以采用編譯源碼的方法來改變返回的Server,筆者的版本是nginx1.7.0,我們修改src/http/ngx_http_header_filter_module.c
中的48行
把其中的nginx改為我們自己想要的文字即可,筆者就改為了YSY. 筆者輸出的Server:YSY.(這個前提是你進行了第一個步句的操作,關閉了版本號)
如果你的版本號是開著的,你又想調戲下腳本小子.比如Server:billgate/1.9.0
我們修改src/core/nginx.h 定位到13-14行
#define NGINX_VERSION "1.7.0" #define NGINX_VER "nginx/" NGINX_VERSIONServer返回的就是常量NGINX_VER
, 我們把NGINX_VERSION
大小定義為1.9.0,nginx改為billgate就能達到我們的目的了
新聞熱點
疑難解答
圖片精選