您需要做的主要有 2 件事:
1. 服务器级别- 您必须从一开始就阻止垃圾邮件请求。
我认为最好准备动态过滤器来阻止来自执行垃圾邮件流量的特定 IP 的请求。
我为此目的使用了fail2ban,但没有任何规则可以帮助你做到这一点。首先,您需要创建一个新的监狱过滤器(我正在使用 Plesk,所以这里是如何在 Plesk 中执行此操作https://docs.plesk.com/en-US/onyx/administrator-guide/server-administration/protection-against -brute-force-attacks-fail2ban/fail2ban-jails-management.73382/)。对于那些不使用 Plesk 并使用 ssh 的用户,您可以在这里查看https://www.fail2ban.org/wiki/index.php/MANUAL_0_8
监狱的定义是这样的:
[Definition]
failregex =
ignoreregex =
一定要包括ignoreregex否则它不会保存。
之后,在访问日志中查找您在 Google Analytics 中找到的域。你会发现很多类似上面的请求。
确定域后,您需要添加如下规则:
failregex = <HOST>.+bidvertiser\.com
<HOST>.+easyhits4u\.com
- HOST - 是fail2ban 使用日志中的ip 的关键字。
- 请注意“.+” - 这将使 fail2ban 忽略所有文本,直到他们在该行中找到您要查找的域
- bidvertiser.com - 导致“。”问题的域 被“\”转义。
- 新行(新域)应该在规则之前有一个 TAB 字符,否则它不会保存
我的规则如下所示:
[Definition]
failregex = <HOST>.+bidvertiser\.com
<HOST>.+easyhits4u\.com
<HOST>.+sitexplosion\.com
<HOST>.+ptp4all\.com
<HOST>.+trafficswirl\.com
<HOST>.+bdv_rd\.dbm
ignoreregex =
你可以看到bdv_rd\.dbm
. 那不是域,而是他们用来产生垃圾邮件的脚本。因此,他们可以很容易地更改域并使用相同的脚本。这增加了额外的过滤层。我补充说,因为 fail2ban 将搜索与模式匹配的任何字符串。
注意 1:请确保不要干扰您自己的网站 URL,因为这会阻止合法用户,而您不希望这样。
注意2:您可以像这样在ssh中测试您的正则表达式
:# fail2ban-regex path/to/log/access_log "<HOST>.+bidvertiser\.com"
这应该产生以下输出:
Running tests
=============
Use failregex line : <HOST>.+bidvertiser\.com
Use log file : access_log
Use encoding : UTF-8
Results
=======
Failregex: 925 total
|- #) [# of hits] regular expression
| 1) [925] <HOST>.+bidvertiser\.com
`-
Ignoreregex: 0 total
Date template hits:
|- [# of hits] date format
| [4326] Day(?P<_sep>[-/])MON(?P=_sep)Year[ :]?24hour:Minute:Second(?:\.Microseconds)?(?: Zone offset)?
`-
Lines: 4326 lines, 0 ignored, 925 matched, 3401 missed
[processed in 3.14 sec]
Missed line(s): too many to print. Use --print-all-missed to print all 3401 lines
现在这意味着您的过滤器找到了与该域匹配的 925 个请求(如果您问我,很多请求),这些请求将转化为来自您的 Google Analytics(分析)中的推荐 bidvertiser.com 的 925 个命中。
您可以验证这一点,下载日志并使用 Notepad++ 之类的工具进行搜索。
现在你的定义已经准备好了,你应该添加一个 jail 和一个规则。
我使用上面的定义来阻止该 IP 的所有端口 24 小时。
在我在短短几个小时内安装了这个之后,我有近 850 个被阻止的 IP。有些在亚马逊 AWS 网络中,所以我在这里提出了滥用投诉https://aws.amazon.com/forms/report-abuse。
您可以使用此服务https://ipinfo.io/来查找该 ip 的所有者。
2.谷歌分析级别
在这里你有一些我不会在这里描述的选项,因为它不是这个地方,并且有关于这个主题的写得很好的资源:
https://moz.com/blog/how-to-stop-spam-bots-from-ruining-your-analytics-referral-data
https://www.optimizesmart.com/geek-guide-removing-referrer-spam -谷歌分析/
几点注意事项:
这些家伙在某些地方使用.htaccess阻塞。这也是我在这里没有使用的一个选项,因为在我的过滤器中我还使用脚本名称而不仅仅是域。
Fail2Ban将使用iptables来阻止来自这些 IP 的任何其他请求,而不仅仅是 http/https 端口。
第一个请求将始终通过并在 Analytics 中创建 1 个命中,然后取决于脚本是否仍访问您的网站,当禁令到期时,另一个命中
您可以使用recidive过滤器永久禁止这些 IP https://wiki.meurisse.org/wiki/Fail2Ban#Recidive
Analytics 过滤器不会过滤掉历史数据。