Nginx安全加固,版本隐藏及HTTP请求头修改方法

news2024/11/16 17:46:02

1 隐藏nginx版本号

1.1 引言

nginx作为目前较为流行的http server软件,其相关的安全漏洞也非常多,攻击者可以根据我们的nginx版本来了解到相关的漏洞从而针对性的进行攻击。

图片

通过新版本的nginx都会修复一些老版本的已知漏洞,但有时候我们生产环境不好直接进行nginx版本升级,因此我们可以将nginx版本相关信息隐藏,来降低被攻击的风险。

1.2 server_tokens

server_tokens是nginx在ngx_http_core_module中提供的一个功能,可以用来隐藏nginx版本号信息,官方文档如下。

http://nginx.org/en/docs/http/ngx_http_core_module.html#server_tokens

我们可以给nginx新增一个安全相关的配置文件security.conf,文件内新增"server_tokens off;",再reload一下nginx服务即可。

[root@elk ~]# cat /etc/nginx/conf.d/security.conf
server_tokens off;  ##隐藏nginx版本信息

图片

2 隐藏nginx server头信息

2.1 介绍

上面的场景,我们只是隐藏了nginx的版本信息,在某些情况下,我们也希望能将http请求头中的"Server:nginx"也隐藏掉,这个就需要用到headers-more-nginx-module模块,模块官网如下。

https://github.com/openresty/headers-more-nginx-module

同时我们需要用到nginx的动态添加模块功能,该功能在nginx 1.9.11版本后支持

https://www.nginx.com/blog/compiling-dynamic-modules-nginx-plus/

图片

2.2 headers模块编译

下载对应版本的nginx源码,和headers-more-nginx-module模块源码,并进行编译。nginx源码下载地址如下

http://nginx.org/download/

[root@elk ~]# wget http://nginx.org/download/nginx-1.20.1.tar.gz ##下载nginx源码
[root@elk ~]# wget https://github.com/openresty/headers-more-nginx-module/archive/refs/tags/v0.34.tar.gz ##下载headers模块源码
[root@elk ~]# tar xf nginx-1.20.1.tar.gz
[root@elk ~]# tar xf v0.34.tar.gz
[root@elk ~]# ls
headers-more-nginx-module-0.34 nginx-1.20.1 nginx-1.20.1.tar.gz v0.34.tar.gz
[root@elk nginx-1.20.1]# cd /root/nginx-1.20.1/
[root@elk nginx-1.20.1]# /root/nginx-1.20.1/configure --with-compat --add-dynamic-module=/root/headers-more-nginx-module-0.34/ ##--with-compat参数用来兼容动态模块,--add-dynamic-module指定动态模块源码所在位置。

开始编译

图片

确认编译结果

[root@elk nginx-1.20.1]# echo $?

图片

编译模块

[root@elk nginx-1.20.1]# make modules

图片

编译完成后,会在nginx源码的objs目录,生成我们编译好的动态模块文件

图片

2.3 使用模块,验证nginx http请求头是否被隐藏

nginx目录下新建目录,用于存放模块

[root@elk nginx-1.20.1]# mkdir /etc/nginx/conf.d/modules
[root@elk nginx-1.20.1]# cp /root/nginx-1.20.1/objs/ngx_http_headers_more_filter_module.so /etc/nginx/conf.d/modules/

修改nginx配置文件,添加以下两部分内容。主配置中添加 load_module /etc/nginx/conf.d/modules/ngx_http_headers_more_filter_module.so; 一行,server容器中,添加 more_set_headers "Server: singless"; 一行,用来修改http请求头信息。

图片

图片

图片

 

图片

重载nginx服务,再次检查可以发现server头已经被修改了

[root@elk ~]# systemctl reload nginx

图片

 

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/889144.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android Studio实现读取本地相册文件并展示

目录 原文链接效果 代码activity_main.xmlMainActivity 原文链接 效果 代码 activity_main.xml 需要有一个按钮和image来展示图片 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk…

华硕win11笔记本双系统deepin 解决更改硬盘模式为AHCI后无法进入Windows的问题

华硕win11笔记本双系统deepin 解决更改硬盘模式为AHCI后无法进入Windows的问题 重新将硬盘模式改为Intel RST Premium With Intel Optane System Acceleration(RAID)然后才能进入Windows&#xff0c;但是改了之后又不能进deepin了&#xff0c;需要再将硬盘模式改为AHCI才能进de…

【100天精通python】Day37:GUI界面编程_PyQT从入门到实战(上)

目录 专栏导读 1 PyQt6 简介&#xff1a; 1.1 安装 PyQt6 和相关工具&#xff1a; 1.2 PyQt6 基础知识&#xff1a; 1.2.1 Qt 的基本概念和组件&#xff1a; 1.2.2 创建和使用 Qt 窗口、标签、按钮等基本组件 1.2.3 布局管理器&#xff1a;垂直布局、水平布局、网格布局…

生信豆芽菜-细胞丰度比较

网址&#xff1a;生信豆芽菜-细胞丰度比较 一、使用方法 1、数据准备 这里需要上传一个行为样本&#xff0c;列为细胞评分的矩阵数据 分组信息 2、选择检验的方法&#xff0c;其中两组的可以选择用wilcox.test/test&#xff0c;三组的可以选择用kruskat.test/anova 3、分组…

最强自动化测试框架Playwright(29)-文件选择对象

FileChooser对象通过page.on("filechoose")事件监听。 如下代码实现点击百度搜图按钮&#xff0c;上传文件进行搜索。 from playwright.sync_api import Playwright, sync_playwright, expectdef run(playwright: Playwright) -> None:browser playwright.chro…

