首頁 > 軟體

Nginx隱藏server頭資訊的實現

2023-01-18 14:03:13

分析

上一篇文章我們搭建了Nginx,請求響應頭如下

[nginx@node01 sbin]$ curl -I 127.0.0.1:8090
HTTP/1.1 200 OK
Server: nginx/1.9.9
Date: Fri, 11 Nov 2022 14:56:38 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Fri, 11 Nov 2022 12:47:59 GMT
Connection: keep-alive
ETag: "636e447f-264"
Accept-Ranges: bytes

可看到這麼一行 Server: nginx/1.9.9,暴露了服務為Nginx並且還知道了具體版本號,如果有人想要攻擊我們網站,那麼他們就會通過這種方式來獲取我們網站的一些資訊。比如 知道了是Nginx,並且如果恰好發現該版本是有一些漏洞的,那麼攻擊者就能夠很輕鬆的找到攻擊我們的方案,所以隱藏一些資訊是很有必要的。

Nginx它考慮到了這方面的問題。給我們提供了一個設定 server_tokens。將該設定放到http快中就可以隱藏版本號了。

隱藏版本號

修改 nginx.conf,新增server_tokens,設定如下

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    server_tokens off;
    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       8090;
        server_name  localhost;
            
        location / {
            root   html;
            index  index.html index.htm;
        }
    }

}

重啟nginx

版本號已隱藏

[nginx@node01 sbin]$ ./nginx -s reload

[nginx@node01 sbin]$ curl -I 127.0.0.1:8090
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 11 Nov 2022 15:08:55 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Fri, 11 Nov 2022 12:47:59 GMT
Connection: keep-alive
ETag: "636e447f-264"
Accept-Ranges: bytes

php-fpm伺服器隱藏版本號

如果搭建的是 php-fpm 伺服器的話,還得修改 fastcgi.conf

在該設定中有這麼一行

fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
修改後
fastcgi_param  SERVER_SOFTWARE    nginx;

隱藏Server

經過上面的修改,版本號就已經隱藏了,如果連Server資訊都不想讓別人知道,那就只能修改原始碼了

修改C檔案 src/http/ngx_http_header_filter_module.c

大概在50行左右,將nginx修改為 其它名字

//static char ngx_http_server_string[] = "Server: nginx" CRLF;
//static char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;
static char ngx_http_server_string[] = "Server: juan" CRLF;
static char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;

重新編譯前記得停掉Nginx 備份自己的nginx.conf

Nginx原始碼安裝教學 https://www.jb51.net/article/142431.htm

編譯完後替換之前備份的檔案,啟動Nginx

[nginx@node01 sbin]$ curl -I 127.0.0.1:8090
HTTP/1.1 200 OK
Server: juan
Date: Fri, 11 Nov 2022 15:34:27 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Fri, 11 Nov 2022 15:30:46 GMT
Connection: keep-alive
ETag: "636e6aa6-264"
Accept-Ranges: bytes

這時Server已經變成自己定義的名字了,nginx的加固就介紹到這。

到此這篇關於Nginx隱藏server頭資訊的實現的文章就介紹到這了,更多相關Nginx隱藏server頭資訊內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com