Looyao's Blog

记录一些点滴

NGINX+PHP-FPM配置安全

| Comments

记录一下NGINX+PHP-FPM的安全配置问题

1、屏蔽NGINX版本显示,预防如果恰巧使用的NGINX版本爆出漏洞,很容易被攻击者扫描到进行针对攻击。

配置:在http配置内加入

1
server_tokens    off;

2、屏蔽.svn、.git等目录,如果线上代码中包含了这些目录且没有被屏蔽,很容易被别人利用,因为这里边包含了代码信息,可以还原代码文件,简单分析可能就知道哪里有可利用漏洞,进行攻击。乌云中也经常发布通过此方式攻击的漏洞。所以线上NGINX配置要过滤这些目录。

配置:在server配置内加入

1
2
3
4
5
6
7
8
location ~ /\.(svn|git) {
    return 404;
}

#如果没有特殊需求,也可以屏蔽所有隐藏文件或目录,这样.svn、.git、.htacsess等都会被过滤
location ~ /\. {
    return 404;
}

3、NGINX PHP-FPM配置中加入try_files处理404,如果没有特殊配置,如果访问一个不存在的php文件,会出现no input file specified,我们希望返回的是404状态提示。

配置:

1
2
3
4
5
6
location ~ \.php$ {
    try_files    $uri = 404;

    fastcgi_pass   127.0.0.1:9000;
    ...
}

这样也能防止几年前曝的漏洞,详见:http://www.80sec.com/nginx-securit.htmlhttp://www.laruence.com/2010/05/20/1495.html

4、禁止受保护的目录被外部访问,如PHP YII框架的protected目录

配置:

1
2
3
location ^~ /protected {
    return 404;
}

5、屏蔽HTTP响应头部的X-Powered-By,默认会显示PHP版本,防止漏洞扫描工具扫到有漏洞版本进行攻击

修改php.ini:

1
expose_php = Off

未完待续。

Comments