1. 适用情况

适用于使用Nginx进行部署的Web网站。

2. 技能要求

熟悉Nginx配置,能够Nginx进行部署,并能针对站点使用Nginx进行安全加固。

3. 前置条件

1、 根据站点开放端口,进程ID,确认站点采用Nginx进行部署;

2、 找到Nginx安装目录,针对具体站点对配置文件进行修改;

3、 在执行过程中若有任何疑问或建议,应及时反馈。

4. 详细操作

4.1 日志配置

  1、备份nginx.conf 配置文件。

    修改配置,按如下设置日志记录文件、记录内容、记录格式,添加标签为main的log_format格式

(http标签内,在所有的server标签内可以调用):
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

  2、在server标签内,定义日志路径

access_log logs/host.access.log main

  3、保存,然后后重启nginx服务。

4.2 禁止目录浏览

  备份nginx.conf配置文件。

  编辑配置文件,HTTP模块添加如下一行内容:

autoindex off;

  保存,然后后重启nginx服务。

4.3 限制目录执行权限

  备份nginx.conf配置文件。

  编辑配置文件,在server标签内添加如下内容:

#示例:去掉单个目录的PHP执行权限
location ~ /attachments/.*\.(php|php5)?$ {
deny all;
} #示例:去掉多个目录的PHP执行权限
location ~
/(attachments|upload)/.*\.(php|php5)?$ {
deny all;
}

  保存,然后后重启nginx服务。

  需要注意两点:

    1、以上的配置文件代码需要放到 location ~ .php{...}上面,如果放到下面是无效的;

    2、attachments需要写相对路径,不能写绝对路径。

4.4 错误页面重定向

  备份nginx.conf配置文件。

  修改配置,在http{}段加入如下内容

http {
...
fastcgi_intercept_errors on;
error_page /.html;
error_page /.html;
error_page /.html;
error_page /.html;
error_page /.html;
error_page /.html;
...
}
修改内容:
ErrorDocument /custom400.html
ErrorDocument /custom401.html
ErrorDocument /custom403.html
ErrorDocument /custom404.html
ErrorDocument /custom405.html
ErrorDocument /custom500.html
其中401.html、.html、.html、.html、.html、.html 为要指定的错误提示页面。

  保存,重启 nginx 服务生效

4.5 最佳经验实践

4.5.1 隐藏版本信息

  备份nginx.conf配置文件。

  编辑配置文件,添加http模块中如下一行内容:

server_tokens off;

  保存,然后后重启nginx服务。

4.5.2 限制HTTP请求方法

  备份nginx.conf配置文件。

  编辑配置文件,添加如下内容:

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

  保存,然后后重启nginx服务。

  备注:只允许常用的GET和POST方法,顶多再加一个HEAD方法

4.5.3 限制IP访问

  备份nginx.conf配置文件。

  编辑配置文件,在server标签内添加如下内容:

location / {
deny 192.168.1.1; #拒绝IP
allow 192.168.1.0/; #允许IP
allow 10.1.1.0/; #允许IP
deny all; #拒绝其他所有IP
}

  保存,然后后重启nginx服务。

4.5.4 限制并发和速度

  备份nginx.conf配置文件。

  编辑配置文件,在server标签内添加如下内容:

limit_zone one $binary_remote_addr 10m;
server
{
listen ;
server_name down.test.com;
index index.html index.htm index.php;
root /usr/local/www;
#Zone limit;
location / {
limit_conn one ;
limit_rate 20k;
}
………
}

  保存,然后后重启nginx服务。

4.5.5 控制超时时间

  备份nginx.conf配置文件。

  编辑配置文件,具体设置如下:

client_body_timeout ;  #设置客户端请求主体读取超时时间
client_header_timeout ; #设置客户端请求头读取超时时间
keepalive_timeout ; #第一个参数指定客户端连接保持活动的超时时间,第二个参数是可选的,它指定了消息头保持活动的有效时间
send_timeout10; #指定响应客户端的超时时间

  保存,然后后重启nginx服务。

4.6 风险操作项

4.6.1 Nginx降权

  备份nginx.conf配置文件。

  编辑配置文件,添加如下一行内容:

 user nobody;

  保存,然后后重启nginx服务。

4.6.2 防盗链

  备份nginx.conf配置文件。

  编辑配置文件,在server标签内添加如下内容:

location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip)$ {
valid_referers none blocked server_names *.nsfocus.com http://localhost baidu.com;
if ($invalid_referer) {
rewrite ^/ [img]http://www.XXX.com/images/default/logo.gif[/img];
# return ;
}
}

  保存,然后后重启nginx服务。

4.6.3 补丁更新

  1、软件信息

查看软件版本 nginx -v
测试配置文件 nginx –t

  2、补丁安装

    手动安装补丁或安装最新版本软件

最后

欢迎关注个人微信公众号:Bypass--,每周原创一篇技术干货。 

