Nginx安全加固(gu),版本隱(yin)藏及HTTP請求頭修(xiu)改方法
1 隱藏nginx版本號
1.1 引言
nginx作(zuo)為(wei)目前較為(wei)流行的http server軟件,其相(xiang)關(guan)的安全漏(lou)洞也非常(chang)多(duo),攻(gong)擊(ji)者可以根據我們的nginx版本來了解(jie)到相(xiang)關(guan)的漏(lou)洞從而針(zhen)對性的進行攻(gong)擊(ji)。
通過(guo)新版(ban)(ban)本(ben)(ben)的(de)nginx都會修復一些老(lao)版(ban)(ban)本(ben)(ben)的(de)已知漏洞,但有時候我們(men)生(sheng)產(chan)環境不好直接(jie)進行nginx版(ban)(ban)本(ben)(ben)升級(ji),因此我們(men)可以將(jiang)nginx版(ban)(ban)本(ben)(ben)相關信息隱藏,來降低被攻(gong)擊的(de)風險。
1.2 server_tokens
server_tokens是nginx在(zai)ngx_http_core_module中提供的一個功能,可以用來隱(yin)藏nginx版(ban)本號(hao)信(xin)息,官(guan)方文檔(dang)如(ru)下。
我們可(ke)以給nginx新增一個安全(quan)相關的配置文件security.conf,文件內新增"server_tokens off;",再reload一下nginx服務即可(ke)。
[root@elk ~]# cat /etc/nginx/conf.d/security.conf
server_tokens off; ##隱藏nginx版本信息
2 隱藏nginx server頭信息
2.1 介紹
上面的(de)場景(jing),我們只是隱藏(zang)了nginx的(de)版本信息(xi),在某些情況下,我們也(ye)希望能將http請求(qiu)頭中的(de)"Server:nginx"也(ye)隱藏(zang)掉,這個就需要用到headers-more-nginx-module模塊(kuai),模塊(kuai)官網如下。
同(tong)時我們需要用到nginx的(de)動態添加模塊(kuai)功(gong)能(neng),該功(gong)能(neng)在nginx 1.9.11版(ban)本后支持(chi)
2.2 headers模塊編譯
下載對應版本(ben)的nginx源碼(ma),和headers-more-nginx-module模塊源碼(ma),并進行編譯。nginx源碼(ma)下載地址(zhi)如下
[root@elk ~]# wget //nginx.org/download/nginx-1.20.1.tar.gz ##下載nginx源碼
[root@elk ~]# wget //github.com/openresty/headers-more-nginx-module/archive/refs/tags/v0.34.tar.gz ##下載headers模塊源碼
[root@elk ~]# tar xf nginx-1.20.1.tar.gz
[root@elk ~]# tar xf v0.34.tar.gz
[root@elk ~]# ls
headers-more-nginx-module-0.34 nginx-1.20.1 nginx-1.20.1.tar.gz v0.34.tar.gz
[root@elk nginx-1.20.1]# cd /root/nginx-1.20.1/
[root@elk nginx-1.20.1]# /root/nginx-1.20.1/configure --with-compat --add-dynamic-module=/root/headers-more-nginx-module-0.34/ ##--with-compat參數用來兼容動態模塊,--add-dynamic-module指定動態模塊源碼所在位置。
開始編譯
確認編譯結果
[root@elk nginx-1.20.1]# echo $?
編譯模塊
[root@elk nginx-1.20.1]# make modules
編譯完成后,會在nginx源碼的objs目(mu)錄,生成我們編譯好的動態(tai)模塊文(wen)件
2.3 使用模塊,驗證nginx http請求頭是否被隱藏
nginx目錄(lu)下新(xin)建目錄(lu),用于存放(fang)模(mo)塊
[root@elk nginx-1.20.1]# mkdir /etc/nginx/conf.d/modules
[root@elk nginx-1.20.1]# cp /root/nginx-1.20.1/objs/.so /etc/nginx/conf.d/modules/
修改nginx配置文件,添加以下兩部分內容。主配置中添加 load_module
/etc/nginx/conf.d/modules/ngx_http_headers_more_filter_module.so; 一行,server容器(qi)中,添加 more_set_headers "Server: singless"; 一行,用來修改http請求頭信(xin)息。
重載nginx服務,再(zai)次檢查可以發(fa)現server頭已經被修改了
[root@elk ~]# systemctl reload nginx
歡(huan)迎關注微(wei)信(xin)公眾號:singless