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. API判断本机安装的Revit版本信息

    start [Transaction(TransactionMode.Manual)] [Regeneration(RegenerationOption.Manual)] public class c ...

  2. 更优雅地关闭资源 - try-with-resource及其异常抑制

    原文:https://www.cnblogs.com/itZhy/p/7636615.html 一.背景 我们知道,在Java编程过程中,如果打开了外部资源(文件.数据库连接.网络连接等),我们必须在 ...

  3. 针对UDP丢包问题,进行系统层面和程序层面调优

    转自:https://blog.csdn.net/xingzheouc/article/details/49946191 1. UDP概念 用户数据报协议(英语:User Datagram Proto ...

  4. 服务器能远程连接,网络连接正常,但是外网域名Ping不通,浏览器中打不开网站

    服务器能远程连接成功,但在浏览器中打不开任何网站,出现这个问题一般是安装什么软件引起IE的相关设置做了变动或者是服务器中了病毒引起的,或是服务器的DNS设置是错误的. 一.先检查服务器DNS是否正确 ...

  5. TinyMCE与Domino集成

    TinyMCE与Domino集成 一:TinyMCE简介 TinyMCE是一个轻量级的基于浏览器的所见即所得编辑器,由JavaScript写成.它对IE6+和Firefox1.5+都有着非常良好的支持 ...

  6. FDMB 增删改删 查 分页 封装

    下载地址 http://pan.baidu.com/s/1qWrt9W4// // GCB_ProductDetailDB.h // TestDemo001 // // Created by Walt ...

  7. 保持APP后台NSTimer运行

    [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil]; self.timer = [NSTi ...

  8. Django Web开发学习笔记(5)

    第五部分 Model 层 创建一个app工程.app和project的区别引用DjangoBook的说法是: 一个project包含很多个Django app以及对它们的配置. 技术上,project ...

  9. dos命令dir查找文件的用法及实例

      功能:显示目录命令 格式:dir[盘符][路径][/W][/P][/L][/O:排序][/A:属性][/S] 参数介绍: /W -- 以宽行排列方式显示. /P -- 每显示满一屏停顿一下,待用户 ...

  10. Nginx 指令目录(中文版)

    指令大全 accept_mutex accept_mutex_delay access_log add_after_body add_before_body add_header addition_t ...