r0zh0k
@r0zh0k
Site Reliability Engineer

Как остановить нашествие спам-ботов на форум?

Есть небольшой форум на phpbb3, крутится на шаред хостинге. Недавно на форум начали активно лезть спам-боты, в результате мало того, что надо разгребать и удалять пользователей, так еще и для провайдера такая массовая регистрация выглядит как DDoS и в результате аккаунт уже один раз засуспендили. Включил самую мощную капчу которая была, поставил проверку IP на предмет содержания в блеклисте, ограничил количество попыток, но боты все равно прут.

Какой эффективный способ вы можете подсказать еще? ReCaptcha? Подтверждение регистрации по e-mail (у меня сейчас оно отключено)? Переезд на vps с последующей настройкой фаервола? Анти-DDoS сервисы?



Update 1: Включил рекапчу, но все равно пролазят.



Update 2: Полгода вроде уже прошло, полет нормальный — ни одного спам-бота!
  • Вопрос задан
  • 13254 просмотра
Решения вопроса 1
@rastych
у меня подтверждение по e-mail и все равно в один прекрасный момент повалили боты. Включил капчу в виде вопросов и ответов — стало меньше, но пролазили. Заменил вопросы и некоторые буквы в вопросах заменил на аналогичные латинские — за полгода ни одного бота.
Ответ написан
Пригласить эксперта
Ответы на вопрос 17
@Ajex
Нужна любая нестандартная самописная защита, пусть и самая банальная. Просто боты настроены стандартно, врядли кто-то их будет переписывать конкретно под ваш форум.
Можно через javascript добавить какое-то лишнее поле в POST форму регистрации и проверять его наличие в php скрипте.
Что-то типа такого. Код добавляет скрытое поле в форму регистрации (нужен jquery). Боты не будут его вставлять в форму и по такому признаку их можно отсекать.
function SubFunc() {
     $('#reg').append('<input type="hidden" value="1" name="JsPassed">');
     document.reg.submit(); 
     return false;
  }
<a href="javascript:SubFunc()" >Регистрация</a>

Как вариант можно добавить какой-то алгоритм, который на основании ип адреса, например, будет совершать какой-то крипт или просто брать хэш и потом проверку на стороне пхп, но в 99% это будет лишнее, ибо если боты залетные, они и без этого сдуются.
Ответ написан
Комментировать
Skpd
@Skpd
Скорее всего поможет подтверждение регистрации по e-mail и обновление движка до последней версии.
Ответ написан
@zapimir
Попробуйте еще поведенческий фильтр.
Ответ написан
Комментировать
Комментировать
kitaisc
@kitaisc
Вопрос в стиле — «два памножить на семъ» у любого бота вызавит самоДДоС и формат самого себя)))
Ответ написан
Комментировать
demimurych
@demimurych
Я не слышал о том что сейчас существует рабочий алгоритм обхода рекапчи,
из чего я делаю вывод, что подключенная рекапча на вашем форуме нормально не работает. Вероятно в силу какой то алгоритмической ошибки.

Поддерживаю всех вышеписавших о том, что интегрируете самую элементарную процедуру слегка модифицирующую стандартный процесс регистрации на форуме. Это не остановит человека, который целенаправленно собирается вредить именно Вам, но остановит 99% автоматов.
Ответ написан
@egorinsk
1) Как защититься от ботов. Если боты не написаны специально под ваш сайт, то просто чуть-чуть переделайте код регистрации (например, сделайте поле email приманкой или считайте код подтверждения яваскриптом или флешем) и боты отвалятся. Они же привыкли к стандартным формам.

Не хотите переписать код/нанять кого-то/лень/ищите кто за вас все сделает бесплатно? Мучайтесь дальше тогда.

Запретите или сделайте подтверждение телефона для регистраций из проблемных стран (список стран ниже), с тора и прокси.

2) Про высокую нагрузку. Не стоит использовать shared hosting вообще. Сейчас облачные сервера с минимальным конфигом очень дешевые и стояит примерно столько же, сколько ваш хостинг, но там вам никто не будет парить мозги про соотношения трафика и загрузку процессора, сколько готовы оплатить, на столько и грузите. Сайт на shared хостинге легко положить даже со школоботнета — хостеру проще отключить нагруженный сайт, чем искать причины проблем.

На своем сервере всех ботов можно легко забанить при помощи iptables и ipset. Я бы советовал не ждать, пока к вам придут боты, а превентивно забанить все IP из стран: Индонезия, Таиланд, Китай, Филиппины, Польша, Бразилия. Как показывает опыт, в этих странах люди не слышали про антивирусы, используют ИЕ (вот идиоты), а провайдеры игнорируют абузы (почтовые ящики из вхуиза не работают либо переполнены и не принимают письма). Как вы понимаете, ценные посетители на ваш сайт оттуда вряд ли придут, а вот спам, трояны, ботнеты и прочая дрянь — легко. Я бы лично эти страны вообще от интернета и цивилизованного мира отключил, достали уже.

«Анти-DDOS» сервисы нужны при атаке хотя бы от полгигабита, меньший трафик легко банится вручную на iptables. Бесплатный антиддос (и блокировку упомянутых стран), кстати предлагают сервисы вроде cloudflare. Зачем платить конские тарифы всяким вымогателям из анти-ддос сервисов, когда можно не платить?
Ответ написан
Комментировать
pentarh
@pentarh
Я правил форму регистрации на предмет Content-Type: multipart/form-data. Обычно этот тип используется только броузерами при наличии полей аплоада. В ботах с мультипартом вообще никто никогда не парится.

На стороне сервера просто проверял Content-Type. Если не мультипарт — прочь демон, прочь.

99.9% отбивало.
Ответ написан
Комментировать
DjPhoeniX
@DjPhoeniX
Hardcore iOS & ESP developer & DJ
Любая капча вида «введите текст с картинки» обходится за копейки через antigate.
Советую посмотреть вот в эту сторону.
Ответ написан
@stalkerxxl
контрольные вопросы, которые периодически меняются… и боты отпадут… проверено на собственном опыте
Ответ написан
Комментировать
kashey
@kashey
Программирую большую половину жизни
Разворотите стандартную форму. XLS\XLST поможет.
Проблема исчезнет.
Ответ написан
Комментировать
VBKesha
@VBKesha
Есть сервис stopforumspam.com/ у него есть API. Прикручивал к регистрации на форуме проверку через этот сервис, процентов 80 ботов отсекается.
Ответ написан
У меня на форуме IP.Board используется ReCaptcha и подтверждение регистрации по e-mail но спамеры все равно иногда пробиваются.
Реализовал простую защиту: если у пользователя <5 постов — он не может писать посты со ссылкой в тексте.
Срабатывание защиты сохраняется в отдельную таблицу и потом я могу одним кликом удалить пользователя, который пытался спамить. Еще планирую автоматически добавлять ІР адреса в черный список.
Ответ написан
Комментировать
@Ajex
Еще одна идея пришла. При открытии страницы ставите куку, а в скрипте регистрации проверяете наличие этой куки. Опять-таки, если бот не самописный и не умеет адаптироваться под конкретные условия, не пройдет.
Ответ написан
Комментировать
@GuruDeep
Любое не стандартное решение вполне себе сработает процентов на 90. Например прикрыть вообще регистрацию штатными средствами форума, а на другом домене или поддомене сделать страничку с кастомной формочкой для регистрации в туже базу.
Ответ написан
Vilmas
@Vilmas
Используйте reCaptcha (видео установки), а еще лучше — keyCaptcha для вашего форума, и проблем со спамом не будет.
Ответ написан
@soty20
Мужики, кто мучается с ботами и не знает, что с ними делать. Мы написали гайд с тысячами способами как их отвадить.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы