本標準是信息系統安全技術標準的一部分,主要目的是根據信息安全管理政策要求,爲我司"Nginx web server"配置提供安全標準。php
本規範適用於我司全部Nginx web server。html
使用較新的穩定版本java
使用非root賬號啓動nginx
user www wwww; 或者 user nginx nginx;
記錄access logweb
若是nginx啓用了php fastcgi功能,必須添加以下配置,以預防文件名解析漏洞:正則表達式
server { .... if ( $fastcgi_script_name ~ \..*\/.*php ) { return 403; } .... }
上述配置將攔截相似這樣的請求:安全
/1.jpg/x.php /my.dir/x.php
nginx啓動賬號應對web目錄下全部文件及子目錄無寫權限,若是web應用需寫日誌文件,不該該放在web目錄下。spa
假設web目錄是/var/www/html,正確的權限設置應該是:日誌
chown -R root:root /var/www/html && chmod -R 0755 /var/www/htmlcode
即屬主是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;選項,請移除禁用該功能。