您的位置:首页 > 运维架构 > Nginx

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

2016-11-22 00:00 471 查看
Title:Linux-nginx安全配置

nginx 测试版本:nginx 1.x

0x00 Nginx简介

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

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

0x01 Nginx 漏洞

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 $bi
3ff0
nary_remote_addr 5m;
limit_conn slimits 5;

【防火墙进行设置】

8. 日志

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

9. nginx权限设置

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

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

10.配置nginx.conf禁止访问的文件夹,比如后台;配置nginx.conf禁止访问的文件类型,比如一些txt日志文件等;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息