又是漏洞扫描,要求修改 Web 服务器的 HTTP 标头,使其不泄露有关基础 Web 服务器的详细信息。o(╥﹏╥)o
漏洞修复 CVE-2004-2479
Web 服务器 HTTP 标头信息泄露, 采用headers-more-nginx-module
模块可隐藏头标信息。
开始修复
nginx安装headers-more-nginx-module
模块
安装编译套件
sudo apt install build-essential libpcre3-dev zlib1g-dev
下载nginx 原始码这裡需要下载和你使用的 nginx 同版本的原始码
查看版本命令
nginx -v
知道版本后就可以进行下载了(以下用版本 1.21.5 作为范例)
curl -O http://nginx.org/download/nginx-1.21.5.tar.gz
解压缩
tar -xzf nginx-1.21.5.tar.gz
下载 headers-more-nginx-module
源码
git clone https://github.com/openresty/headers-more-nginx-module
开始编译切换到原始码目录
cd nginx-1.21.5
设置
./configure --add-dynamic-module=/root/headers-more-nginx-module --with-compat
编译modules
make modules
复制动态库到模组目录
nginx 的模组目录可以用以下指令查看
nginx -V 2>&1 | grep modules-path
接在 modules-path=后面的就是我的路径,我的路径为
/usr/lib/nginx/modules/
复制
cp objs/ngx_http_headers_more_filter_module.so /usr/lib/nginx/modules/
隐藏服器信息
headers-more-nginx-module 有很多实用的功能,不过这里只着重如何设定 server 标头。
以下操作修改 nginx 的设定,可以在在 /etc/nginx/modules-enabled/ 新增 .conf 档或是直接在 /etc/nginx/nginx.conf 写入
载入模组
# 载入 ngx_http_headers_more_filter_module.so 自订标头 在/etc/nginx/nginx.conf 顶部写入
load_module modules/ngx_http_headers_more_filter_module.so;
# 禁用 server 标头 在server下添加
server {
more_clear_headers "server";
...
}
more_clear_headers 后面接的字串即为要拿掉的标头。
查看标头, 可以看到nginx的信息已经不见啦
# --head Show document info only
curl --head http://localhost
自订 server 标头
当然我们也可以打造专属自己的酷炫 server 标头
more_set_headers "server: super web server";
修改后服务器回传的 HTTP 标头 server 栏位变成了 super web server
参考: https://blog.owo9.com/910/hide-nginx-header-server-information/