Linux

Linux核心中的TCP SYN Flooding檢測方法

  • June 23, 2011

當 Linux 核心檢測到 SYN Flooding 時,它會記錄如下消息:

possible SYN flooding on port 80. Sending cookies

有誰知道核心用來檢測這個的確切方法?

如果我正確讀取了 sysctl/tcp 內容,那麼當未確認的 syn 請求的數量超過 net.ipv4.tcp_max_syn_backlog 的值時,它就會被觸發。具體來說:

tcp_max_syn_backlog 變數告訴你的盒子有多少 SYN 請求要保存在記憶體中,我們還沒有從 3 次握手中獲得第三個數據包。tcp_max_syn_backlog 變數被 tcp_syncookies 變數覆蓋,需要打開該變數才能使該變數生效。如果伺服器在高峰時間遭受過載,您可能需要稍微增加此值。

我認為這很簡單的原因是來自 tcp_syncookies 的文本:

當特定套接字的核心 syn backlog 隊列溢出時,tcp_syncookies 變數用於向主機發送所謂的 syncookies。這意味著如果我們的主機被來自不同主機的多個 SYN 數據包淹沒,則 syn backlog 隊列可能會溢出,因此該函式開始發送 cookie 以查看 SYN 數據包是否真的合法。

對我來說,這聽起來就像是具有 > tcp_max_syn_backlog 未完成連接的同步隊列一樣簡單。

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