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. 在iOS端如何使用Charles用作http调试

    转:http://blog.csdn.net/messageloop3/article/details/9966727 在iOS端如何使用Charles用作http调试 After noticing ...

  2. [Python设计模式] 第1章 计算器——简单工厂模式

    github地址:https://github.com/cheesezh/python_design_patterns 写在前面的话 """ 读书的时候上过<设计模 ...

  3. iOS AVAudioSession 配置(录音完声音变小问题)

    有这么一个场景,首先我们录音,录音完再播放发现音量变小了: 百思不得其解,查看API发现AVAudioSession里面有这么一个选项, 如果你的app涉及到了音视频通话以及播放其他语音,那么当遇到声 ...

  4. Django中使用Celery,定制应用程序中定义的shared_task未在定期任务管理页面的注册任务中显示

    解决办法: 在项目 proj/proj/celery.py文件中,看到下面这行配置: celery_app.config_from_object('django.conf:settings', nam ...

  5. web,xml中关于filter的使用

    从J2EE1.3开始,Servlet2.3规范中加入了对过滤器的支持.过滤器能够对目标资源的请求和响应进行截取.过滤器的工作方式分为四种,下面让我们分别来看看这四种过滤器的工作方式:1.request ...

  6. eclipse default handler IHandler interface “the chosen operation is not enabled”

    NOTE: These two methods: Tip: Subclass AbstractHandler rather than implementing IHandler. but you ca ...

  7. Linux下计算进程的CPU占用和内存占用的编程方法[转]

    from:https://www.cnblogs.com/cxjchen/archive/2013/03/30/2990548.html Linux下没有直接可以调用系统函数知道CPU占用和内存占用. ...

  8. Java内省详解

    内省和反射有什么区别: 反射式在运行状态把Java类中的各种成分映射成相应的Java类,可以动态的获取所有的属性以及动态调用任意一个方法,强调的是运行状态.  内省机制是通过反射来实现的,BeanIn ...

  9. 这可能由 CredSSP 加密 oracle 修正引起的。

    某天在与服务器进行远程连接时,遇到了以下错误: 发生了身份验证错误. 不支持请求的函数. 远程计算机: <主机名> 这可能由 CredSSP 加密 oracle 修正引起的. 有关更多信息 ...

  10. cmake 常用变量和常用环境变量查表手册---整理 .

    一,cmake 变量引用的方式: 前面我们已经提到了,使用${}进行变量的引用.在 IF 等语句中,是直接使用变量名而不通过${}取值 二,cmake 自定义变量的方式: 主要有隐式定义和显式定义两种 ...