nginx防禦DDOS攻擊

2021-09-12 21:48:05 字數 2991 閱讀 9866

**

防禦ddos是乙個系統工程,攻擊花樣多,防禦的成本高瓶頸多,防禦起來即被動又無奈。ddos的特點是分布式,針對頻寬和服務攻擊,也就 是四層流量攻擊和七層應用攻擊,相應的防禦瓶頸四層在頻寬,七層的多在架構的吞吐量。對於七層的應用攻擊,我們還是可以做一些配置來防禦的,例如前端是 nginx,主要使用nginx的http_limit_conn和http_limit_req模組來防禦。 ngx_http_limit_conn_module 可以限制單個ip的連線數,ngx_http_limit_req_module 可以限制單個ip每秒請求數,通過限制連線數和請求數能相對有效的防禦cc攻擊。下面是配置方法:

ngx_http_limit_req_module模組通過漏桶原理來限制單位時間內的請求數,一旦單位時間內請求數超過限制,就會返回503錯誤。配置需要在兩個地方設定:

例如:http {

limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; //觸發條件,所有訪問ip 限制每秒10個請求

server {

location  ~ \.php$ {

limit_req zone=one burst=5 nodelay;   //執行的動作,通過zone名字對應

引數說明:

$binary_remote_addr  二進位制遠端位址

zone=one:10m    定義zone名字叫one,並為這個zone分配10m記憶體,用來儲存會話(二進位制遠端位址),1m記憶體可以儲存16000會話

rate=10r/s;     限制頻率為每秒10個請求

burst=5         允許超過頻率限制的請求數不多於5個,假設1、2、3、4秒請求為每秒9個,那麼第5秒內請求15個是允許的,反之,如果第一秒內請求15個,會將5個請求放到第二秒,第二秒內超過10的請求直接503,類似多秒內平均速率限制。

nodelay         超過的請求不被延遲處理,設定後15個請求在1秒內處理。

ngx_http_limit_conn_module的配置方法和引數與http_limit_req模組很像,引數少,要簡單很多

limit_conn_zone $binary_remote_addr zone=addr:10m; //觸發條件

server {

location /download/ {

limit_conn addr 1;    // 限制同一時間內1個連線,超出的連線返回503

http_limit_conn和http_limit_req模組限制了單ip單位時間內的併發和請求數,但是如果nginx前面有lvs或者 haproxy之類的負載均衡或者反向**,nginx獲取的都是來自負載均衡的連線或請求,這時不應該限制負載均衡的連線和請求,就需要geo和map 模組設定白名單:

geo $whiteiplist  {

default 1;

10.11.15.161 0;

map $whiteiplist  $limit {

1 $binary_remote_addr;

0 "";

limit_req_zone $limit zone=one:10m rate=10r/s;

limit_conn_zone $limit zone=addr:10m;

geo模組定義了乙個預設值是1的變數whiteiplist,當在ip在白名單中,變數whiteiplist的值為0,反之為1

如果在白名單中--> whiteiplist=0 --> $limit="" --> 不會儲存到10m的會話狀態(one或者addr)中 --> 不受限制

反之,不在白名單中 --> whiteiplist=1 --> $limit=二進位制遠端位址 -->儲存進10m的會話狀態中 --> 受到限制

使用ab命令來模擬cc攻擊,http_limit_conn和http_limit_req模組要分開測試,同時注意 http_limit_conn模組只統計正在被處理的請求(這些請求的頭資訊已被完全讀入)所在的連線。如果請求已經處理完,連線沒有被關閉時,是不會 被統計的。這時用netstat看到連線數可以超過限定的數量,不會被阻止。

ab -n 請求數 -c 併發

如果被阻止前台會返回503,同時在nginx的error_log中會看到如下錯誤日誌:

被限制連線數:

被限制請求數:

1.nginx模組 modsecurity、http_guard、ngx_lua_waf

2.軟體+iptables

開頭說過抗ddos是乙個系統工程,通過優化系統和軟體配置,只能防禦小規模的cc攻擊,對於大規模攻擊、四層流量攻擊、混合攻擊來說,基本上系統和應用軟體沒掛,頻寬就打滿了。下面是我在工作中使用過的防禦ddos的方式:

高防伺服器和帶流量清洗的isp 通常是美韓的伺服器,部分isp骨幹**商有流量清洗服務,例如香港的pccw。通常可以防禦10g左右的小型攻擊

流量清洗服務 例如:akamai(prolexic),nexusguard 我們最大受到過80g流量的攻擊,成功被清洗,但是費用非常貴

總結一下:發動攻擊易,防禦難。七層好防,四層難防;小型能防,大型燒錢

防禦DDOS攻擊

伺服器防禦ddos攻擊有什麼比較好的方法,其實這種攻擊一般來說是一種兩敗俱傷的局面,想要發起這麼一場大規模的攻擊作為黑客來說要承擔非常大的損失,因為要調動這麼多的ip位址同一時間去訪問某乙個伺服器的ip位址,這本身就需要非常強大的能量才可以辦得到,所以這種攻擊一般只是針對一些有價值的目標,而那些沒有...

DDoS攻擊介紹,如何防禦DDoS攻擊

分布式拒絕服務攻擊 ddos攻擊 是一種針對目標系統的惡意網路攻擊行為,ddos攻擊經常會導致被攻擊者的業務無法正常訪問,也就是所謂的拒絕服務。常見的ddos攻擊包括以下幾類 建議阿里雲使用者從以下幾個方面著手緩解ddos攻擊的威脅 優化業務架構,利用公共雲的特性設計彈性伸縮和災備切換的系統。提供餘...

如何防禦ddos攻擊?

ddos攻擊是利用一批受控制的機器向一台機器發起攻擊,這樣來勢迅猛的攻擊令人難以防備,因此具有較大的破壞性。如果說以前網路管理員對抗dos可以採取過濾ip位址方法的話,那麼面對當前ddos眾多偽造出來的位址則顯得沒有辦法。所以說防範ddos攻擊變得更加困難,如何採取措施有效的應對呢?下面是一些對付它...