我有一个网站主机,不允许编辑iptables。从那时起,我就有轻微的(大约300个请求/秒) DoS攻击(通常不是分布式的)。我决定编写一个PHP脚本来阻止那些ips。首先,我试图将最后10秒的所有请求存储在数据库中,并查找每个请求的滥用地址。但是我很快意识到,这样我必须对每个DoS请求至少执行一个数据库请求,这是不好的。然后,我对这种方法进行了如下优化:
Read 'deny.txt' with blocked ip's
If it contains request ip, then die()
--- at this point we have filtered out all known attacking ips ---
store requesting ip in database
clean all requests older than 10 secs
count requests from this ip, if it is greater than threshold, add it to 'deny.txt'这样,新的攻击ip只会向数据库发出Threshold请求,然后被阻止。
因此,问题是,这种方法是否具有最佳性能?有更好的方法来完成这个任务吗?
发布于 2011-11-05 12:39:33
如果请求可以以任何方式访问您的服务器(即使您可以编辑iptables),它仍然在消耗带宽。如果您的服务器每秒可以处理300个请求,那么就不用担心了。如果你因带宽而窒息,那么你将不得不在上游处理它。如果您无法在服务器上编辑iptable,您可能已经共享了主机,因此您的主机很可能会看到攻击,并希望在无法控制之前将其限制在上游。
https://serverfault.com/questions/328079
复制相似问题