php+echarts实现数据可视化实例2

效果: 代码 php <?php include(includes/session.inc); include(includes/SQL_CommonFunctions.inc); ?> <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible"…

notepad++正则表达式匹配方括号及里面的内容

可以用于去除注释 在notepad也可以直接使用 (\[.*?\])

【Redis】Redis 的学习教程(五)之 SpringBoot 集成 Redis

在前几篇文章中&#xff0c;我们详细介绍了 Redis 的一些功能特性以及主流的 java 客户端 api 使用方法。 在当前流行的微服务以及分布式集群环境下&#xff0c;Redis 的使用场景可以说非常的广泛&#xff0c;能解决集群环境下系统中遇到的不少技术问题&#xff0c;在此列举几…

【项目管理】PMP备考宝典-第三章《人》

文章目录 第一节&#xff1a;概述1.项目涉及的人2.项目经理3.团队4.干系人 第二节&#xff1a;原则1.有效的干系人参与2.成为勤勉尊重关心他人的管家3.创建协作的项目团队环境4.展现领导力行为 第三节&#xff1a;任务1.定义团队的基本原则2.建设团队3.领导团队4.管理冲突5.凝聚…

2022年工作架构分析

mpmw自动化流程工具 schema动态数据 Schema 本身是一个JSON &#xff0c;Schema 通过一些特定字段描述和定义 JSON的数据结构。 最常见的表单通过类XML语法定义。一些库支持通过一些特定结构的 JSON (Schema)来生成类XML标签。 formily 是其中实现之一。 表单设计器通过可视…

S03-快速填充,批量提取和组合数据的神奇

视频教程 快速填充&#xff08;Ctrl➕E&#xff09; 作用&#xff1a;对数据进行拆分重组合并 方式 1 CtrlE 2 双击加号选择智能填充 快速填充数据<>智能填充 开始☞填充☞快速填充&#xff08;注意附近一个单元格&#xff0c;是一定要有数据的&#xff0c;不能出现单独…

前后端分离-毕业生就业服务平台SpringBoot+Redis+Vue校园实习招聘指导java jsp源代码

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 前后端分离-毕业生就业服务平台SpringBootRedisVue 系…

招生老师如何制作发布录取通知书文案?这个开发教程一看就会

作为一名负责招生的老师&#xff0c;录取通知的公布是整个招生环节最重要的一环&#xff0c;如何快速搞定这项工作&#xff1f;传统的公布方式需要设及技术开发、服务器搭建等&#xff0c;一起来看看传统方法制作录取通知查询系统的教程&#xff08;结尾有惊喜&#xff09;&…

高忆管理:股票T+0交易是什么意思?t+0交易有什么好处?

股票的买卖准则有很多种&#xff0c;T0买卖便是其中之一。那么股票T0买卖是什么意思&#xff1f;t0买卖有什么优点&#xff1f;高忆管理也为大家预备了相关内容&#xff0c;以供参考。 股票T0买卖是什么意思&#xff1f; T0买卖准则是指出资者当天买入的股票能够在当天卖出&am…

C++ 好用的包管理工具--vcpkg

背景 Windows 下开发 C/C 程序&#xff0c;少不了编译开源的第三方库&#xff0c;使用这些库开发极大的方便了程序员&#xff0c;使得我们不必重复造轮子。 由于开源库绝大部分都来源于 Linux 系统、将其移植到 Windows 的 VC 开发环境下编译比较复杂和麻烦&#xff1b;而且我…

Hi-TRS:骨架点视频序列的层级式建模及层级式自监督学习

论文题目&#xff1a;Hierarchically Self-Supervised Transformer for Human Skeleton Representation Learning 论文下载地址&#xff1a;https://www.ecva.net/papers/eccv_2022/papers_ECCV/papers/136860181.pdf 代码地址&#xff1a;https://github.com/yuxiaochen1103…

K8S用户管理体系介绍

1 K8S账户体系介绍 在k8s中&#xff0c;有两类用户&#xff0c;service account和user&#xff0c;我们可以通过创建role或clusterrole&#xff0c;再将账户和role或clusterrole进行绑定来给账号赋予权限&#xff0c;实现权限控制&#xff0c;两类账户的作用如下。 server acc…

解决方案 | 电子签优化医药企业管理流程

疫情过后&#xff0c;居民健康意识显著增强&#xff0c;国家相继出台的健康行业的鼓励政策&#xff0c;也让整个医药行业得到了稳定持续的发展。但机遇往往意味着挑战&#xff0c;医药行业在迎来巨大发展的同时&#xff0c;也面临着内外部行业合规风险的挑战&#xff1a;从行业…

bug记录:微信小程序 给button使用all: initial重置样式

场景&#xff1a;通过uniapp开发微信小程序 &#xff0c;使用uview的u-popup弹窗&#xff0c;里面内嵌了一个原生button标签&#xff0c;因为微信小程序的button是有默认样式的&#xff0c;所以通过all: initial重置样式 。但是整个弹窗的点击事件都会被button上面的点击事件覆…

28、springboot的静态模版(前端页面)重加载和 devtools开发者工具

springboot的静态模版重加载和 devtools开发者工具 总结&#xff1a;实现静态模板重加载的两个方法 方法1&#xff1a;在 yml 配置文件&#xff0c;关闭页面模板缓存&#xff0c; 再按 ctrlf9 重新构建 方法2&#xff1a;直接添加 devtools 依赖&#xff0c;再按 ctrlf9 重新构…