我有一个要阻止的机器人列表,所以我认为fail2ban可能是一个解决方案,直到我意识到mod_security在此类任务中会更有效。
机器人数量庞大,因此配置文件将包含很长的列表。
我的问题是关于性能(内存、处理器、磁盘等):
拥有大量要阻止的机器人是否会影响 apache 在大流量站点中的性能?
答案1
性能应该不是问题;检查 ModSecurity 的 @rbl 功能与本地 DNS 缓存相结合,这将使您能够跟踪 DNS 中的违规者,并在决定允许或阻止某些连接时利用该 DNS 区域作为参考。
答案2
您可以根据用户代理字符串中存在的几个关键字过滤掉机器人,并只允许某些机器人通过,而不是管理一长串机器人。
我用它来阻止所有我不想爬行我的网站的蜘蛛/机器人。然后,我只让那些人通过,我有兴趣为网站建立索引。所有其他人都被防火墙阻止。
到目前为止,这对我来说表现得很好。
sudo nohup tail -f /var/log/apache2/access.log | awk -F' - |\"' 'tolower($7) ~ /bot|crawler|spider/ && tolower($7) !~ /google|yahoo|bing|msn|ask|aol|duckduckgo/{system(" sudo ufw deny from "$1" to any comment \""$7"\"")}' > /dev/null &