一、调整参数隐藏nginx软件版本号信息

查看nginx版本信息:

[root@nginx conf]# curl -I 192.168.200.102
HTTP/1.1 200 OK
Server: nginx/1.8.1    #这里显示了nginx的版本号即软件名称;
Date: Fri, 31 Aug 2018 09:20:47 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Fri, 31 Aug 2018 08:41:19 GMT
Connection: keep-alive
ETag: "5b88ff2f-264"
Accept-Ranges: bytes

隐藏nginx版本号只需要在nginx.conf文件中的http标签段内加入“server_tokens off”参数即可。

server_tokens参数的官方说明如下:

syntax:    server_tokens on | off;    #此行为参数语法,on为开启状态,off为关闭状态;
default: server_tokens on; #此行意思是不配置改参数,软件默认情况的结果;
context: http,server,location #此行为server_tokens参数可以放置的位置;
参数作用:激活或禁止nginx的版本信息显示在报错信息和server的响应首部位置中;
Enables or disables emitting of nginx version in error messages and inter"Server" response header field. #此行是参数的原文作用;

官方资料地址:

操作如下:

[root@nginx conf]# cat nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server_tokens off; #加入这一行即可;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

再次查看,nginx的版本信息就隐藏了:

[root@nginx conf]# systemctl reload nginx

[root@nginx conf]# curl -I 192.168.200.102
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 31 Aug 2018 09:34:16 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Fri, 31 Aug 2018 08:41:19 GMT
Connection: keep-alive
ETag: "5b88ff2f-264"
Accept-Ranges: bytes

二、更改源码隐藏nginx软件名

建议在编译安装前修改,安装后修改软件名,需要重新编译。

第一步:依次修改3个nginx源码文件:

修改nginx.h文件
路径为:nginx源码包下面的 src/core/nginx.h 修改后如下:
...
#define NGINX_VERSION "1.0"
#define NGINX_VER "Web" NGINX_VERSION
...
#define NGINX_VAR "Web"
... 修改ngx_http_header_filter_module.c文件
路径为:nginx源码包下面的 src/http/ngx_http_header_filter_module.c 修改第49行,修改后如下:
static char ngx_http_server_string[] = "Server: Web" CRLF;
也可以 通过sed替换修改,命令如下:
sed -i '49 $#nginx#Web#g' ngx_http_header_filter_module.c 修改ngx_http_header_filter_module.c文件
路径为:nginx源码包下面的 src/http/ngx_http_header_filter_module.c
修改后如下:
第22行:"<hr><center>Web</center>" CRLF
第29行:"<hr><center>Web</center>" CRLF

第二步:修改后编译软件使其生效(如果是已经安装好的,需要重新编译。)

systemctl stop nginx

./configure --user=www --group=www --prefix=/application/nginx-1.8.1 --with-http_stub_status_module --with-http_ssl_module

make && make install

systemctl start nginx

[root@nginx nginx-1.8.1]# curl -I 192.168.200.102
HTTP/1.1 200 OK
Server: Web #服务名称和版本号已隐藏;
Date: Fri, 31 Aug 2018 15:00:46 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Fri, 31 Aug 2018 08:41:19 GMT
Connection: keep-alive
ETag: "5b88ff2f-264"
Accept-Ranges: bytes

三、更改nginx服务的默认用户

查看nginx服务对应的默认用户,一般情况下,nginx服务启动后,默认使用的用户是nobody,查看默认的配置文件,如下:

[root@nginx conf]# grep '#user' nginx.conf.default
#user nobody;

更改nginx的默认用户,操作如下:

一、为nginx服务建立新用户
[root@nginx conf]# useradd www -s /sbin/nologin -M
[root@nginx conf]# id www
uid=1002(www) gid=1002(www) 组=1002(www) 二、配置nginx服务,让其使用刚建立的nginx用户
第一种为直接更改配置文件参数,将默认的#user nobody;改为如下内容:
user nginx nginx 第二种方法为直接在编译nginx软件是指定编译的用户和组,命令如下:
./configure --user=www --group=www --prefix=/application/nginx-1.8.1 --with-http_stub_status_module --with-http_ssl_module 三、检查更改用户的效果
[root@nginx conf]# ps -ef |grep nginx|grep -v frep
root 7360 1 0 23:00 ? 00:00:00 nginx: master process /application/nginx/sbin/nginx
www 7362 7360 0 23:00 ? 00:00:00 nginx: worker process
root 7416 1271 0 23:16 pts/0 00:00:00 grep --color=auto nginx

通过查看更改后的nginx进程,可以看到worker processes进程对应的用户都变成了nginx。当然,nginx的主进程还是以root身份运行的,后面的文章中会有更改root主进程服务用户的深度安全优化与架构技巧。

