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日誌文件等;