我在Ubuntu Server上使用iptables.它是VPS上的Web服务器.
我想知道我是否应该对数据包进行速率限制.如果是这样,我应该限速?我应该全球或按IP地址这样做吗?
我想知道我是否应该对数据包进行速率限制.如果是这样,我应该限速?我应该全球或按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攻击和一般滥用的风险.
有关
How can I rate limit SSH connections with iptables?
PS:我刚刚为ICMP打开了一个相关问题,它包含了该协议的速率限制:iptables | Types of ICMP: which ones are (potentially) harmful?
解决方法
速率限制不是预防,而是对DoS的邀请 – 特别是在上面介绍的风格中,如果超过了没有状态信息的特定速率的未经身份验证的数据包,将丢弃数据包.由于每个人都可以在此连接状态下伪造数据包(包括源IP地址)而不需要更多努力,因此将出现利用您的速率限制工具的新DoS攻击向量.
速率限制通常只有你有意义才有意义
>您的配置中可预测的硬连接或软连接限制
>将一般流量的速率限制设置为低于此限制,以便能够设置优先级或管理流量的连接,而不管负载如何
虽然1.通常很难确定甚至打扰,但2.显然只有在能够在连接设置时可靠地区分“优先级或管理”流量时才会起作用 – 例如如果它来自不同的网络接口.
在其他情况下,它宁愿降低系统的弹性而不是添加它.