Nginx 安全性能配置 & DDOS 防範

運維之美2019-08-18 02:27:02


最近看了一些 Nginx 的配置的文章主要和性能有關,包括一些安全上的配置,並不對所有設備適用,總結下來覺得有用的可以自取,另外是加深自己對服務器的理解。其中有一些有關 DDOS 的配置。內容參考了兩篇文章和自己的一些安全理解。文章地址如下:

  • Tuning NGINX for Performance

  • Mitigating DDoS Attacks with NGINX and NGINX Plus


Nginx 配置優化


基本配置路徑一般在 /etc/nginx/nginx.conf ,如果站點配置文件不是 nginx.conf,而是獨立的站點配置文件,那就到相應的站點去修改配置。

  • worker_processes auto 該選項控制 Nginx 運行時候的工作進程個數,默認值為 1。調節為 auto

  • worker_connections 表示工作進程能處理的最大連接數。默認為 512,可調節為更高,我自己設置為 1000。主要看服務器的硬件配置及流量特性。

  • keepalive_requests 表示客户端單個連接上最多能發送多少個請求,默認值是 100。可以設置成更高的值,試情況而定。

  • keepalive_timeout 指定每個連接最多保持多長的打開狀態,為了防止 DDOS 攻擊,可以改為 60 或者更小。視情況而定。

  • server_tokens 該選項可以隱藏 Nginx 的版本號,關閉他可以防止攻擊者嗅探到 Nginx 版本從而做相關滲透。

  • worker_rlimit_nofile 進程最大打開文件數 可以配置為一個較高的數字。避免出現『too many open files』

  • proxy_hide_essay-header X-Powered-By; 該指令可以隱藏一些 essay-header 的信息。通常 x-powered-by 會泄露網站相關信息我們需要將其隱藏。

host essay-header attack 攻擊修復

在server模塊中添加:

# Only requests to our Host are allowedif ($host !~ ^($server_name)$ ) {return 444;}


Nginx DDOS 防禦配置優化


現在的 DDOS 基於應用層的比較多,比如 CC 攻擊。通常有如下特點:

  • 攻擊的 IP 或 IP 段相對固定,每個IP都有遠大於真實用户的連接數和請求數。

  • 因為攻擊是由木馬發出且目的是使服務器超負荷,請求的頻率會遠遠超過正常人的請求。

  • User-Agent 通常是一個非標準的值

  • Referer 有時是一個容易聯想到攻擊的值

根據以上的相關特徵可以做以下配置來抵抗 DDOS 攻擊

  • 限制請求速度

limit_req_zone $binary_remote_addr zone=one:10m rate=2/s;


  • 限制連接數量

limit_conn_zone $binary_remote_addr zone=addr:10m;


  • 關閉慢連接

在 server 中添加

server {client_body_timeout 5s;client_essay-header_timeout 5s;}

  • 設置IP黑/白名單

  • 使用緩存進行流量削峯

  • 屏蔽特定請求

  1. 針對特定 URL 的請求

  2. 針對不是常見的 User-Agent 的請求

  3. 針對 Referer 頭中包含可以聯想到攻擊的值的請求

  4. 針對其他請求頭中包含可以聯想到攻擊的值的請求


比如,如果你判定攻擊是針對一個特定的 URL:/foo.php,攻擊請求的 User-Agent 中包含 foo 或 bar 我們就可以屏蔽到這個頁面的請求:

location /foo.php {deny all;}
location /{if ($http_user_agent ~* foo|bar) {return 403;}}

總結


Nginx 和 Nginx Plus 可以作為抵禦 DDOS 攻擊的一個有力手段,而且 Nginx Plus 中提供了一些附加的特性來更好的抵禦 DDOS 攻擊並且當攻擊發生時及時的識別到。

來源:Brick713的小黑屋
原文:http://t.cn/AiNKwR3F
題圖:
來自谷歌圖片搜索 
版權:
本文版權歸原作者所有
投稿:歡迎投稿,投稿郵箱: [email protected]



推薦閲讀

  • 利用 Oh-My-Zsh 打造你的超級終端

  • 漫談雲計算、虛擬化、容器化

  • 從零開始搭建創業公司後台技術棧

  • 淺談 TCP 的三次握手和四次揮手

  • 史上最全的 Linux 運維工程師面試問答錄


https://hk.wxwenku.com/d/201171383