插件窝 干货文章 Linux云服务器怎么使用iptables阻止短时间内大量并发连接

Linux云服务器怎么使用iptables阻止短时间内大量并发连接

iptables connlimit 连接 限制 161    来源:    2025-04-25

使用iptables阻止短时间内大量并发连接

在Linux云服务器上,可以使用iptables来防止短时间内的大量并发连接攻击(如DDoS或暴力破解)。以下是几种有效的方法:

方法1:使用connlimit模块限制单个IP的连接数

# 限制单个IP对SSH(22端口)的最大连接数为5
iptables -A INPUT -p tcp --dport 22 -m connlimit --connlimit-above 5 -j DROP

# 限制单个IP对HTTP(80端口)的最大连接数为50
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP

方法2:使用recent模块限制连接频率

# 对SSH端口(22)进行限制,每分钟最多允许5个新连接
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 5 --name SSH -j DROP

方法3:综合使用connlimit和recent模块

# 限制HTTP服务(80端口)的连接频率和并发数
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --set --name HTTP
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 100 --name HTTP -j DROP

方法4:使用hashlimit模块(更精确的限速)

# 限制每个IP对80端口的连接速率为每分钟100个新连接
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m hashlimit --hashlimit-name http --hashlimit-mode srcip --hashlimit-above 100/minute -j DROP

保存iptables规则

# 对于CentOS/RHEL
service iptables save

# 对于Ubuntu/Debian
iptables-save > /etc/iptables.rules

额外建议

  1. 针对特定服务调整参数:不同服务需要不同的限制阈值,例如SSH可以设置较严格的限制,而Web服务可以宽松一些。

  2. 白名单设置:为可信IP设置白名单,避免被规则误伤:

    iptables -A INPUT -s 192.168.1.100 -j ACCEPT
    
  3. 日志记录:可以添加日志规则记录被阻止的连接:

    iptables -A INPUT -p tcp --dport 22 -m connlimit --connlimit-above 5 -j LOG --log-prefix "SSH CONNECTION LIMIT EXCEEDED: "
    
  4. 结合fail2ban:考虑使用fail2ban工具,它可以根据日志动态调整iptables规则。

请根据您的实际服务器负载和业务需求调整上述参数,过于严格的限制可能会影响正常用户访问。