Flooding

每分鐘 - 埠 80 上可能的 SYN 泛洪

  • August 20, 2014

在我們的 Linux 伺服器上,我們不時會收到眾所周知的 SYN 洪水消息:

possible SYN flooding on port 80

這可能不是攻擊,因為網站流量很大。

然而,從某個時候開始,這些消息開始每隔約 60 秒出現一次。我的意思是:

Aug 16 01:22:44 amadeus kernel: possible SYN flooding on port 80. Sending cookies.
Aug 16 01:23:45 amadeus kernel: possible SYN flooding on port 80. Sending cookies.
Aug 16 01:25:05 amadeus kernel: possible SYN flooding on port 80. Sending cookies.
Aug 16 01:26:06 amadeus kernel: possible SYN flooding on port 80. Sending cookies.
Aug 16 01:27:13 amadeus kernel: possible SYN flooding on port 80. Sending cookies.
Aug 16 01:28:13 amadeus kernel: possible SYN flooding on port 80. Sending cookies.
Aug 16 01:29:14 amadeus kernel: possible SYN flooding on port 80. Sending cookies.
Aug 16 01:30:39 amadeus kernel: possible SYN flooding on port 80. Sending cookies.
Aug 16 01:31:41 amadeus kernel: possible SYN flooding on port 80. Sending cookies.
Aug 16 01:32:53 amadeus kernel: possible SYN flooding on port 80. Sending cookies.
Aug 16 01:33:57 amadeus kernel: possible SYN flooding on port 80. Sending cookies.
Aug 16 01:35:03 amadeus kernel: possible SYN flooding on port 80. Sending cookies.
Aug 16 01:36:27 amadeus kernel: possible SYN flooding on port 80. Sending cookies.
Aug 16 01:37:30 amadeus kernel: possible SYN flooding on port 80. Sending cookies.
Aug 16 01:38:44 amadeus kernel: possible SYN flooding on port 80. Sending cookies.

這只是偶然嗎?由於流量,我不會擔心大量“可能的 SYN 氾濫”消息,但這些消息每 60 秒一次。

這是我們在 /etc/rc.local 中的自定義設置

# 3M
echo 3145728 > /proc/sys/net/netfilter/nf_conntrack_max

# 256k
echo 262144 > /proc/sys/net/ipv4/tcp_max_orphans

echo 1048576 1572864 4194304 > /proc/sys/net/ipv4/tcp_mem

# Neighbour Table Overflow
echo  4096 > /proc/sys/net/ipv4/neigh/default/gc_thresh1
echo  8192 > /proc/sys/net/ipv4/neigh/default/gc_thresh2
echo 16384 > /proc/sys/net/ipv4/neigh/default/gc_thresh3

echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle

# Disable ip_forward
echo "0" > /proc/sys/net/ipv4/ip_forward

# Enable SYN Cookies
echo "1" > /proc/sys/net/ipv4/tcp_syncookies

echo 40 > /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_syn_recv

(對不起,如果這個問題是重複的,但我沒有發現任何類似的問題)。

我閱讀了類似的問題和所有答案,我認為您應該嘗試@Jeff 在他的答案中建議的內容(這不是公認的答案),這會增加在埠 80 上執行的兩個應用程序的偵聽積壓。

當傳入連接的“隊列”或“積壓”被填充時,似乎會出現該消息。

例如。對於 apache2,他寫道:

為了解決這個問題,我將以下行添加到 /etc/apache2/ports.conf 或其他將由 apache 載入的 .conf 文件之一(/etc/apache2/apache2.conf 應該也可以):

ListenBackLog 5000

然後將 tcp_max_syn_backlog 提高到相同

sudo sysctl -w net.ipv4.tcp_max_syn_backlog=5000

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