一,为什么要隐藏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)的更多相关文章

  1. nginx集群:nginx配置负载均衡集群(nginx1.18.0)

    一,nginx的负载均衡集群的特点: 1,nginx集群和lvs的不同? lvs集群:工作在第4层(传输层) nginx集群:工作在第7层(应用层) lvs集群:性能更强 nginx集群:功能更强:可 ...

  2. nginx优化:配置gzip压缩页面提高访问速度(nginx1.18.0)

    一,为什么nginx要使用gzip 1,压缩的作用: 页面使用gzip压缩之后, 页面大小可以压缩到原来的1/7左右, 传输速度和页面打开时间都可以大幅度提高, 有利于用户访问页面体验的提升 2,Ng ...

  3. nginx安全: 配置http基本验证(Basic Auth)(nginx 1.18.0)

    一,http基本验证的作用: 1,http基本身份验证会从浏览器弹出登录窗口, 简单明了,容易理解, 对于面向终端用户的前台来说,不够友好, 但对于内部员工操作的后台还是很有用,通常作为一层安全措施应 ...

  4. phonegap修改软件名称和图标

    修改app 图标 打开AndroidManifest.xml文件 修改application 节点 <application android:allowBackup="true&quo ...

  5. nginx是一个反向代理的软件

    nginx只是一个反向代理的软件,和语言无关,理论上支持任何Web平台,当然http://Asp.net也不例外,http://51aspx.com就是http://Asp.net开发的,前端暴漏的是 ...

  6. Win10系统修改主机名、用户名称和密码、以及C盘中的用户文件夹名

    写在前面 近期重新安装了Ubuntu16.04系统,同时也修改了Windows10系统的用户名.密码,还有C盘用户文件夹名称.对于Linux和windows系统来说,修改名称基本都是三部分,主机名.用 ...

  7. 一些对外的服务(例如lnmp)都不用root执行

    lnmp lamp等需要对外的服务,都不用root用户执行进程 缺点: 如果php程序使用root运行,万一你的程序有漏洞,被拿到了web shell,那么黑客将直接拥有root权限进入你的系统 对于 ...

  8. nginx设置成开机自动启动服务

    1.nginx的安装目录 /usr/local/nginx 启动nginx cd /usr/local/nginx/sbin./nginx 更改配置重启nginxcd /usr/local/nginx ...

  9. Nginx修改版本信息或隐藏版本号

    一,隐藏版本号.首先说明,这个是某一方面隐藏,不是彻底隐藏.未隐藏之前查看nginx信息: 隐藏方法: 修改nginx.conf配置文件,在http { } 标签里边加入字段: server_toke ...

随机推荐

  1. 调整JavaScript抽象的迭代方案

    原文链接:Adapting JavaScript Abstractions Over Time 译者:小溪里 校对者:郭华翔.苗冬青 即使还没有读过我的文章<在处理网络数据的 JavaScrip ...

  2. NGINX 负载均衡的理解

    前言 NGINX是轻量级,也是当前比较流行的web服务器软件.体积小但是功能强大. 这里我按照自己的理解,记录下对NGINX负载均衡的认识.(加权均衡,最小连接) 这里参考了 [https://blo ...

  3. python中的三大流程

    三大流程又叫程序控制流程 在我们编写代码时,程序是怎么运行的,要用到程序控制流程.在普通代码中,运行的方向是从上到下,从左到右 这就是顺序(逐行扫描). 第二个是分支(又叫选择)结构,例如在编写代码时 ...

  4. MySQL存储引擎入门介绍

    什么是MySQL? MySQL 是一种关系型数据库,在Java企业级开发中非常常用,因为 MySQL 是开源免费的,并且方便扩展.阿里巴巴数据库系统也大量用到了 MySQL,因此它的稳定性是有保障的. ...

  5. Ansys Student 2020R2中Fluent编译UDF简介

    使用内建编译器 在Ansys Fluent中编译UDF一般都需要额外安装相应版本的Visual Studio编译器,VS的缺点是体量大,占空间,安装后还需要额外进行相关设置才能正常使用.而新版本的An ...

  6. Python练习题 013:求解a+aa+aaa……

    [Python练习题 013] 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字.例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘输入. 这题倒也 ...

  7. Java学习day02

    day02-课堂笔记 1.打开DOS命令窗口,执行java HelloWorld,执行原理? * java.exe命令会启动JVM * JVM启动之后会启动类加载器ClassLoader * Clas ...

  8. 开源后台系统*mee-admin*

    mee-admin开源后台系统 Preface 这是一个开放的时代,我们不能总是把东西揣在口袋里面自己乐呵. 也正如名言所说的"如果你有两块面包,你当用其中一块去换一朵水仙花" 所 ...

  9. matlab中uicontrol创建用户界面控件

    来源:https://ww2.mathworks.cn/help/matlab/ref/uicontrol.html?searchHighlight=uicontrol&s_tid=doc_s ...

  10. P3419 [POI2005]SAM-Toy Cars / SP688 SAM - Toy Cars

    一道很妙的贪心题 题面 我们考虑当我们插入时会面临的两种情况 当地上的玩具,不满 \(k\) 个时,那我们直接放就可以了. 当满了 \(k\) 个的时候,我们就要从地上拿出一个来给当前的腾位置. 这就 ...