Заметил что в последнее время яндексбот слегка охренел — каждый день в агрессивном режиме каждые несколько секунд переиндексирует тысячи ресурсов на сайте (в основном картинок в галерее), тем самым создавая 100500 параллельных соединений, ощутимую нагрузку и постоянно засирая собой логи, чего вменяемые боты себе не позволяют. Немного погуглив в этих ваших забугорных буржуйнетах, нашёл кучу тем с описанием такой же проблемы с яндексботом, общим решением которой был бан яндексбота по IP или указание в robots.txt

User-agent: YandexBot
Disallow: /

Хотя в силу географических обстоятельств яндекс как поисковик меня особо не волнует, это решение показалось мне немного радикальным, поэтому я выставил

User-agent: YandexBot
Crawl-delay: 86400

Тем не менее, увидев что через несколько дней ситуация не изменилась, я начал копать глубже. Прочитав на их сайте мол

Примечание. В директиве для Яндекса максимально допустимым значением является 2.0


а также обсуждение и ответы представителей яндекса при введении этой „фичи”, я немного ошалел, после чего принял решение научить навязчивого бота хорошим манерам, а именно в добровольно-принудительном порядке слушать то что говорю ему я, а не какие-то левые дядьки.

Итак, регулярка для фильтра fail2ban (/etc/fail2ban/filter.d/dos-ya.conf):

[Definition]
failregex = ^<HOST> -.* "Mozilla\/5\.0 \(compatible; YandexBot\/[\d\.]+; \+http:\/\/yandex\.com\/bots\)"$

И само правило (/etc/fail2ban/jail.local):

[dos-ya]
enabled = true
port = 80,443
filter = dos-ya
logpath = /var/log/apache2/access.log
maxretry = 1
findtime = 86400
bantime = 86400

Конечно, теперь это УГ при сканировании меняет IP, однако это длится недолго и создаёт уже не настолько большую нагрузку и срач в логах как раньше.

Дискасс.








 , , , ,






URL записи