nginx指定配置文件启动_NGINX安全加固手册

NIGNX系统安全

基线规范

92fb1f9104b43e8cbc7adff1ef90ae02.png

1.概述

1.1 适用范围

 本配置标准的使用者包括:各事业部服务器负责人。
各事业部服务器负责人按规范要求进行认证、日志、协议、补丁升级、文件系统管理等方面的安全配置要求。对系统的安全配置审计、加固操作起到指导性作用。

1.2 文档内容

 本文档内容是nginx的安全加固操作项的详细操作指导,并明确在加固操作过程中可能出现的风险和所遵循的标准。

1.3 加固前的准备

1.3.1 需要重新启动验证系统

 需要重新启动以确定nginx的完整性、业务系统的正常性

1.3.2 备份文件

 在操作之前需要备份nginx重要的配置文件

1.3.3 加固操作注意事项

 需要手工确认系统是否需要加固,同时验证加固效果,系统可以正常运行

1.3.4 软件包相关

 操作系统中多余的软件或者加固需要安装的软件,需要与被加固系统负责人进行确认。

2.操作指导

2.1 nginx版本统一

名称

nginx版本统一

说明

统一集群内的Nginx版本,避免管理混乱

实施目的

统一使用官方Stable 高版本的nignx

问题影响

管理混乱,容易通过低版本漏洞被攻击

实施步骤

通过Nignx官网下载http://nginx.org/en/download.html

最新Stable版本

回退方案

确认方法

nginx -v 查看版本

实施风险

适用说明

2.2 使用普通账户启动nginx

名称

使用普通账户启动nginx

说明

使用普通账户启动nginx

实施目的

新建jqsoft用户启动nginx

问题影响

特权用户启动引起的安全隐患

实施步骤

编辑nginx配置文件,添加如下参数:

user jqsoft;

重启Nginx(需要将Nignx目录及相关静态文件授权给jqsoft用户)

回退方案

恢复nginx配置文件

确认方法

ps -ef |grep nginx 查看nginx进程是否是jqsoft用户启动

实施风险

适用说明

2.3 禁用autoindex

名称

禁用autoindex

说明

禁用autoindex,避免目录浏览

实施目的

禁用autoindex,避免目录浏览,减少安全隐患

问题影响

通过了解目录结构从而攻击系统

实施步骤

编辑nginx配置文件,在http模块添加autoindex off;

重启Nginx

回退方案

恢复nginx配置文件

确认方法

确保nginx.conf配置文件上禁用autoindex
即autoindex off或者没有配置autoindex。

实施风险

适用说明

2.4 关闭服务器标记

名称

关闭服务器标记

说明

关闭服务器标记,避免显示服务器版本信息

实施目的

关闭服务器标记,避免显示服务器版本信息

问题影响

如果开启的话(默认情况下)所有的错误页面都会显示服务器的版本和信息

实施步骤

在nginx.conf配置文件中,http模块中添加 server_tokens off;

重启Nginx

回退方案

恢复配置文件

确认方法

查看错误页面http 返回头中server字段值中已经没有了服务器版本信息

实施风险

适用说明

2.5 设置timeout

名称

设置timeout

说明

设置timeout设低来防御DOS攻击

实施目的

设置timeout设低来防御DOS攻击

问题影响

DOS攻击拖垮服务器

实施步骤

编辑nginx配置文件,在http模块中添加以下参数

client_body_timeout 10;

client_header_timeout 30;

keepalive_timeout 30  30;

send_timeout 10;

重启Nginx

回退方案

恢复nginx配置文件

确认方法

访问Nignx网站查看返回头中已经包含了超时时间配置

实施风险

适用说明

2.6 设置NGINX缓冲区

名称

设置NGINX缓冲区

说明

设置NGINX缓冲区

实施目的

防止缓冲区溢出攻击

问题影响

缓冲区溢出

实施步骤

编辑nginx配置文件,在server模块中需要限制的location中添加以下参数

client_body_buffer_size  1K;

client_header_buffer_size 1k;

client_max_body_size 1k;

large_client_header_buffers 2 1k;

重启Nginx

回退方案

恢复nginx配置文件

确认方法

查看配置文件

实施风险

适用说明

2.7 限制nginx请求方法

名称

限制nginx请求方法

说明

限制nginx请求方法,仅允许常用的get post head

实施目的

限制nginx请求方法,仅允许常用的get post head

问题影响

通过请求漏洞攻击服务器

实施步骤

编辑nginx配置文件,在每个server模块中添加

if ($request_method !~ ^(GET|HEAD|POST)$ ) {

return 444;

}

回退方案

恢复Nignx配置文件

确认方法

使用put/delete等请求返回444响应码

