web應用安全基線-nginx安全配置

Title:Linux-nginx安全配置php

nginx 測試版本:nginx 1.xhtml

0x00 Nginx簡介

        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配置。

0x02. nginx 安全加固方案

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

相關文章
相關標籤/搜索