Title:Linux-nginx安全配置php
nginx 测试版本:nginx 1.xhtml
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配置。
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日志文件等;