nginx隐藏版本号、错误信息页面隐藏nginx软件、修改 HTTP 头信息中的connection 字段,防止回显具体版本号、curl命令

目录

安装之后隐藏

配置文件

源代码配置安装之前隐藏

[修改nginx.h文件中的 13、14行](#修改nginx.h文件中的 13、14行)

[修改 HTTP 头信息中的connection 字段,防止回显具体版本号](#修改 HTTP 头信息中的connection 字段,防止回显具体版本号)

配置文件49行

错误页面程序返回版本号、nginx隐藏

配置文件36行

​编辑

安装nginx

相关选项说明

curl命令测试是否隐藏版本和软件

curl命令

#获取网页内容

将输出保存到文件中

发送POST请求

发送带有头部的请求

使用HTTP基本认证

从HTTPS网站不验证证书

上传文件

下载文件

显示响应头信息

使用cookie

追踪重定向

使用代理服务器


安装之后隐藏

nginx隐藏版本号主要是出于安全考虑,某些nginx漏洞只存在特定的版本,如果攻击者知道了服务器使用的确切Nginx版本,他们可能会尝试利用这些已知漏洞进行攻击。因此,隐藏版本号可以提高服务器的安全性,使攻击者难以通过版本信息推断出服务器可能存在的安全漏洞。

如果是已经安装则只能在nginx.conf配置文件中(http)添加隐藏版本号通常可以通过简单地修改Nginx的配置文件来实现。在Nginx的配置文件,http中添加server_tokens off;``如果原本就有只需要将``on``改为``off``即可。 指令可以关闭服务器发送包含版本信息的响应头,从而隐藏版本号。在http中是隐藏所有的server版本。

也可以在某个server中添加只隐藏server的。

bash 复制代码
vim /usr/local/nginx/conf/nginx.conf
bash 复制代码
vim /etc/nginx/conf/nginx.conf

配置文件

bash 复制代码
http {
    server_tokens off;  # 在http块中关闭所有server的tokens

    server {
        listen 80;
        server_name example.com;

        # 可以在这里再次关闭,只针对这个server
        # server_tokens off;

        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
    }
}

源代码配置安装之前隐藏

解压之后进入到nginx包下找到的src目录 的core目录 中的nginx.h文件

bash 复制代码
vim /usr/src/nginx*/src/core/nginx.h

修改nginx.h文件中的 13、14行

(nginx1.26.1版本)不同版本可能会有不同。

不要去掉#号。

bash 复制代码
#define NGINX_VERSION      "1.26.1"
#此行代表版本号1.26.1
#define NGINX_VER          "nginx/" NGINX_VERSION    
#此行代表使用使用的软件是nginx

修改 HTTP 头信息中的connection 字段,防止回显具体版本号

拓展:通用 http 头 ,通用头包含请求和响应消息都支持的头,通用头包含 Cache-Control、 Connection 、Date 、Pragma 、Transfer-Encoding 、Upgrade 、Via。对通用头的扩展要求通讯双 方都支持此扩展,如果存在不支持的通用头,一般将会作为实体头处理。那么也就是说有部分设备、或者是软件,能获取到 connection,部分不能,为了安全要做到所有的有可能的漏洞彻底隐藏。

修改nginx目录中的src目录、http目录、ngx_header_fileter_module.c文件

bash 复制代码
vim src/http/ngx_http_header_filter_module.c

配置文件49行

(nginx1.26.1版本)不同版本可能会有不同。

bash 复制代码
static u_char ngx_http_server_string[] = "Server: nginx" CRLF;
#定义http错误码的返回。
例如:static u_char ngx_http_server_string[] = "Server: jingyu" CRLF;

错误页面程序返回版本号、nginx隐藏

修改nginx目录中的src目录、http目录、ngx_http_special_response.c 文件

bash 复制代码
vim src/http/ngx_http_special_response.c

配置文件36行

(nginx1.26.1版本)不同版本可能会有不同。

bash 复制代码
static u_char ngx_http_error_tail[] =
"<hr><center>nginx</center>" CRLF
"</body>" CRLF
"</html>" CRLF
;
#修改前
bash 复制代码
static u_char ngx_http_error_tail[] =
"<hr><center>csdn-jingyu</center>" CRLF
"</body>" CRLF
"</html>" CRLF
;
#修改后

安装nginx

Nginx网站service 详细相关介绍-特点-http状态码-配置文件、将nginx添加永久环境变量 访问网站404是什么?_nginx 稳定版-CSDN博客

bash 复制代码
groupadd nginx
#添加 nginx 组
useradd -M -s /sbin/nologin -g nginx nginx
#创建 nginx 运行账户 nginx 并加入到 nginx 组,不允许 nginx 用户直接登录系统、没有家目录。
bash 复制代码
./configure --prefix=/usr/local/nginx1.26 \
--with-http_dav_module \
--with-http_stub_status_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_flv_module \
--with-http_mp4_module \
--user=nginx --group=nginx \
&& make && make install \

相关选项说明

|--------------------------------|------------------------------------------|
| --with-http_dav_module | #增加 PUT,DELETE,MKCOL:创建集合,COPY 和 MOVE 方法 |
| --with-http_stub_status_module | #获取 Nginx 的状态统计信息 |
| --with-http_addition_module | #作为一个输出过滤器,支持不完全缓冲,分部分相应请求 |
| --with-http_sub_module | #允许一些其他文本替换 Nginx 相应中的一些文本 |
| --with-http_flv_module | #提供支持 flv 视频文件支持 |
| --with-http_mp4_module | #提供支持 mp4 视频文件支持,提供伪流媒体服务端支持 |
| --with-http_ssl_module | #启用 ngx_http_ssl_module |

curl命令测试是否隐藏版本和软件

bash 复制代码
curl -i 地址或域名

curl命令

curl 是一个在命令行或脚本中向/从服务器传输数据的工具,支持许多协议,如 HTTP、HTTPS、FTP 等。它是常用的Web服务器测试工具,也可以用于自动化的API测试。

#获取网页内容

bash 复制代码
curl http://example.com

将输出保存到文件中

bash 复制代码
curl -o filename.html http://example.com

发送POST请求

bash 复制代码
curl -d "param1=value1&param2=value2" -X POST http://example.com/resource

发送带有头部的请求

bash 复制代码
curl -H "Content-Type: application/json" -X POST -d '{"key1":"value1", "key2":"value2"}' http://example.com/resource

使用HTTP基本认证

bash 复制代码
curl -u username:password http://example.com

从HTTPS网站不验证证书

bash 复制代码
curl -k https://example.com

上传文件

bash 复制代码
curl -F "file=@path/to/local/file" http://example.com/upload

下载文件

bash 复制代码
curl -O http://example.com/file.tar.gz

显示响应头信息

bash 复制代码
curl -I http://example.com

使用cookie

bash 复制代码
curl -b cookies.txt -c cookies_new.txt http://example.com

追踪重定向

bash 复制代码
curl -L http://example.com

使用代理服务器

bash 复制代码
curl -x proxy:port http://example.com
相关推荐
智驱力人工智能5 小时前
守护生命的水上之眼 无人机人员落水检测系统的技术攻坚与应用实践 无人机溺水识别 山区水库无人机落水检测系统 水域安全无人机部署指南
大数据·人工智能·算法·安全·无人机·边缘计算
xiatianxy5 小时前
有限空间监测设备,为石油储罐安全“保驾护航”
安全·有限空间作业·有限空间监测设备
可爱又迷人的反派角色“yang”7 小时前
ansible剧本编写(三)
linux·网络·云计算·ansible
m0_738120727 小时前
应急响应——知攻善防Web-3靶机详细教程
服务器·前端·网络·安全·web安全·php
llxxyy卢13 小时前
文件操作之文件下载读取全解
安全
橘子真甜~13 小时前
C/C++ Linux网络编程15 - 网络层IP协议
linux·网络·c++·网络协议·tcp/ip·计算机网络·网络层
Allen正心正念202514 小时前
网络编程与通讯协议综合解析
网络
bing_feilong14 小时前
ubuntu中的WIFI与自身热点切换
网络
CodeByV14 小时前
【网络】UDP 协议深度解析:从五元组标识到缓冲区
网络·网络协议·udp
虹科网络安全15 小时前
艾体宝洞察 | 利用“隐形字符”的钓鱼邮件:传统防御为何失效,AI安全意识培训如何补上最后一道防线
运维·网络·安全