Nginx優化實戰--基本安全優化
阿新 • • 發佈:2018-10-31
1.調整引數隱藏Nginx軟體版本號資訊
軟體的漏洞都和版本有關。因此我們應儘量隱藏或消除Web服務對訪問使用者顯示各類敏感資訊(如Web軟體名稱及版本號等資訊),這樣惡意的使用者就不會跟局軟體版本漏洞來攻擊,從而加強Web服務的安全性。
☁ ~ curl -I www.gzsteam.cn
HTTP/1.1 301 Moved Permanently
Server: nginx/1.10.3 #<== 這裡很清晰地暴露了Web版本號以及軟體名稱
Date: Tue, 30 May 2017 13:52:23 GMT
Content-Type: text/html
Content-Length: 185
Connection: keep-alive
Location: https://www.gzsteam.cn/
隱藏版本號的方法:在nginx.conf的http標籤段內加入server_tokens off
引數
http
{
......
server_tokens off
......
}
重啟nginx,執行結果如下:
☁ centstead [master] curl -I www.gzsteam.cn
HTTP/1.1 301 Moved Permanently
Server: nginx #<== 這裡沒有版本號了
Date: Tue, 30 May 2017 14:07:55 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: https://www.gzsteam.cn/
2.更改原始碼隱藏Nginx軟體名及版本號
- 第一步是修改依次修改3個Nginx原始碼檔案。
#nginx-1.12.0/src/core/nginx.h 13-17行左右
#define NGINX_VERSION *1.12.0* #<==修改成你想要顯示版本號如2.2.0
#define NGINX_VER *nginx/* NGINX_VERSION #<==修改成想要的軟體名稱,如百度的bfe 自己隨便寫,如hank/*
#define NGINX_VAR *NGINX* #<==對應上面的修改hank
#nginx-1.12.0/src/http/ngx_http_header_filter_module.c 49行左右
static char ngx_http_server_string[] = "Server:nginx " CRLF; #<==修改成Server: hank " CRLF
#nginx-1.12.0/src/http/ngx_http_special_response.c
"<hr><center>" NGINX_VER"</center>" CRLF #<==此處修改" NGINX_VER"(http://[email protected])
"<hr><center>Nginx</center>" CRLF #<==此處修改成hank
2.修改後編譯軟體,使其生效
3.更改Nginx服務的預設使用者
nginx預設配置檔案是nginx.conf.default
[root@vultr conf]# grep "#user" nginx.conf
#user nobody;
防止被攻擊者猜到這個Web服務使用者,我們需要修改成特殊的使用者名稱。如nginx
- 為Nginx服務建立新使用者
useradd nginx -s /sbin/nologin -M
- 配置Nginx服務,讓其使用剛建立的nginx使用者(nginx.conf)
user nginx nginx;
另外可以在編譯的時候,直接指定使用者和使用者組
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
- 檢查更改使用者的效果
重新載入配置後,檢查Nginx服務程序的對應使用者
[root@vultr conf]# ps -ef|grep nginx|grep -v grep
root 911 1 0 3月23 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx 2648 404 0 3月23 ? 00:00:13 php-fpm: pool www
nginx 6342 404 0 4月26 ? 00:00:04 php-fpm: pool www
nginx 9040 911 0 14:07 ? 00:00:00 nginx: worker process