nginx安全:修改对外的服务软件名称并隐藏版本号(nginx1.18.0)
一,为什么要隐藏nginx真实的软件名称?
1,nginx响应的Server
头部都会携带上服务软件的名字和版本信息,
服务器软件的版本信息暴光在外部,很容易被黑客了解到,就通过相应版本的漏洞来攻击服务器,引发安全问题。
针对生产环境的服务器,有必要隐藏或者修改软件版本信息,以避免黑客的指向性攻击.
2,看一下nginx作为web server返回的head信息
[root@centos8 ~]# curl --head http://127.0.0.1
HTTP/1.1 200 OK
Server: nginx/1.18.0
Date: Fri, 24 Apr 2020 06:51:51 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Wed, 22 Apr 2020 09:22:38 GMT
Connection: keep-alive
Vary: Accept-Encoding
ETag: "5ea00cde-264"
Accept-Ranges: bytes
真实的软件名称和版本号都显示出来了
3,在这个例子里,我们把nginx的软件名称改名为LWS
说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest
对应的源码可以访问这里获取: https://github.com/liuhongdi/
说明:作者:刘宏缔 邮箱: 371125307@qq.com
二,通过修改nginx源代码文件来修改软件名称
1,复制一个文件夹,与无修改的源码文件夹区分开
[root@centos8 source]# cp -axv nginx-1.18.0 nginx-1.18.0-LWS
然后我们基于新源码文件夹做修改
2,修改第一个文件:核心的头文件
[root@centos8 nginx-1.18.0-LWS]# vi src/core/nginx.h
把
#define NGINX_VER "nginx/" NGINX_VERSION
修改为:
#define NGINX_VER "lws/" NGINX_VERSION
把
#define NGINX_VAR "NGINX"
修改为
#define NGINX_VAR "LWS"
3,第二个文件:
[root@centos8 nginx-1.18.0-LWS]# vi src/http/ngx_http_header_filter_module.c
把
static u_char ngx_http_server_string[] = "Server: nginx" CRLF;
修改为:
static u_char ngx_http_server_string[] = "Server: lws" CRLF;
4,第三个文件:内置的响应信息:比如404之类的错误提示页面
[root@centos8 nginx-1.18.0-LWS]# vi src/http/ngx_http_special_response.c
把
"<hr><center>nginx</center>" CRLF
修改为:
"<hr><center>lws</center>" CRLF
5,第四个文件:
[root@centos8 nginx-1.18.0-LWS]# vi src/http/v2/ngx_http_v2_filter_module.c
把第480行:
"http2 output header: \"server: nginx\"");
修改为:
"http2 output header: \"server: lws\"");
三,重新安装nginx
configure
[root@centos8 nginx-1.18.0-LWS]# ./configure --prefix=/usr/local/soft/nginx-1.18.0 --with-http_stub_status_module --with-http_ssl_module
安装
[root@centos8 nginx-1.18.0-LWS]# make && make install
四,隐藏nginx版本号
[root@centos8 conf]# vi nginx.conf
在http段内增加:
server_tokens off;
五,重启服务并测试效果
重启服务
[root@centos8 conf]# systemctl stop nginx
[root@centos8 conf]# systemctl start nginx
测试效果
[root@centos8 soft]# curl --head http://127.0.0.1
HTTP/1.1 200 OK
Server: lws
Date: Fri, 24 Apr 2020 07:34:38 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Fri, 24 Apr 2020 07:22:13 GMT
Connection: keep-alive
Vary: Accept-Encoding
ETag: "5ea293a5-264"
Accept-Ranges: bytes
也可以从浏览器端查看:
报错页面变成了lws
响应的头信息变成了lws
六,服务端查看nginx的版本
[root@centos8 soft]# /usr/local/soft/nginx-1.18.0/sbin/nginx -v
nginx version: lws/1.18.0
七,对修改nginx软件名和版本号的建议:
1,我们不建议从源码修改版本号,隐藏即可,
真实的版本号还是要保存下来后续的开发维护中参考
2,如果在生产环境中没有修改nginx的软件名称,
那么版本号一定要做到隐藏
nginx安全:修改对外的服务软件名称并隐藏版本号(nginx1.18.0)的更多相关文章
- nginx集群:nginx配置负载均衡集群(nginx1.18.0)
一,nginx的负载均衡集群的特点: 1,nginx集群和lvs的不同? lvs集群:工作在第4层(传输层) nginx集群:工作在第7层(应用层) lvs集群:性能更强 nginx集群:功能更强:可 ...
- nginx优化:配置gzip压缩页面提高访问速度(nginx1.18.0)
一,为什么nginx要使用gzip 1,压缩的作用: 页面使用gzip压缩之后, 页面大小可以压缩到原来的1/7左右, 传输速度和页面打开时间都可以大幅度提高, 有利于用户访问页面体验的提升 2,Ng ...
- nginx安全: 配置http基本验证(Basic Auth)(nginx 1.18.0)
一,http基本验证的作用: 1,http基本身份验证会从浏览器弹出登录窗口, 简单明了,容易理解, 对于面向终端用户的前台来说,不够友好, 但对于内部员工操作的后台还是很有用,通常作为一层安全措施应 ...
- phonegap修改软件名称和图标
修改app 图标 打开AndroidManifest.xml文件 修改application 节点 <application android:allowBackup="true&quo ...
- nginx是一个反向代理的软件
nginx只是一个反向代理的软件,和语言无关,理论上支持任何Web平台,当然http://Asp.net也不例外,http://51aspx.com就是http://Asp.net开发的,前端暴漏的是 ...
- Win10系统修改主机名、用户名称和密码、以及C盘中的用户文件夹名
写在前面 近期重新安装了Ubuntu16.04系统,同时也修改了Windows10系统的用户名.密码,还有C盘用户文件夹名称.对于Linux和windows系统来说,修改名称基本都是三部分,主机名.用 ...
- 一些对外的服务(例如lnmp)都不用root执行
lnmp lamp等需要对外的服务,都不用root用户执行进程 缺点: 如果php程序使用root运行,万一你的程序有漏洞,被拿到了web shell,那么黑客将直接拥有root权限进入你的系统 对于 ...
- nginx设置成开机自动启动服务
1.nginx的安装目录 /usr/local/nginx 启动nginx cd /usr/local/nginx/sbin./nginx 更改配置重启nginxcd /usr/local/nginx ...
- Nginx修改版本信息或隐藏版本号
一,隐藏版本号.首先说明,这个是某一方面隐藏,不是彻底隐藏.未隐藏之前查看nginx信息: 隐藏方法: 修改nginx.conf配置文件,在http { } 标签里边加入字段: server_toke ...
随机推荐
- 乔悟空-CTF-i春秋-Web-SQLi
2020.09.05 今天注定是高产的一天,这题真是坑,不看wp真的不会做,现在回头来复习一遍. 做题 题目 题目地址 做题 这题坑人的地方就在于重定向了两次,并且重要信息在第一次里藏着,第二次还给了 ...
- C#开发PACS医学影像处理系统(十一):Dicom影像挂片协议
通俗点说,挂片协议可以看作整个系统的一个相对复杂一点的配置文件,可以用JSON或XML格式来读取与保存, 另外,可以制作一个独立的exe配置程序来管理这些挂片协议. 假设配置了CT的挂片协议的右键菜单 ...
- 第一次软件工程与UML作业
这个作业属于哪个课程 https://url.cn/IMQa18Jo 这个作业要求在哪里 https://edu.cnblogs.com/campus/fzzcxy/2018SE1/homework/ ...
- matlab中的多项式计算
在做多项式加法的时候需要做多项式扩展.这里将g1扩展到与f等长 多项式的乘积,是两个多项式之和减1, 多项式求导函数:ployder() 先建立两个多项式,再求a的导函数 在计算两个多项式乘积的导函数 ...
- ribbon源码(2) 负载均衡器
负载均衡器对外提供负载均衡的功能,本质上是是维护当前服务的服务器列表和服务器状态,通过负载均衡算法选取合适的服务器地址. 用户可以通过实现ILoadBalancer来实现自己的负载均衡器,ribbon ...
- python常用os模块
OS 模块 #os模块就是对操作系统进行操作,使用该模块必须先导入模块: import os #getcwd() 获取当前工作目录(当前工作目录默认都是当前文件所在的文件夹) result = os. ...
- 第二篇 配置wcf
老老实实学WCF 第二篇 配置WCF 在上一篇中,我们在一个控制台应用程序中编写了一个简单的WCF服务并承载了它.先回顾一下服务端的代码: using System; using System.Col ...
- awk的一些认识
awk awk '{pattern + action}' {filenames} 当我们所指定的规则脚本过长的时候,我们可以使用-f的选项加上我们的脚本文件.再复杂点我们可以直接调用shell脚本,就 ...
- Laver 文件版本遍历器
系统简介 最近有个需求,需要罗列出各个目录中文件的信息,检索各类文件的最新版本.网上看了很多方式,但发现没有合适的.于是利用空余时间开始编写了一套文件遍历系统,如此便有了Laver(紫菜).Laver ...
- Centos-当前登录用户信息- w who
w who 显示当前登录系统的用户,但w显示的更为详细 who 相关参数 # 默认输出 用户名.登录终端.登录时间 -a 列出所有信息 -b 系统最近启动日期 -m 当前终端信息,相当于 w ...