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

相关文章

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

软件设计师备考——计算机系统

学习内容源自「软件设计师」 上午题 #1 计算机系统_哔哩哔哩_bilibili 目录 1.1.1 计算机系统硬件基本组成 1.1.2 中央处理单元 1.CPU 的功能 1)运算器 2)控制器 RISC && CISC 流水线控制 存储器  Cache 中断 输入输出IO控制方式 程序查询方式 中断驱动方式 直接存储器方式(DMA)  ​编辑 总线 ​编辑

【北交大信息所AI-Max2】使用方法

BJTU信息所集群AI_MAX2使用方法 使用的前提是预约到相应的算力卡,拥有登录权限的账号密码,一般为导师组共用一个。 有浏览器、ssh工具就可以。 1.新建集群Terminal 浏览器登陆10.126.62.75 (如果是1集群把75改成66) 交互式开发 执行器选Terminal 密码随便设一个(需记住) 工作空间:私有数据、全部文件 加速器选GeForce_RTX_2080_Ti

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚: