Nginx安全配置标准(for web server)
一、目的
本标准是信息系统安全技术标准的一部分,主要目的是根据信息安全管理政策要求,为我司"Nginx web server"配置提供安全标准。
二、范围
本规范适用于我司所有Nginx web server。
三、内容
3.1 版本
使用较新的稳定版本
3.2 启动帐号
使用非root帐号启动
user www wwww; 或者 user nginx nginx;
3.3 日志记录
记录access log
3.4 预防php fastcgi文件名解析漏洞
如果nginx启用了php fastcgi功能,必须添加如下配置,以预防文件名解析漏洞:
server { .... if ( $fastcgi_script_name ~ \..*\/.*php ) { return 403; } .... }
上述配置将拦截类似这样的请求:
/1.jpg/x.php /my.dir/x.php
3.5 web目录权限设置
nginx启动帐号应对web目录下所有文件及子目录无写权限,如果web应用需写日志文件,不应该放在web目录下。
假设web目录是/var/www/html,正确的权限设置应该是:
chown -R root:root /var/www/html && chmod -R 0755 /var/www/html
即属主是root,权限是0755,子目录权限跟父目录完全一样。
3.6 可写目录禁止执行
如果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,子目录的权限应该跟父目录完全一致。
注意3:这里指的不是去除文件系统rwx权限中的x,文件系统权限中的x可以保留,无危害。
3.7 禁止列目录
Nginx默认是不允许列出整个目录的,如果在nginx.conf文件,在location server 或 http段中手工设定了autoindex on;选项,请移除禁用该功能。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。