那么,我一直是Ddos攻击的受害者,我真的不知道如何避免它。 在一些机器上它可以工作,而在某些机器上它不会或者可能我以某种方式做错了,
攻击者使用多个IP攻击我的游戏服务器端口,使得我的游戏服务器输出每个IP地址1mb / s,这些都是UDPreflection式攻击。 这是我如何保护他们,
iptables -A INPUT -p udp -m state --state NEW -m recent --set --name DDOS --rsource iptables -A INPUT -p udp -m state --state NEW -m recent --update --seconds 1 --hitcount 5 --name DDOS --rsource -j DROP
从技术上讲,这将阻止每个UDP端口上的攻击者。 当我看到攻击者IP的输出变为0时,我检查攻击者是否使用“iftop”或“tcpdump”阻止,这证实了我的防护function正在运行。
在运行iptables 1.4.7的CentOS 6机器上,我使用了类似的方法来阻止它,它的确有点奇怪,有时候会起作用,接下来的一个小时也不会。 经过大量的尝试,我重新启动了我的系统和iptables,保护工作正常,攻击者被阻止。 我今天login了我的系统,他再次攻击我,虽然我重新启动了iptables,但他没有被阻止。 我不想重新启动我的系统一次又一次,使其工作,所以可能是什么问题?
另外,有些人说UDP是无状态的,但是无论技术上是什么 – 我总是使用这个命令,它为我工作了,为什么不现在或为什么部分现在呢?
UDP确实是无状态的,尽pipeiptables 似乎有一些特殊的处理。
所以,看看你的规则,看起来你试图阻止任何一个IP给你一秒钟发送5个数据包。 问题#1这是你的合法客户将这样做,所以你最终也会阻止他们。
这里更好的解决方法是限制服务器看到的“getstatus”数据包的数量。 DDoSreflection攻击依赖于此,基于数据包内容的匹配非常简单。 这还有一个好处,就是不会影响你的合法客户(谁只应该发送一些'getstatus'请求)。