【中间件安全】Nginx 安全加固规范的更多相关文章

  1. 下一代的中间件必须是支持docker规范的

    下一代的中间件必须是支持docker规范的,这是中间件技术走向标准规范化的必经之路. 什么是 Docker? 答案是:Docker 是下一代的云计算模式.Docker 是下一代云计算的主流趋势. Do ...

  2. web中间件之nginx

    web中间件之nginx https://www.jianshu.com/p/d8bd75c0fb1b   对nginx正向代理和反向代理理解特别好的一篇文章. 一.nginx nginx缺点,负载均 ...

  3. Nginx升级加固SSL/TLS协议信息泄露漏洞(CVE-2016-2183)

    Nginx升级加固SSL/TLS协议信息泄露漏洞(CVE-2016-2183) 漏洞说明 // 基于Nginx的https网站被扫描出SSL/TLS协议信息泄露漏洞(CVE-2016-2183),该漏 ...

  4. 【中间件安全】Jboss安全加固规范

    1. 适用情况 适用于使用Jboss进行部署的Web网站. 适用版本:5.x版本的Jboss服务器 2. 技能要求 熟悉Jboss安装配置,能够Jboss进行部署,并能针对站点使用Jboss进行安全加 ...

  5. 【中间件安全】WebSphere安全加固规范

    1. 适用情况 适用于使用WebSphere进行部署的Web网站. 2. 技能要求 熟悉WebSphere安装部署,熟悉WebSphere常见漏洞利用方式,并能针对站点使用WebSphere进行安全加 ...

  6. 【中间件安全】IIS6安全加固规范

    1. 适用情况 适用于使用IIS6进行部署的Web网站. 2. 技能要求 熟悉IIS配置操作,能够利用IIS进行建站,并能针对站点使用IIS进行安全加固. 3. 前置条件 1. 根据站点开放端口.进程 ...

  7. 【中间件安全】Weblogic 安全加固规范

    1. 适用情况 适用于使用Weblogic进行部署的Web网站. 2. 技能要求 熟悉Weblogic安装部署,熟悉Weblogic常见漏洞利用方式,并能针对站点使用Weblogic进行安全加固. 3 ...

  8. 【中间件安全】Tomcat 安全加固规范

    1. 适用情况 适用于使用Tomcat进行部署的Web网站. 2. 技能要求 熟悉Tomcat配置操作,能够利用Tomcat进行建站,并能针对站点使用Tomcat进行安全加固. 3. 前置条件 1.根 ...

  9. 【中间件安全】IIS7.0 安全加固规范

    1. 适用情况 适用于使用IIS7进行部署的Web网站. 2. 技能要求 熟悉IIS配置操作,能够利用IIS进行建站,并能针对站点使用IIS进行安全加固. 3. 前置条件 1. 根据站点开放端口.进程 ...

随机推荐

  1. [Android] 判断手机上是否安装了某个程序

    http://blog.csdn.net/xiaodongrush/article/details/9320135 1. 首先得到该程序的包名 这个连上手机ADB,看logcat就能看到.比如:QQ客 ...

  2. Go语言之高级篇beego框架之请求数据处理

    1.Controller中数据参数处理 获取参数:我们经常需要获取用户传递的数据,包括 Get.POST 等方式的请求,beego 里面会自动解析这些数据,你可以通过如下方式获取数据: GetStri ...

  3. centos7 使用rsync 实现文件同步

    一.服务端(192.168.8.81): 安装软件: yum -y install rsync 创建需同步的目录: mkdir -p /home/root/rsync 编辑配置文件:vim /etc/ ...

  4. CCNA实验3.单臂路由器

    拓扑图: 一.交换机配置 通过路由器子接口的方式实现vlan之间的路由. conf t vlan 10 vlan 20 int f0/1 switchport access vlan 10 int f ...

  5. MySql之视图的使用

    一:视图是什么 视图相当于一个窗口,一个基于具体数据库表.定义了相关查询规则 的窗口. 建立视图,可以重用一些复杂的查询语句.    建立视图,相当于定义了一系列查询操作:从视图查询数据,相当于在调用 ...

  6. 转发:查看centos中的用户和用户组

    1.用户列表文件:/etc/passwd/ 2.用户组列表文件:/etc/group 3.查看系统中有哪些用户: cut -d : -f 1 /etc/passwd 4.查看可以登录系统的用户: ca ...

  7. 判断js数组包是否包含某个元素

    要判断数组中是否包含某个元素,从原理来来说,就是遍历整个数组,然后判断是否相等,我们来造个轮子,名字就山寨PHP的数组函数in_array() Array.prototype.in_array = f ...

  8. [转载]说说JSON和JSONP,也许你会豁然开朗,含jQuery用例

    原文地址:http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html 前言: 由于Sencha Touch 2 ...

  9. JS放在博客里面运行

    <ol><li>测试的内容</li><li>测试的内容</li><li>测试的内容</li><li>测试 ...

  10. react-无状态组件

    import React, { Component } from "react"; //import PostItem from "./PostItem"; / ...