实施风险

适用说明

2.8 日志配置

名称

日志配置

说明

统一使用规定好的日志格式

实施目的

统一使用规定好的日志格式

问题影响

日志不规范,问题排查难度倍增

实施步骤

编辑nginx配置文件,在http模块中添加如下参数

log_format  main 

'$remote_addr - $remote_user [$time_local] "$request" ' 

'$status $body_bytes_sent "$http_referer" '  

'"$http_user_agent" "$http_x_forwarded_for"';

access_log logs/host.access.log main;

重启nginx服务即可

回退方案

恢复配置文件

确认方法

查看logs/host.access.log文件,验证日志格式是否与如上配置的一致

实施风险

适用说明

2.9 Nginx日志切割

名称

Nginx日志切割

说明

Nginx日志切割

实施目的

切割nginx日志,避免日志文件过大

问题影响

日志文件过大影响查看

实施步骤

新建日志切割脚本 如下:

#!/bin/bash

#设置日志文件存放目录

logspath="/usr/local/nginx/logs/"

#设置pid文件

pidpath="/usr/local/nginx/nginx.pid"

#重命名日志文件

mv ${logspath}access.log ${logspath}access$(date -d "yesterday" +"%Y%m%d").log

#向nginx主进程发信号重新打开日志

kill -USR1 `cat ${pidpath}`

配置定时任务每日凌晨执行脚本

回退方案

删除定时任务

确认方法

第二天查看日志目录,发现日志自动切割

实施风险

适用说明

2.10 限制访问IP

名称

限制访问IP

说明

限制访问IP,仅允许指定ip访问指定资源

实施目的

限制访问IP,仅允许指定ip访问指定资源

问题影响

服务器不安全性增加

实施步骤

编辑nging配置文件,在每个server模块中的location添加需求的限制,示例如下

deny 192.168.1.1;

allow 192.168.1.0/24;

allow 10.1.1.0/16;

allow 2001:0db8::/32;

deny all;

执行nginx -s reload 动态更新配置文件

回退方案

恢复nginx配置文件

确认方法

使用限制的IP地址访问nginx 提示403

实施风险

适用说明

2.11 限制仅允许域名访问

名称

限制仅允许域名访问

说明

限制仅允许域名访问

实施目的

限制仅允许域名访问,跳过ip扫描

问题影响

ip扫描到网站后会针对性攻击

实施步骤

编辑nging配置文件,新建一个sever,示例如下

server {

listen 80 default;

server_name _;

return 403;

}

执行nginx -s reload 动态更新配置文件

(如果有其他端口,同样加入其他端口的server)

回退方案

恢复nginx配置文件

确认方法

使用IP地址访问nginx 提示403

实施风险

适用说明

2.12 错误页面重定向

名称

错误页面重定向

说明

错误页面重定向

实施目的

nginx默认错误页面包含服务器版本信息,使用自定义错误页面避免版本信息泄露

问题影响

避免通过错误页面获取服务器信息

实施步骤

新建错误页面,放到静态目录中,编辑Nignx配置文件,

在http模块中添加如下参数:

fastcgi_intercept_errors on;

errorpage 401 /401.html;

errorpage 402 /402.html;

errorpage 403 /403.html;

errorpage 404 /404.html;

errorpage 405 /405.html;

errorpage 500 /500.html

重启nginx服务

回退方案

恢复配置文件

确认方法

访问不存在的url重定向到我们配置的的错误页面

实施风险

适用说明

2.13 限制并发和速度

名称

限制并发和速度

说明

nginx客户端并发和速度

实施目的

限制用户连接数及速度来预防DOS攻击

问题影响

通过连接数来攻击nginx服务器

实施步骤

编辑Nignx配置文件,在Http模块中添加如下参数:

limit_zone one $binary_remote_addr 60m;

在server模块的location中,需要限制的location中添加如下参数:

limit_conn one 50; 

limit_rate 100k;

重启nginx服务

回退方案

恢复配置文件

确认方法

单个Ip建立尝试建立多个连接失败

实施风险

适用说明

2.14 nginx配置防盗链

名称

nginx配置防盗链

说明

nginx配置防盗链

实施目的

防止第三方引用链接访问我们的图片,消耗服务器资源和网络流量

问题影响

资源被第三放流量消耗

实施步骤

编辑nginx配置文件,在server模块中添加如下实例:

server {

  listen 80;

server_name www.myine.com;

  root /usr/share/nginx/html;

location ~*.(gif|jpg|jpeg|png|bmp|swf)$ {

validreferers none blocked www.myine.com;

    if ($invalidreferer) {

      return 403;

}

    }

 }

validreferers: 指定资源访问是通过以下几种方式为合法,即白名单。

none:允许缺失的头部访问。

blocked:允许referer没有对应值的请求。

Server_names:若referer站点域名与servername中本机配的域名一样允许访问

回退方案

恢复配置文件

确认方法

新建个人页面,图片引用使用nginx中的图片,访问个人页面图片提示403

实施风险

适用说明

2.15 限制php执行权限

名称

限制php执行权限

说明

限制php执行权限

实施目的

限制php执行权限

问题影响

通过执行php脚本入侵服务器

实施步骤

编辑nignx配置文件,在需要限制的server模块中添加如下代码:

location ~ /(attachments|upload)/.*.(php|php5)?$ {

deny all;

}

以上的配置文件代码需要放到 location ~ .php{...}上面,相关目录需要写相对目录,重启nginx

回退方案

恢复配置文件

确认方法

nginx网站指定目录php文件不能执行、访问

实施风险

适用说明

2.16 nginx配置WAF模块

名称

nginx配置waf模块

说明

nginx配置waf模块

实施目的

nginx配置waf模块,提升服务器的安全性

问题影响

实施步骤

下载waf模块,wget https://github.com/loveshell/ngx_lua_waf/archive/master.zip

配置waf相关Lua规则、目录、脚本等,

(nginx需要加载nginx_lua_module模块)

编辑nginx配置文件,在http模块中添加如下参数:

lua_package_path “/usr/local/nginx/conf/waf/?.lua”;

lua_shared_dict limit 10m;

init_by_lua_file /usr/local/nginx/conf/waf/init.lua;

access_by_lua_file /usr/local/nginx/conf/waf/waf.lua;

新建攻击日志目录

mkdir -p /data/logs/hack/

chown -R nobody:nobody /data/logs/hack/

chmod -R 755 /data/logs/hack/

重启Nignx服务

回退方案

删除配置文件的中的waf配置

确认方法

查看目录/data/logs/hack/ 中的日志

实施风险

适用说明

2.17 安装官方补丁更新

名称

安装官方补丁更新

说明

为nginx安装最新安全补丁

实施目的

防止攻击者利用nginx漏洞进行攻击

问题影响

系统安全性下降

实施步骤

查看当前nginx版本

nginx -v

官网下载最新的安全补丁

回退方案

确认方法

登陆用户查看nginx版本信息

实施风险

适用说明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/433070.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

口袋网咖已有服务器在使用怎么注销,口袋网咖_口袋网咖常见问题_口袋网咖专区...

口袋网咖是专门为游戏高玩打造的手机变电脑软件,虚拟电脑神器,体验各种电脑游戏,非常的方便,能让小伙伴尽情的体验手机电脑的感觉,很多小伙伴在使用过程中遇到了一些问题,快啦网为大家分享口袋网咖常见问题…

统计个人已完成的工作量_团队工作量及团队价值贡献统计、核算、评审及提升的重要性...

在推行阿米巴经营模式时,需要进行企业内部产品及服务全价值分析,也就是企业内部团队产品及服务价值增值的全过程分析,团队价值增值是团队存在的目的和意义,对于团队经营来讲,团队工作量就团队的收入,团队价…

hyper服务器虚拟网卡和实际网卡,Hyper-V 3 虚拟网卡带宽应用限制

Windows Server 2012的Hyper-V 3中,打来了系列新功能,例如网卡流量限制功能。 基础架构注意的问题宿主服务器规划过程中,管理员主要考虑服务器基础架构中的CPU、内存、磁盘空间等必要因素,但是网络适配器(简称网卡)通常属于被忽略…

状态机思路在程序设计中的应用

状态机思路在单片机程序设计中的应用 状态机的概念 状态机是软件编程中的一个重要概念。比这个概念更重要的是对它的灵活应用。在一个思路清晰而且高效的程序中,必然有状态机的身影浮现。 比如说一个按键命令解析程序,就可以被看做状态机:本来…

卷积核_漫画:卷积神经网络中的卷积核到底是什么?

卷积计算的直观体现如上所示,一张汽车图片经过了多次卷积操作,一开始卷积在提取低层次的特征(检测边缘),然后逐渐提取高层次的特征(完整的物体)不同的卷积探测器我们可以看到同一张图片经过不同的卷积核,得到的结果是不一样的&…

如何打开win7禁用的无线网卡服务器,Windows7如何使用批处理开启/禁用无线网卡...

对于无线网卡,Win7笔记本用户应该都不会陌生,许多笔记本用户都是在自己的电脑上安装了无线网卡之后,使用无线网络进行联网的,不过对于一些有线用户来说,无线网卡就显得并不太重要了。因此,今天小编就教大家…

超声声场模拟_超声全聚焦(TFM)简介

应读者要求,小编将介绍一下全聚焦TFM的基础知识。如有讲解不对的,欢迎批评指正。全聚焦是超声检测里面的新事物。早在2005前, Caroline Holmes、Paul D. Wilcox等国外学者就开始研究了全聚焦成像,并通过实验得出了TFM相对于常规相…

post修改服务器数据源,postgresql安装及配置超详细教程

1. 安装根据业务需求选择版本,官网下载初始化数据库执行完初始化任务之后,postgresql 会自动创建和生成两个用户和一个数据库:linux 系统用户 postgres:管理数据库的系统用户;密码由于是默认生成的,需要在系…

小程序分享到朋友圈_如何给小程序添加分享朋友圈

微信公众号更新以后,推送不是按照优先来的,你们可以把我的微信公众号点击设置为星标,以便于及时的接收信息.从微信小程序官方分享朋友圈有那么几天了,今天就分享下如何给自己的小程序添加分享朋友圈代码,几行代码的事。根据官方的提示需要基础…

JS代码大全

一、验证类 1、数字验证内 1.1 整数 /^(-|\)?\d$/.test(str) 1.2 大于0的整数 (用于传来的ID的验证) /^\d$/.test(str) 1.3 负整数的验证 /^-\d$/.test(str) 2、时间类 2.1 短时间,形如 (13:04:06) function isTime(str) …

eclipse中查看mysql_eclipse中怎样查看sqlite数据库的表

string createtable(classclazz , string tablename){//实例化一个容器,用来拼接sql语句stringbuffer sbuffer new stringbuffer();//sql语句,第一个字段为_id 主键自增,这是通用的,所以直接写死sbuffer.append("create tab…

敏捷开发之Scrum扫盲篇

现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP... 为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述Scrum中的各个环节&#x…

macos xampp mysql 命令_MAC系统XAMPP 中 MySQL命令行client配置使用

在PHP的学习过程中。MySQL预计是必定会接触的。MySQL的管理相信大家也会使用phpmyadmin:好吧。phpmyadmin的确是MySQL管理的神器,你想要的。他好多都有,在开发的过程中。对于后台数据库的设计架构帮助真的非常大。可是。在这篇文章的主角确不…

]Kinect for Windows SDK开发入门(六):骨骼追踪基础 上

原文来自:http://www.cnblogs.com/yangecnu/archive/2012/04/06/KinectSDK_Skeleton_Tracking_Part1.html Kinect产生的景深数据作用有限,要利用Kinect创建真正意义上交互,有趣和难忘的应用,还需要除了深度数据之外的其他数据。这…

Daily Scrum 10.29

时间越来越紧迫,不过大家逐渐进入了状态。虽然在有些问题上大家意见有些不同,但是最终还都是为着团队着想,很好地达成一致了。 MemberToday’s Task Tomorrow’s Task李孟 task615 测试(活动) task571 完成daily scrum 10.29撰文 task615 测试…

python中list index out of range_Python知识精解:str split()方法

描述split()函数是Python字符串函数。split() 通过指定分隔符对字符串进行切片。如果指定了整型参数num,则仅分隔num 1个子字符串(即分割num次)。使用split()函数将字符串分割后,返回的是一个列表,列表中存储着分割后…

ashx连接mysql_对C#中的web访问mysql数据库的一些知识点进行了整理归纳总结

基本对比使用方式使用场合优缺点是否需要安装需要的dll网址引用方式程序内引用程序初期确定使用MySql,前期添加引用大多数情况下使用在类文件内,多数使用于aspx,ashx等带有后置代码的类文件中可以安装,也可以直接引用dll 多数情况…

mysql -b -e_MySQL 的B+树索引.

一、B树索引概述索引是应用程序设计和开发的一个重要方面。若索引太多,应用程序的性能可能会受到影响(需维护索引的结构和数据);而索引太少,对查询性能又会产生影响。二叉树,左子树的键值总是小于根的键值,右子树的键值…

mysql卸载完环境变量还有_MySql完全卸载

这篇文章为转载本博客内容均摘自其他博客,由我整合并且将内容更改的更为详细,方便自己以后观看,也方便各位同学学习,少踩一些坑1.首先我们看一下如何卸载(1)停掉MySql在Windows的服务:开始—> 运行—> services.…

pycharm怎么编写python代码_如何设置PyCharm中的Python代码模版(推荐)

在MacOs运行的PyCharm中,执行python文件,如果不指定python文件字符编码会报错:SyntaxError: Non-ASCII character \xe6 in file /Users/yuchao/PycharmProjects/oldboy_python/python_lesson/模块与包/spam.py on line 6,but no encoding dec…