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

本文主要是介绍nginx隐藏版本号、错误信息页面隐藏nginx软件、修改 HTTP 头信息中的connection 字段,防止回显具体版本号、curl命令,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

安装之后隐藏

 配置文件

源代码配置安装之前隐藏

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

修改 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的。

vim /usr/local/nginx/conf/nginx.conf
vim /etc/nginx/conf/nginx.conf

 配置文件

http {server_tokens off;  # 在http块中关闭所有server的tokensserver {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文件

vim /usr/src/nginx*/src/core/nginx.h

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

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

不要去掉#号。

#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文件

vim src/http/ngx_http_header_filter_module.c

配置文件49行

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

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 文件

vim src/http/ngx_http_special_response.c

 配置文件36行

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

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

安装nginx

groupadd nginx
#添加 nginx 组
useradd -M -s /sbin/nologin -g nginx nginx
#创建 nginx 运行账户 nginx 并加入到 nginx 组,不允许 nginx 用户直接登录系统、没有家目录。
./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命令测试是否隐藏版本和软件

curl -i 地址或域名

curl命令

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

#获取网页内容

curl http://example.com

将输出保存到文件中

curl -o filename.html http://example.com

发送POST请求

curl -d "param1=value1&param2=value2" -X POST http://example.com/resource

发送带有头部的请求

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

使用HTTP基本认证

curl -u username:password http://example.com

从HTTPS网站不验证证书

curl -k https://example.com

上传文件

curl -F "file=@path/to/local/file" http://example.com/upload

下载文件

curl -O http://example.com/file.tar.gz

显示响应头信息

curl -I http://example.com

 使用cookie

curl -b cookies.txt -c cookies_new.txt http://example.com

追踪重定向

curl -L http://example.com

使用代理服务器

curl -x proxy:port http://example.com

这篇关于nginx隐藏版本号、错误信息页面隐藏nginx软件、修改 HTTP 头信息中的connection 字段,防止回显具体版本号、curl命令的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1021192

相关文章

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示

Windows的CMD窗口如何查看并杀死nginx进程

《Windows的CMD窗口如何查看并杀死nginx进程》:本文主要介绍Windows的CMD窗口如何查看并杀死nginx进程问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows的CMD窗口查看并杀死nginx进程开启nginx查看nginx进程停止nginx服务

MySQL分区表的具体使用

《MySQL分区表的具体使用》MySQL分区表通过规则将数据分至不同物理存储,提升管理与查询效率,本文主要介绍了MySQL分区表的具体使用,具有一定的参考价值,感兴趣的可以了解一下... 目录一、分区的类型1. Range partition(范围分区)2. List partition(列表分区)3. H

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.

Java Multimap实现类与操作的具体示例

《JavaMultimap实现类与操作的具体示例》Multimap出现在Google的Guava库中,它为Java提供了更加灵活的集合操作,:本文主要介绍JavaMultimap实现类与操作的... 目录一、Multimap 概述Multimap 主要特点:二、Multimap 实现类1. ListMult

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas