修改NGINX版本名稱偽裝任意WEB SERVER


 

無論是作為Web服務器或其他類型程序的反向代理服務器,Nginx("engine x")都有着高性能且輕量級的優勢。其特點是占有內存少,並發能力強,事實上Nginx的並發能力確實在同類型的網頁服務器中表現較好。這也使得Nginx在如今不管是存放在高配獨立服務器上的大型的門戶,還是存放在迷你64M內存VPS上的小型的個人博客,Nginx都在被廣泛使用着。

 

國內淘寶、新浪、網易、騰訊等都在使用。其中淘寶正是基於原作者的BSD-like協議,在其源代碼基礎上開發了Tengine,這暫且不表。

 

今天我們來說說,如何修改Nginx其內部默認名稱。這對安全或者裝逼都是非常實用的。

 

我們都知道一般Nginx有哪些內部名稱展示,如有通過HTTP Response
Header中的Server、錯誤頁的footer、FPM-FastCGI等。

 

一般來說修改3個位置,一個是nginx.h、另一個是ngx_http_header_filter_module.c、還有一個ngx_http_special_response.c。

 

 

提示:以下修改需要在編譯安裝Nginx之前進行,修改之后再編譯

現在Web Server使用廣泛,針對它的攻擊也越來越多,Nginx這玩意出道時間也並不長,雖然國內很多門戶網站都用它,小內存VPS用戶也愛它,但是我可不想哪天它爆出了個驚天BUG,上次80sec公布的Nginx相關PHP FPM漏洞就是警示哦,倘若偽裝了我的Nginx服務器,攻擊者就不知道我使用的是何種Web Server,也就無從下手了。

修改src/core/nginx.h(Nginx內部名稱的)

#define NGINX_VERSION      "1.8.0"
#define NGINX_VER          "NGINX/" NGINX_VERSION

NGINX_VERSION是版本號,NGINX_VER是名稱

 

修改src/http/ngx_http_header_filter_module.c(HTTP ResponseHeader

static char ngx_http_server_string[] = "Server: nginx" CRLF;

 

修改src/http/ngx_http_special_response.c(修改錯誤頁的底部Footer)

static u_char ngx_http_error_tail[] =
"<hr><center>nginx</center>" CRLF "</body>" CRLF "</html>" CRLF ;

 

為什么不修改安裝后的Nginx Config下的fastcgi.conf呢?

因為現在外部已經是無法了解我們的服務器名稱,已經達到我們的目的了。

而且我們常用的一些程序,可能會對你的前端(反向代理服務器)做判斷,畢竟Nginx不同於Apache,無法動態規則。

特別是Wordpress的緩存插件,大多會通過判斷你是否Nginx,如果是的話,提醒你添加一些規則語句。

這時fastcgi.conf就起作用的,其中的
fastcgi_param SERVER_SOFTWARE
nginx/$nginx_version;可以使得PHP與Nginx內部之間的互相了解。


所以我的建議,還是不修改fastcgi.conf,當然你非要改,也可以的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM