Как я могу остановить атаку ботов на моем сайте?


14

У меня есть сайт (созданный с помощью WordPress), который в настоящее время подвергается атаке ботов (насколько я могу судить). Файл запрашивается снова и снова, а реферер - (почти каждый раз) turkyoutube.org/player/player.swf. Запрашиваемый файл находится глубоко в файлах моей темы, за ним всегда следуют " ?v=" и длинная строка (т.е. r.php?v=Wby02FlVyms&title=izlesen.tk_Wby02FlVyms&toke).

Я попытался установить правило .htaccess для этого реферера, что, кажется, работает, за исключением того, что теперь моя страница 404 загружается снова и снова, которая по-прежнему использует большую пропускную способность. Есть ли способ создать правило .htaccess, которое не требует использования полосы пропускания с моей стороны?

Я также попытался создать файл robots.txt, но атака, похоже, игнорирует это.

#This is the relevant part of the .htaccess file:
RewriteCond %{HTTP_REFERER} turkyoutube\.org [NC]
RewriteRule .* - [F]

2
Атака идет с одного и того же IP каждый раз?
Бен Хоффман

Ваше .htaccessправило намеренно вызывает файл 404? Похоже, что выдача простой ошибки «отказано в разрешении» приведет к меньшему использованию полосы пропускания.
artlung

Это соответствующая часть файла .htaccess: RewriteCond% {HTTP_REFERER} turkyoutube \ .org [NC] RewriteRule. * - [F]
Трэвис Норткатт,

Однако, хотя мои журналы доступа показывают «Http Code: 404», похоже, что мое использование полосы пропускания прекратилось, когда я сделал это .htaccess изменение.
Трэвис Норткатт

У вас есть .htaccessкод, который вы разместили до или после основных .htaccessправил WordPress ?
artlung

Ответы:


8

Как насчет небольшого маневра с корбомитом ?

RewriteEngine on
RewriteCond %{HTTP_REFERER} ^http(s)?://(www\.)?turkyoutube.org.*$ [NC]
RewriteRule ^(.*)$ http://127.0.0.1/$1 [R=401,L]

Обратите внимание, не проверено, но следует перенаправить запросы от них обратно к себе с 401 Not Authorizedкодом состояния. То есть, если бот даже обрабатывает перенаправления (очень маловероятно), но он все равно увидит код состояния. Код состояния 404 может быть более эффективным. Либо нужно сказать боту, что он, вероятно, должен сдаться.

Правило, которое вы разместили в комментариях, также более чем адекватно, если вы расширите выражение, чтобы оно немного больше соответствовало хосту. Я использую что-то близкое (насколько это возможно) для блокировки соответствия пользовательских агентов libwww-perl:

RewriteCond %{HTTP_USER_AGENT} libwww-perl.*
RewriteRule .* - [F,L]

Считаете ли вы, что многие боты имеют HTTP_USER_AGENT = libwww-perl? Это похоже на то, о чем большинство ботов будут лгать.
Лиам

@Liam - удивительно, приличный процент из них никогда не пытается маскироваться под настоящий браузер (хотя, конечно, больше делают, чем нет). Я тоже подумал, что это странно :)
Тим Пост

Обратите внимание, что здесь вы используете очень медленное регулярное выражение. .*$Эквивалентно ничего, что намного быстрее. Кроме того RewriteRule .* - [F,L], нет необходимости, *поскольку вы все равно игнорируете запись.
Алексис Уилке

2

Помимо блокировки IP, я бы внимательно изучил запрашиваемые файлы. Для систем с открытым исходным кодом, таких как WordPress и Joomla, довольно распространено, что является одной из причин их частого обновления. Если вы пропустили несколько обновлений, возможно, кто-то проник на ваш сайт.

У меня такой сценарий случался со мной дважды, один раз на тестовом сайте, который никогда не был полностью развернут (но оставлен на месте), и в другой раз на веб-сайте компании, где сотрудник с действительным доступом «подкрался» к phpBB для своей семьи. общаться - обновления предотвратили бы проблемы. В обоих случаях проблема была обнаружена с аналитикой, поскольку в вашем случае это может показаться верным. Атака Joomla внедрила javascript, который заставил браузер пользователя загружать программное обеспечение, в то время как последний позволял хакеру загружать на сервер файлы, которые были частью распределенного «альтернативного» сайта Google, который каждый раз приводил пользователя к p * rn. Хотя это не совсем обычный хак, на всякий случай проверьте таблицу пользователей БД.

Я, конечно, не хочу вызывать тревогу, но никогда не повредит потратить время на то, чтобы порой просматривать ваш сайт, чтобы точно знать, что происходит. Иногда вы будете удивлены тем, что вы найдете.


Я думаю, что это именно то, что происходит, на самом деле. Похоже, запрашиваемый файл даже не должен быть там. К счастью, со мной связался дружелюбный основной редактор WordPress, так что я чувствую, что мы выясним это.
Трэвис Норткатт

1

Если атака осуществляется с одного и того же IP-номера каждый раз (или небольшого набора IP-номеров), вам следует заблокировать этот IP-адрес в брандмауэре. Это не должно стоить полосы пропускания или нагрузки на ваш веб-сервер.

Если вы размещаете его на компьютере с Linux, у вас есть root-доступ к этой статье, объясняется, как это сделать.


Он не приходит с одного и того же IP каждый раз.
Трэвис Норткатт

0

Я использую DenyHosts [1] на всех своих серверах. DenyHosts запрещает все IP-адреса, которые не смогли войти в систему после n раз. Вы также можете отправлять уведомления. Итак, у вас есть отличный обзор, с которого ips / hosts пришли логины; и он также имеет функцию веб-обновления и другие замечательные функции. Но это все еще очень просто установить.

Другой метод - запретить все диапазоны / блоки IP (например, из Китая) или других стран, которые не являются вашей целевой группой. Это можно сделать с помощью онлайн-«черных списков» или просто с помощью файла hosts.deny (например, DenyHosts).

[1] http://denyhosts.sourceforge.net/


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.