我在Ubuntu服务器上使用iptables。这是VPS上的Web服务器。
我想知道是否应该对数据包进行速率限制。如果是这样,我应该如何限制速率?我应该在全球范围内还是按IP地址这样做?
参考
我看到有人建议这样做:
# Limit packet traffic on a TCP or UDP port:
iptables -A INPUT -p $proto --destination-port $port --syn -m state --state NEW -m limit --limit $lim/s --limit-burst $lb -j ACCEPT
# Limit established/related packet traffic:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -m limit --limit $lim/s --limit-burst $lb -j ACCEPT
上面的全局速率限制似乎并不是很有用,至少对于我可以想象的情况而言。在任何情况下,我都应该在全球进行限速吗?
我认为通常每个IP的速率限制会更好:
# Add the IP to the list:
iptables -A INPUT -p $proto --destination-port $port --syn -m state --state NEW -m recent --set --name RATELIMITED
# Drop if exceeded limit:
iptables -A INPUT -p $proto --destination-port $port --syn -m state --state NEW -m recent --update --seconds $sec --hitcount $hc --rttl --name RATELIMITED -j DROP
# Accept if inside limit:
iptables -A INPUT -p $proto --destination-port $port --syn -m state --state NEW -j ACCEPT
附加问题:可能欺骗了远程IP。如何适当地限制它们?
为此添加了另一个问题:https :
//serverfault.com/questions/340258/how-to-rate-limit-spoofed-ips-with-iptables
我正在尝试减轻某些D / DoS攻击和普遍滥用风险的目标。
PS:我刚刚为ICMP打开了一个相关的问题,它包括此协议的速率限制:iptables | ICMP的类型:哪些有害(潜在)?