标签:
本标准是信息系统安全技术标准的一部分,主要目的是根据信息安全管理政策要求,为我司"Nginx web server"配置提供安全标准。
本规范适用于我司所有Nginx web server。
使用较新的稳定版本
使用非root帐号启动
user www wwww; 或者 user nginx nginx;
记录access log
如果nginx启用了php fastcgi功能,必须添加如下配置,以预防文件名解析漏洞:
server { .... if ( $fastcgi_script_name ~ \..*\/.*php ) { return 403; } .... }
上述配置将拦截类似这样的请求:
/1.jpg/x.php /my.dir/x.php
nginx启动帐号应对web目录下所有文件及子目录无写权限,如果web应用需写日志文件,不应该放在web目录下。
假设web目录是/var/www/html,正确的权限设置应该是:
chown -R root:root /var/www/html && chmod -R 0755 /var/www/html
即属主是root,权限是0755,子目录权限跟父目录完全一样。
如果web应用确实需要支持文件上传功能,或因其它原因需要对WEB目录可写,应在nginx里面限制可写目录无脚本执行权限。假设可写目录为"/upload",配置示例如下:
server { .... location ~ ^/upload/.*\.php { return 403; } .... location ~ \.php$ { fastcgi_pass *; } }
注意1:"location ~ ^/upload/.*\.php"必须写在前面!对于location的正则表达式,nginx是按照先后顺序来匹配的,具体可参见http://wiki.nginx.org/HttpCoreModule#location
注意2:假设web服务启动帐号为nobody,可写目录是/var/www/html/upload,正确的权限设置应该是:
chown -R nobody:nobody /var/www/html/upload && chmod -R 0755 /var/www/html/upload
即可写目录的属主应该为web启动帐号,权限应该为0755,子目录的权限应该跟父目录完全一致。
Nginx默认是不允许列出整个目录的,如果在nginx.conf文件,在location server 或 http段中手工设定了autoindex on;选项,请移除禁用该功能。
标签:
原文地址:http://my.oschina.net/u/1455908/blog/397402