Ddos

iptables ratelimit UDP DOS攻擊

  • February 18, 2015

好吧,我一直是 Ddos 攻擊的受害者,我真的不知道如何避免它。在某些機器上它可以工作,而在某些機器上卻不行,或者我可能以某種方式做錯了,

攻擊者使用多個 IP 攻擊我的遊戲伺服器埠,使我的遊戲伺服器向每個 IP 地址輸出 1mb/s,從技術上講,這些是 UDP 反射攻擊。這是我保護他們的方式,

   iptables -A INPUT -p udp -m state --state NEW -m recent --set --name DDOS --rsource 

   iptables -A INPUT -p udp -m state --state NEW -m recent --update --seconds 1 --hitcount 5 --name DDOS --rsource -j DROP

從技術上講,這將阻止 UDP 埠上的每個攻擊者。當我看到攻擊者 IP 的輸出變為 0 時,我使用“iftop”或“tcpdump”檢查攻擊者是否被阻止,這證實了我的保護工作正常。

在我執行 iptables 1.4.7 的 CentOS 6 機器上,我正在使用類似的方法來阻止它,這真的很奇怪,它有時會起作用,而下一小時它卻不起作用。經過多次嘗試,我重新啟動了系統和 iptables,保護工作正常,攻擊者被阻止。我今天登錄我的系統,他再次攻擊我,雖然我重新啟動了 iptables,但他沒有被阻止。我不想一次又一次地重新啟動我的系統以使其正常工作,那麼可能是什麼問題?

此外,有些人說 UDP 是無狀態的,但無論從技術上講是什麼——我一直使用這個命令,而且它以前對我有用,為什麼現在不行或為什麼現在部分工作?

UDP 確實是無狀態的,儘管 iptables似乎對其進行了一些特殊處理。

因此,查看您的規則,您似乎正試圖阻止任何在一秒鐘內向您發送超過 5 個數據包的 IP。問題 #1 是您的合法客戶會這樣做,因此您最終也會阻止他們。

這裡更好的解決方法是限制伺服器看到的“getstatus”數據包的數量。DDoS 反射攻擊依賴於此,基於數據包內容的匹配非常簡單。這還有一個好處是不會影響您的合法客戶(他們應該只發送一些“getstatus”請求)。

引用自:https://serverfault.com/questions/364869