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 ...
随机推荐
- 教务管理系统(node+express+mysql)
模块拆分 现在将教务系统拆分成九个模块: 教务系统教师业务:师资管理.教学计划管理.排课管理 教务系统学生业务:考试管理.毕业生管理.学生综合测评 信息查询:自习室查询.课程表查询 考试系统:实现学生 ...
- Appium之定位元素
常用的appium元素定位工具: (1)Android SDK 中提供的元素定位工具uiautomatorviewer: (2)AppiumDesktop提供的元素定位工具Appium Inspec ...
- 学习 | css3基本动画之demo篇
移动端使用的框架是zepto,但是zepto的内置对象没有传统的animate这个方法,效果都是需要css3来实现的,zepto也不支持fadeIn和fadeOut等一些基本的动画,基于这一现状,我自 ...
- Java 中 static 的作用
static 关键字的作用 在 Java 中 static 关键字有4种使用场景,下面分别进行介绍: 1.static 成员变量 public class Student { // 静态成员变量 pr ...
- Elasticsearch(1):基础入门
1 Elasticsearch¶ 在如今数据为王的时代,如何充分高效实现数据检索和分析是数据应用的关键.以电商平台为例,输入一个商品名称,那么就要求系统以最快的速度将所有相关的商品搜索处理.现 ...
- 前端性能测试工具之PageSpeed Insights
谷歌开发的一个免费的网页分析工具,在地址栏中输入被分析的网站 url 地址,点击分析 地址:https://developers.google.cn/speed/pagespeed/insights/ ...
- zabbix_server.conf配置文件参数
NodeID: 在amster-child 的分布式架构中,这个ID是唯一标识zabbix node的号码 ListenPort:Trapper 类型Item监听的端口, SourceIP: 在连接其 ...
- lamda表达式与Stream 流操作,reduce,flatMap,groupingBy等
/** * 符合lambda表达式的接口也叫函数式接口: * 除了默认方法和Object类的方法外,只有一个抽象方法的接口才能符合lambda表达式的要求 * 可以使用@FunctionalInter ...
- .NET 是信息技术应用创新产业重要参与者
今天是国庆节,也是中秋节,月满中秋,举国欢庆,在这里祝各位开发者中秋国庆快乐. 放假在家就想把这几年对于.NET发展相关生态做个梳理,写一篇文章来总结一下这两年从腾讯出来自己创业,推动.NET在国内的 ...
- mysql-7-join
#进阶7:连接查询 /* 多表连接:查询的字段来自多个表 按功能分类: 内连接: 等值连接 非等值连接 自连接 外连接: 左外连接 右外连接 全外连接 交叉连接 */ USE girls; SELEC ...