web应用安全基线-nginx安全配置

Title:Linux-nginx安全配置php

nginx 测试版本:nginx 1.xhtml

0x00 Nginx简介

        Nginx是一款轻量级的web服务器/反向代理服务器及电子邮件代理服务器。其特色是占用内存少,并发能力强。nginx

        Nginx漏洞查询:http://nginx.org/en/security_advisories.html web

0x01 Nginx 漏洞shell

1. 文件类型错误解析漏洞数据库

成因:由配置致使的安全问题缓存

漏洞危害:利用该漏洞,攻击者可将任意文件类型做为PHP文件解析,一般是利用该漏洞获取webshell。安全

漏洞利用方式:假设某服务器存在该漏洞,攻击者可经过上传包含PHP网马的图片来获取网站的webshell。服务器

安全加固方案:并发

    (1)方案一:修改php.ini文件,将cgi.fix_pathinfo 的值设置为0;(该方法简单粗暴,可能会形成系统不稳定,故此方案不可取)

    (2)方案二:在nginx配置文件中添加如下代码:

        if( $fastcgi_script_name ~ \..*\/.*php){

return 403;

}

注:新的 php-fpm 已经关闭了 cgi.fix_pathinfo参数

2. Nginx配置错误致使目录遍历漏洞

成因:由配置致使的安全问题

漏洞利用方式:

错误配置:

    location  /ceshi {

            alias            html/ceshi/;

            autoindex    on; 

}

正确配置(相对):

    location /ceshi {

                alias              html/ceshi;

                autoindex      on;

}

注:nginx默认是不容许列出整个目录的,最好的方法是禁用autoindex,即autoindex off或没有autoindex配置。

0x02. nginx 安全加固方案

1. 版本选择

生产环境中,优先选择最新的稳定版本;测试环境测试经过后再进行上线;

安装过程当中,建议采用自定义安装路径,避免默认路径致使被黑客或自动化安全扫描工具猜解;

2. 修改/隐藏 Banner信息

    以源码方式安装nginx时,可经过修改 src/core/nginx.h 中的信息达到修改或隐藏Banner信息的目的。

#define NGINX_VERSION   "XXXX"

#define NGINX_VER           "XXXX"

3. 关闭服务器标记

server_tokens off

4. 禁用autoindex

autoindex off

5. 禁用非必要方法

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

6.设置自定义缓存缓解缓冲区溢出攻击(数值根据实际状况设置)

 client_header_buffer_size 32k;

 large_client_header_buffers 4 32k;

 client_max_body_size 8m; 

7. 缓解DOS攻击

【timeout设低阀值】

 keepalive_timeout 10;

 client_header_timeout 3m;

 client_body_timeout 10;

 send_timeout 10;

【限制用户链接数】

limit_zone slimits $binary_remote_addr 5m;
limit_conn slimits 5;

【防火墙进行设置】

8. 日志

修改日志默认保存路径,规范日志格式,进行日志切割。可采用elk等进行大数据日志采集,进行日志采集,一般用于业务日志分析及安全事件溯源分析。

9. nginx权限设置

尽可能以普通用户权限运行nginx服务,避免当服务被攻击沦陷后,黑客直接拿到root权限。

网站目录权限设置遵循的原则:rwx三者的权限要明确。上传目录可数据库目录通常需分配w权限,不用分配x权限;其余目录通常分配r权限便可。

10.配置nginx.conf禁止访问的文件夹,好比后台;配置nginx.conf禁止访问的文件类型,好比一些txt日志文件等;

相关文章
相关标签/搜索