一、调整参数隐藏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. 一个线性表中的元素为整数,设计一个算法,将正整数和负整数分开,使线性表的前一半为负整数,后一半为正整数。(C语言)

    以下为完整可运行示例代码: #include <stdio.h> #include <stdlib.h> typedef struct LNode{ int data; str ...

  2. CodeForces - 851B -Arpa and an exam about geometry(计算几何)

    Arpa is taking a geometry exam. Here is the last problem of the exam. You are given three points a,  ...

  3. php:php相关的函数或用法记录

    //1:判断字符串是否全是字母组成的 $str = 'AAKAaa_aLJIGF'; var_dump(ctype_alpha($str)); //boolean false,全部是英文时才是返回tr ...

  4. Ubuntu 16.04 LTS安装Docker

    一.安装Docker的先决条件 1.运行64位CPU构架的计算机(目前只能是x86_64和amd64),请注意,Docker目前不支持32位CPU.2.运行Linux 3.8或更高版本内核.一些老版本 ...

  5. (转)生产环境常见的HTTP状态码列表(老男孩整理)

    生产环境常见的HTTP状态码列表(老男孩整理) 原文:http://blog.51cto.com/oldboy/716294 ##################################### ...

  6. (转)启动网卡报错(Failed to start LSB: Bring up/down networking )解决办法总结

    启动网卡报错(Failed to start LSB: Bring up/down networking )解决办法总结 原文:http://blog.51cto.com/11863547/19059 ...

  7. springboot项目实现批量新增功能

    这个困扰我一整天东西,终于解决了. 首先是mybatis中的批量新增sql语句. 注意:这里我给的是我需要新增的字段,你们改成你们需要的字段. <insert id="insertBa ...

  8. springboot集成shiro实现权限缓存和记住我

    到这节为止,我们已经实现了身份验证和权限验证.但是,如果我们登录之后多次访问http://localhost:8080/userInfo/userDel的话,会发现权限验证会每次都执行一次.这是有问题 ...

  9. 织梦DeDeCMS友情链接文字显示不全

    文件:/include/taglib/flink.lib.php 把下面代码中的24改为合适的值 $attlist=”type|textall,row|24,titlelen|24,linktype| ...

  10. 【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:4.技术简介之Spring

    欢迎阅读我的开源项目<迷你微信>服务器与<迷你微信>客户端 Spring是一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One ...