这是一个交易:我有一个持久的中国僵尸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数量级。
所以,有些问题:
不幸的是,我不想阻止所有的中国,因为我知道我们有用户在那里…
你要求可能的改进,而我首先要做的是加快反馈循环。 在我的经验中,如果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地址列表。