用数千个拒绝块来testingUFW的限制

这是一个交易:我有一个持久的中国僵尸networking,它传播我的论坛(在nginx上的Ubuntu 12.04.2服务器上运行等)。 我一直在使用UFW(Ubuntu的“Uncomplicated FireWall”)来pipe理防火墙,就像不用处理iptables一样简单。

我已经确定了每次一个bot命中时都会尝试加载的非常一致且独一无二的(更不用说愚蠢的)URL,并且每隔一小时就会使用一个cron来parsing访问日志并find新的攻击者,并且ufw deny from [ip-address]就可以了。

然而,猛攻并没有停止。 真不可思议 我正在logging每个被阻止的IP地址,并且高达17,000个IP地址。 98%的知识产权来自中国,有些来自其他国家。

看起来效果很好:在实践中,所有这些攻击都被阻止,连接恢复正常,stream量呈指数级下降,有效的DDOS已经停止(如果我让这些客户端通过,那么数据的容量和速度请求是惊人的)。

UFW 似乎也没关系。 没有什么是减速,请求以相同的速度服务,延迟并没有受到我所知道的。 我试图尽可能地将各个IP地址合并到一个范围内,但是很难弄清楚所有这些IP地址,并且会阻止比实际导致问题更多的IP数量级。

所以,有些问题:

  1. 在我应该担心的时候,我可以合理地拥有多less规则(大概说iptables)?
  2. 是否有任何可能的负面影响继续这种确切的做法?
  3. 任何build议的更改或改进?
  4. 有没有人知道这个机器人? 它正在攻击bbPress。 有没有更好的方法来防止这种攻击,而不是治疗症状?

不幸的是,我不想阻止所有的中国,因为我知道我们有用户在那里…

  1. 很less几个
  2. 你会在某个时候放慢你的系统
  3. 见下文
  4. 不是我

你要求可能的改进,而我首先要做的是加快反馈循环。 在我的经验中,如果DDOS很快发现它们并没有成功,那么DDOS就会消失得更快。 所以,用404来响应这个URL的请求,并立即阻止它们(一种方法是将IP地址粘贴在豆秆pipe中,并将你的cronjob变成连续运行的事情,轮询pipe和块)。

1-2。从理论上讲,尽可能多的你实际上你首先要开始观察一些内存问题,因为所有这些规则都必须加载。 那么你会遇到麻烦,最大限度地放弃你的CPU,因为你必须检查所有这些规则,直到你find匹配的。 还取决于你正在logging什么(即你logging的一切,所有的DROP的,等等?)

3.使用IP设置,阻止整个IP块和/或与硬件防火墙结合。

4.我对bbPress不熟悉,但是可以做很多事情来缓解从高速caching到预先阻塞相关ip块到僵尸networking的攻击。

这也不会影响内存的影响(甚至会使情况变得更糟),但是可以节省CPU负担:如果您还没有这样做,那么您应该将世界其他地方列入白名单,而不是检查所有传入的连接与您的长IP地址列表。