我在 /var/log/nginx/access.log 中有以下条目:
107.155.152.109 - - [22/Mar/2018:19:20:54 +0000] "GET / HTTP/1.0" 301 193 "-" "-"
162.216.152.56 - - [22/Mar/2018:19:21:40 +0000] "GET / HTTP/1.0" 301 193 "-" "-"
60.191.48.204 - - [22/Mar/2018:19:21:52 +0000] "GET / HTTP/1.0" 200 17582 "-" "-"
我觉得它们很可疑,但我对这个地区的了解有限。发生了什么事?甚至还有几个来自 107.155.xxx.xxx 的
据报告,此网站上有 2 个地址:https://www.abuseipdb.com/check/。它们是162.216.152.56和60.191.48.204,显然是美国杰克逊维尔和中国。
我已经按照说明配置了 fail2ban这里因为我在 Digital Ocean 上使用 Ubuntu 14.04,但是 fail2ban 日志中没有任何内容。
答案1
据我所知,这些行没什么可担心的。您每分钟都会看到机器人访问您的网站并抓取目录,这并不罕见。查看“/etc/fail2ban/filter.d/botsearch-common.conf”和“/etc/fail2ban/filter.d/nginx-botsearch.conf”,了解 fail2ban 如何尝试阻止坏机器人抓取您的网站。您还可以尝试通过用户代理阻止机器人。这可能是可以使用的一种方法:https://gist.github.com/hans2103/733b8eef30e89c759335017863bd721d
但我的建议是忽略机器人,如果您的配置干净,您就不必太担心。
答案2
简单的GET
of/
每天都会发生,同时还有大量其他机器人生成的流量。如果您运行的是可以公开访问的 Web 服务器,那么浪费资源对此做任何事情几乎没有意义。它就是为此而存在的。事实上,有些响应是 ,这301
表明您正在使用虚拟主机,并且请求没有有效的Host
标头,并且您的 Nginx 设置是将它们重定向到您的默认虚拟主机。
不做任何事情的原因fail2ban
是它所看到的流量都没有被检测为恶意流量。默认情况下,它会警惕脚本扫描程序、HTTP Auth 暴力破解和其他恶意模式。
答案3
您可以简单地将此代码添加到 nginx 代码的开头(服务器标记之前)以忽略网站上最常见的机器人。
map $http_user_agent $limit_bots {
default 0;
~*(google|bing|yandex|msnbot) 1;
~*(AltaVista|Googlebot|Slurp|BlackWidow|Bot|ChinaClaw|Custo|DISCo|Download|Demon|eCatch|EirGrabber|EmailSiphon|EmailWolf|SuperHTTP|Surfbot|WebWhacker) 1;
~*(Express|WebPictures|ExtractorPro|EyeNetIE|FlashGet|GetRight|GetWeb!|Go!Zilla|Go-Ahead-Got-It|GrabNet|Grafula|HMView|Go!Zilla|Go-Ahead-Got-It) 1;
~*(rafula|HMView|HTTrack|Stripper|Sucker|Indy|InterGET|Ninja|JetCar|Spider|larbin|LeechFTP|Downloader|tool|Navroad|NearSite|NetAnts|tAkeOut|WWWOFFLE) 1;
~*(GrabNet|NetSpider|Vampire|NetZIP|Octopus|Offline|PageGrabber|Foto|pavuk|pcBrowser|RealDownload|ReGet|SiteSnagger|SmartDownload|SuperBot|WebSpider) 1;
~*(Teleport|VoidEYE|Collector|WebAuto|WebCopier|WebFetch|WebGo|WebLeacher|WebReaper|WebSauger|eXtractor|Quester|WebStripper|WebZIP|Wget|Widow|Zeus) 1;
~*(Twengabot|htmlparser|libwww|Python|perl|urllib|scan|Curl|email|PycURL|Pyth|PyQ|WebCollector|WebCopy|webcraw) 1;
}
这是你的 / 位置
location / {
...........
if ($limit_bots = 1) {
return 403;
}
}