在Ubuntu系統中,使用iptables限制連接速率可以通過iptables的limit模塊來實現。以下是一些示例命令,展示了如何使用iptables來限制連接速率:
假設你想限制每個IP地址每秒只能建立5個新的TCP連接,可以使用以下命令:
sudo iptables -A INPUT -p tcp --syn -m limit --limit 5/s -j ACCEPT
sudo iptables -A INPUT -p tcp --syn -j DROP
解釋:
-A INPUT:將規則添加到INPUT鏈。-p tcp:指定協議為TCP。--syn:只匹配SYN包(TCP三次握手的第一個包)。-m limit --limit 5/s:使用limit模塊限制速率為每秒5個連接。-j ACCEPT:如果匹配規則,則接受連接。-j DROP:如果不匹配規則(即超過速率限制),則丟棄連接。如果你想限制每個IP地址每分鐘只能建立300個新的TCP連接,可以使用以下命令:
sudo iptables -A INPUT -p tcp --syn -m limit --limit 300/m -j ACCEPT
sudo iptables -A INPUT -p tcp --syn -j DROP
解釋:
-m limit --limit 300/m:使用limit模塊限制速率為每分鐘300個連接。如果你想限制每個IP地址的總連接數為1000個,可以使用以下命令:
sudo iptables -A INPUT -p tcp -m connlimit --connlimit-above 1000 -j DROP
解釋:
-m connlimit --connlimit-above 1000:使用connlimit模塊限制總連接數超過1000個的連接。在Ubuntu系統中,iptables規則默認不會保存,重啟后會丟失。你可以使用iptables-persistent工具來保存規則:
sudo apt-get update
sudo apt-get install iptables-persistent
在安裝過程中,系統會提示你是否保存當前的iptables規則,選擇“是”即可。
你可以使用以下命令查看當前的iptables規則:
sudo iptables -L -v -n
解釋:
-L:列出所有規則。-v:顯示詳細信息。-n:以數字形式顯示地址和端口。通過這些命令,你可以有效地使用iptables來限制連接速率,保護你的服務器免受惡意攻擊。