nginx基本安全优化的更多相关文章

  1. Nginx并发访问优化

    Nginx反向代理并发能力的强弱,直接影响到系统的稳定性.安装Nginx过程,默认配置并不涉及到过多的并发参数,作为产品运行,不得不考虑这些因素.Nginx作为产品运行,官方建议部署到Linux64位 ...

  2. Nginx 之六: Nginx十万并发优化

    操作 操作 Nginx 之六: Nginx十万并发优化

  3. Nginx配置性能优化与压力测试webbench【转】

    这一篇我们来说Nginx配置性能优化与压力测试webbench. 基本的 (优化过的)配置 我们将修改的唯一文件是nginx.conf,其中包含Nginx不同模块的所有设置.你应该能够在服务器的/et ...

  4. nginx错误界面优化和日志管理

    nginx错误界面优化 在进行web访问的时候,经常会遇到网站打不开报错的情况,nginx默认的界面并不美观,我们可以通过重定向到自定义的错误页面,提升用户体验,比如淘宝的错误页面还有商品信息和广告. ...

  5. Nginx web服务优化 (一)

    1.Nginx基本安全优化 a.更改配置文件参数隐藏版本 编辑nginx.conf配置文件增加参数,实现隐藏Nginx版本号的方式如下.在nginx配置文件nginx.conf中的http标签段内加入 ...

  6. nginx web服务优化

    nginx基本安全优化 1. 调整参数隐藏nginx软件版本号信息 软件的漏洞和版本有关,我们应尽量隐藏或消除web服务对访问用户显示各类敏感信息(例如web软件名称及版本号等信息),这样恶意的用户就 ...

  7. Linux实战教学笔记38:企业级Nginx Web服务优化实战(下)

    四,Nginx站点目录及文件URL访问控制 4.1 根据扩展名限制程序和文件访问 Web2.0时代,绝大多数网站都是以用户为中心多的,例如:bbs,blog,sns产品,这几个产品都有一个共同特点,就 ...

  8. Linux实战教学笔记37:企业级Nginx Web服务优化实战(上)

    一,Nginx基本安全优化 1.1 调整参数隐藏Nginx软件版本号信息 一般来说,软件的漏洞都和版本有关,这个很像汽车的缺陷,同一批次的要有问题就都有问题,别的批次可能就都是好的.因此,我们应尽量隐 ...

  9. 企业级Nginx Web服务优化实战

    web优化一览总结表 优化类型 优化说明 优化方法 安全优化 隐藏nginx版本信息优化 修改nginx配置文件实现优化 server_tokens off: 修改nginx版本信息优化 修改ngin ...

  10. nginx 服务器并发优化

    apache 提供的 ab 可以对服务器进行压力测试, 安装 ab:   apt-get install apache2-utils 安装完后,ab 在目录  /usr/bin/ 下的. 执行: ab ...

随机推荐

  1. Jar命令用法

    JAR文件 JAR文件 全称:Java Archive File , 意思是Java档案文件.通常JAR文件是一种压缩文件,与常见的ZIP压缩文件兼容,通常被称为JAR包. JAR文件和ZIP文件的区 ...

  2. VLAN-7-VTP处理及修订版本号

    在VTPv1和VTPv2中,更新的过程开始于:交换机管理员在一台VTP服务器交换机上添加.删除或更新VLAN.当新的配置出现时,VTP服务器将旧的VTP修订版本号加1,并通告完整的VLAN配置数据库以 ...

  3. centOS6.5 关闭关盖待机

    因为centOS安装在笔记本上面的,有时要把电脑放在一边,用SSH连接 所以需要关盖不休眠 用命令没找到怎么设置 后面在桌面电脑选项里面设置的,设置成黑屏或者不执行动作应该都是可以的.

  4. 2017 ACM Arabella Collegiate Programming Contest div2的题,部分题目写个题解

    F. Monkeying Around   维护点在多少个线段上 http://codeforces.com/gym/101350/problem/F 题意:有m个笑话,每个笑话的区间是[L, R], ...

  5. B - Median Pyramid Easy 构造题

    B - Median Pyramid Easy Time limit : 2sec / Memory limit : 256MB Score : 400 points Problem Statemen ...

  6. Spring Boot Security配置教程

    1.简介 在本文中,我们将了解Spring Boot对spring Security的支持. 简而言之,我们将专注于默认Security配置以及如何在需要时禁用或自定义它. 2.默认Security设 ...

  7. When you want to give up, remember why you started.

    When you want to give up, remember why you started.当你想要放弃的时候,请记住当初你为何而开始.

  8. ”position”之绝对定位深入理解

    要点: 1.绝对元素脱离文档流 它从文档流中脱离了出来,后面的元素会填充掉它原来的位置 2.绝对定位元素定位 以离他最近的.有定位的.祖先元素 为准 参照对象决定元素的位置 情况1 <div ( ...

  9. java控制远程ssh-expect4j(一)

    github : https://github.com/wengyingjian/ssh-java-demo.git 程序写完后,ssh连接到远程服务器上需要做的步骤都是固定的,所以我们可以通过程序来 ...

  10. socket tcp使用recv接收数据时,返回errno错误代码88

    原因:就是recv函数的第一个参数不是可用的,也就是第一个参数不是建立连接时返回的文件描述符. 解决方法:xxx