Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Плагин [Antibot] BotFilter - Защити свой сервер от ботов | Update 07.06.2023 | 1.8-1.20

Cuold not dowload proxy....
У меня у одного так?
 
Славик, смотри что случилось, прокси качать не хочет.
 
Все нормально. Если не может скачать с одного сайта, то с других всеравно скачивается.
А тот сайт скоро заработает. Как обычно забывают за дедик заплатить.
 
Все нормально. Если не может скачать с одного сайта, то с других всеравно скачивается.
А тот сайт скоро заработает. Как обычно забывают за дедик заплатить.
Ну там ошибка вылазиет... Ладненько, ждём-с..
 
Слишком много проверок с одного IP адреса. Перезайдите через 10 мин.
Онлайн 1.
 
Как анализировать атаку? В лог выводятся только ники. Было бы хорошо ники + IP.
Хотелось бы иметь возможность выявлять IP ботов и банить на уровне ОС.
 

Защита от ботов встроенная в BungeeCord
1.8-1.12.2
​
Обновлено: 31.10.2017.
Особенности:
  • Защита встроена в BungeeCord.
  • Два типа проверки - Нажать на кнопку и проверка по пакетам
  • Более маленькая нагрузка, нежели отдельный сервер для проверки.
  • Более лучшая производительность и меньше потребления ОЗУ, чем у стандартной банджи.
  • Два режима - Автоматический и Постоянный
  • Есть лимит по странам во время атаки.
  • Скачивание проксей
  • Автоматическое чистка игроков из датабазы если они не заходили очень долго
Команды:
  • /botfilter reload - Перезагрузить конфигурацию.
  • /botfilter stat - Показать статистику
  • /botfilter mode - Переключить режим
Конфиг:
PHP:
msg-check: "&b&lBot&d&lFilter&7>> &fОжидайте завершения проверки..."
msg-check-2: "&b&lBot&d&lFilter&7>> &fНажимите на кнопку с &aЗЕЛЁНОЙ&f шерстью."
msg-check-sus: "&b&lBot&d&lFilter&7>> &aПроверка пройдена"
#line1;line2
msg-check-title: "&b&lBot&d&lFilter;&fОжидайте завершения проверки..."
msg-check-title-sus: "&b&lBot&d&lFilter&r;&aПроверка пройдена.."
msg-press-button-title: "&fНажимите на кнопку с ;&aЗЕЛЁНОЙ&f шерстью."
error-many-checks: "&b&lBot&d&lFilter&7>> &cОчень много проверок с одного IP адресса. Попробуйте зайти через 10 минут&7>> &4ERROR #0"
error-not-a-player: "&b&lBot&d&lFilter&7>> &cСкорее всего вы не игрок &a(Если вы используете читы, выключите их) &7>> &4ERROR #1"
error-wrong-button: "&b&lBot&d&lFilter&7>> &cВы нажали на неверную кнопку&7>> &4ERROR #5"
error-proxy-detected: "&b&lBot&d&lFilter&7>> &cВаше соединение признано нелегитимным&7>> &4ERROR #2"
error-many-pos-packets: "&b&lBot&d&lFilter&7>> &cВы посылаете очень много пакетов&7>> &4ERROR #3"
error-cannot-use-button : "&b&lBot&d&lFilter&7>> &cНеправильная позиция&7>> &4ERROR #6"
error-button-not-pressed: "&b&lBot&d&lFilter&7>> &cВы не успели нажать на кнопку &7>> &4ERROR #7"
error-country-not-allowed: "&b&lBot&d&lFilter&7>> &cВаше соединение признано нелегитимным&7>> &4ERROR #4"
error-ping-is-too-big: "&b&lBot&d&lFilter&7>> &cУ вас слишком большой пинг. Возможно вы бот &7>> &4ERROR #8"
action-bar: "&cПинг: &f%ping% &8/ &cОнлайн на проверке: &f%online%"
#Включить ли постоянную защиту?
#Если true, то будет включены проверки на прокси.
#И на GEO локации.
permanent-protection: false
#Время на сервере проверки.
#https://minecraft.gamepedia.com/File:Day_Night_Clock_24h.png
world-time: 18000
#Кикать ли ботов, если обнаружена атака.
#Если false, то боты могут зайти, а после успешной проверки их кикнет.
#Если true, то ботов будет кикать сразу, как только они попытаются зайти.
force-kick-bots-on-join-if-attack-detected: true
#Настройки проверки по пингу сервера.
server-ping-check:
  #Требовать ли от игроков пропинговать сервер, когда защита отключена?
  #если true то работает всегда
  on-normal-mode: true
  #Требовать ли от игроков пропинговать сервер, когда включена постоянная защита?
  on-permanent-protection: false
  #Требовать ли от игроков пропинговать сервер, когда обнаружена защита?
  on-bot-attack: true
  #Сколько секунд есть у игрока чтобы зайти на сервер после того как он пропинговал сервер
  time: 12
  kick-message: |-
    &cВы были кикнуты! Не используйте прямое подключение
 
    &bДля того чтобы зайти на сервер:
 
    &71) &rДобавте сервер в &lсписок серверов.
    &lНаш айпи &8>> &b&lIP
  
    &72) &rОбновите список серверов.
    &oЧтобы его обновить нажмите кнопку &c&lОбновить &r&oили &c&lRefresh
 
    &73) &rПодождите &c1-3&r секунды и заходите!
 
#Кикать ли игроков ботов если пинг больше указаного значения?
#Работает только во время постоянной/автоматичекой защите. В обычном режиме не работает.
#-1 отключить
#Средний пинг за день при онлайне 250 был 218.
kick-if-ping-more-than: 265
#Как много игроков может проходить проверку за одну минуту
#Если данный порог превышен то включается лимит на прокси и на все страны кроме СНГ
#По логике, за минуту не должно заходить очень много игроков, которые не проходили проверку.
#Так что 20-30 достаточно. Если у вас ооочень большой онлайн то можно и 35-45 поставить.
#онлайна до 150 - 20
#онлайна от 150 до 250 - 30
#250-450 - 35-40
#выше 45
max-checks-per-1-min: 25
#Как долго будут действовать лимиты; В секундах.
protection-time: 70
#Показывать ли игроков/ботов в списке игроков при пинге сервера которые находятся на фильтре?
show-filter-online: true
#Настройки проверки нажатии на кнопку.
button-check:
  #Включить ли проверку с помощью кнопки если не обноружена атака?
  #если true то работает всегда
  on-normal-mode: false
  #Включать ли проверку, если включена постоянная защита?
  on-permanent-protection: true
  #Включать ли проверку, если обнаружена бот атака?
  #Если значние выше false, а тут true и начнут бот атаку, то кнопка всёравно появится.
  on-bot-attack: true
#https://dev.maxmind.com/geoip/legacy/codes/iso3166/
#Страны которые могут входить на сервер пока включена автоматическая защита.
allowed-countries-auto:
  - 'RU'
  - 'UA'
  - 'BY'
  - 'KZ'
  - 'EE'
  - 'GE'
  - 'MD'
#Дополнительные страны, которые могут входить, если включена постояная защита.
#В этот список также включаются страны из списка выше.
allowed-countries-permanent:
  - 'KG'
  - 'AZ'
database:
  #sqlite, mysql
  type: sqlite
  mysql:
    host: localhost
    port: "3306"
    username: root
    password: example
    database: botfilter
    #Для redis и прочих штук, которые позволяют использовать две и более бандж.
    multibungee:
      enabled: false
      #Как часто синхронизировать аккаунты. В секундах
      #Слишком часто лучше не делать
      sync-time: 10
  #Как долго хранить игрока в датабазе? В днях
  purge-time: 7
fake-online:
  enabled: false
  #ФЕЙК ОНЛАЙН ПОКАЗЫВАЕТСЯ ТОЛЬКО В QUERY И ПРИ ПИНГЕ СЕРВЕРА
  #НА ПЛАГИНЫ ОН НЕ ВЛИЯЕТ. ТОЛЬКО НА ТЕ ЧТО ИСПОЛЬЗУЮТ 'ProxyPingEvent'
  booster:
    #Эти заничения можно менять как угодно. Тоесть можно добавлять свои значения
    #Для буста онлайна. Т.е 0;150 , 70;200 и тд
    #от 0 до 30; Буст онлайна на 50%
    0;30: 1.5
    #от 31 до 60; Буст онлайна на 40%
    31;60: 1.4
    #от 61 до 100; Буст онлайна на 30%
    61;100: 1.3
    #любой другой онлайн, которого нет выше
    default: 1.25
proxy:
  #включить ли скачивание проксей.
  enabled: true
  #поддерживются списки, где на странице только прокси.
  #скачиваться будут только те прокси, страны которых включены в списки выше
  download-list:
  - https://lists.blocklist.de/lists/all.txt
  - http://www.ciarmy.com/list/ci-badguys.txt
  - http://danger.rulez.sk/projects/bruteforceblocker/blist.php
  - http://myip.ms/files/blacklist/csf/latest_blacklist.txt
  - http://tjfmc.de/DeathBot/SSlproxies.txt
  - http://tjfmc.de/DeathBot/Socks4.txt
  - http://tjfmc.de/DeathBot/Socks5.txt
  - http://151.80.108.152/proxy.txt
  blogspot-proxy:
  #- url;regex   - default regex: href=\'(.*?)\'
  - http://socksproxylist24.blogspot.com/
  - http://www.vipsocks24.net/
  - http://www.socks24.org/
  - http://www.live-socks.net/
  - http://www.proxyserverlist24.top/
  - http://www.sslproxies24.top/
  - http://proxy-daily.com/;href=\"(.*?)\"
config-version: 5
Установка:
  1. Скачать, установить как обычную банджу.
  2. Если у вас есть онлайн на сервере(130+), то в конфиге желательно увеличить max-checks-per-1-min на какоето время. Значения 25-40 будет достаточно.
  3. Так же желательно включить лимит игроков в банджи. ~700-900 если онлайна меньше 400. Тоесть - МаксОнлайн*2 +- 200-250
  4. Так же можно поставить connection_throttle ~3000-4000
Скачать: https://yadi.sk/d/QrSeJWeU3LAq4p

Исходники: https://github.com/Dimatert9/BungeeCord

Изменения:

Version 2.1.2(01.11.2017):

  • Исправлено неправильное получения среднего пинга(Он всегда был намного меньше, чем должен быть)
  • Теперь чистка аккаунтов происходит каждые 12 часов, а не только при запуске банджи.
Version 2.1.1(25.10.2017):
  • Исправлен баг изза которого при выходе игрока во время проверки не бросался PlayerDisconnectEvent, который иногда нужен для плагинов.
  • Исправлена ошибка в консоли (https://pp.userapi.com/c639421/v639421626/56b1d/jnPMrYtBxrc.jpg)
  • Улучшено получение пинга у игрока.
Version 2.1(22.10.2017):
  • Теперь можно указать время суток на проверке в конфиге.
  • Добавлены титлы и actionbar.
  • Добавлена функция чтобы блокировать заход на сервер без добавления его в список серверов(Полностью настраивается. Можно отключить, или сделать так чтобы работал только во время бот атаки)
    Z90IQA0rP8c.jpg

    prT-SX4fz3c.jpg
    884fd359b011887c44ad678360a333fa.png
  • Также ботфильтр теперь может кикать игроков/ботов с слишком большим пингом. Работает только во время бот атаки или с перманентной защитой. Можно отключить.
  • Теперь прокси скачиваются каждые 4 часа, а не только при запуске банджи.
  • Теперь пользователи которые прошли проверку хранятся в sqlite дб, а не в yml файле. При запуске сервера все игроки которые были в .yml файле перенесутся в дб.
  • Добавлена автоматическая чистка игроков которые не заходили X дней. Настраивается в конфиге.
Version 2.0(29.09.2017):
  • Собрано под последний билд BungeeCord. Исправлен баг, что у всех игроков пинг был 0.
  • Изменен дизайн при прохождении проверки. Теперь проверка капельку быстрее.
  • Теперь можно настроить список прокси, откуда будут скачиваться прокси. Поддерживаемые виды сайтов:
    http://myip.ms/files/blacklist/csf/latest_blacklist.txt,
    http://socksproxylist24.blogspot.com.ee/, http://www.live-socks.net/
  • Также теперь можно отключить показ игроков/ботов при пинге сервера.
Version 1.9.3(23.09.2017):
  • Собрано под последний билд BungeeCord. Была исправлена ошибка изза которой кикало клиенты всех версий с причиной "Timed Out"
Version 1.9.2(19.09.2017):
  • Собрано под последний билд BungeeCord. Была исправлена ошибка изза которой кикало клиенты на версии 1.12.2

Version 1.9.1(18.09.2017):

  • Собрано под последний билд BungeeCord. Поддержка 1.12.2

Version 1.9(08.09.2017):

  • Собрано под последний билд BungeeCord
  • Исправлены боты с помощью которых можно положить любую банджу.
  • Немножко оптимизации.
Version 1.8(18.08.2017):
  • Собрано под последний билд BungeeCord(Пофикшена утечка памяти)
Version 1.7(06.08.2017):
  • Собрано под последний билд BungeeCord
  • Исправлен баг, из-за которого в плагинах создавался конфиг от BotFilter
Version 1.6(05.08.2017):
  • Собрано под последний билд BungeeCord
  • Добавлена поддержка Redis bungee и других похожих штук.(Mysql only)
  • Исправлена перезагрузка конфига(botfilter reload config)
Version 1.5(03.08.2017):
  • Изменено название на BotFilter.
  • Поддержка 1.12.1
  • Изменён дизайн на проверке
  • Добавлен FakeOnline
  • Ещё меньше ложных срабатываний
  • Более лучшая проверка на пакеты во время бот атаки.
Version 1.4(27.07.2017):
  • Теперь айпи банится только тогда, когда не удалось пройти проверку два раза.
Version 1.3(27.07.2017):
  • Исправлен баг из за которого не выключался режим 'под атакой'
Version 1.2(27.07.2017):
  • Добавлено ещё немного проверок на пакеты во время бот атаки.(В обычном режиме проверяется только один пакет. Во время атаки - пять + Нажать на кнопку)
  • Попытка исправить ложные срабатывания на "много пакетов"
  • Попытка исправить "неверная позиция", когда надо нажимать на кнопку.
Version 1.1(22.07.2017):
  • Добавлена новая проверка, которая работает только во время бот атаки(Нажать на зелёную кнопку, в видео выше показано всё вместе)
  • Пофикшено немножко багов, также добавлены новые.
  • Добавлена функция в конфиге, которая поможет снизить нагрузку во время бот атаки(Включена по стандарту)
  • Из конфига убраны нерабочие функции.
  • Косметические изменения во время проверки.
  • Добавлен поиск обновлений.
У меня проблема: игрок играет минут 10, потом его кидает в лобби и пишет: "простите, сервер на котором вы играли выключен. Вы были перемещены в лобби."
Вот ошибка в консоли
08:12:55 [SEVERE] [gigigig123123] <-> DownstreamBridge <-> [survival] - encountered exception
java.lang.IllegalArgumentException: Team viaversion already exists in this scoreboard
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:191)
at net.md_5.bungee.api.score.Scoreboard.addTeam(Scoreboard.java:68)
at net.md_5.bungee.connection.DownstreamBridge.handle(DownstreamBridge.java:188)
at net.md_5.bungee.protocol.packet.Team.handle(Team.java:102)
at net.md_5.bungee.netty.HandlerBoss.channelRead(HandlerBoss.java:103)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
........
 
У меня проблема: игрок играет минут 10, потом его кидает в лобби и пишет: "простите, сервер на котором вы играли выключен. Вы были перемещены в лобби."
Вот ошибка в консоли
08:12:55 [SEVERE] [gigigig123123] <-> DownstreamBridge <-> [survival] - encountered exception
java.lang.IllegalArgumentException: Team viaversion already exists in this scoreboard
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:191)
at net.md_5.bungee.api.score.Scoreboard.addTeam(Scoreboard.java:68)
at net.md_5.bungee.connection.DownstreamBridge.handle(DownstreamBridge.java:188)
at net.md_5.bungee.protocol.packet.Team.handle(Team.java:102)
at net.md_5.bungee.netty.HandlerBoss.channelRead(HandlerBoss.java:103)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
........
В настройках плагина ViaVersion переключи строку auto-team в false
 
Не пойму, почему не может к бд запрос сделать.
Бд работает, проверял другими плагинами. Одна только защита нос воротит.:
Не могу выполнить запрос к базе данных
 
Здравствуйте. У меня возникла небольшая проблема. Надеюсь вы мне поможете. Заранее спасибо.

15:33:59 [WARNING] Could not download proxy list from http://151.80.108.152/proxy.txt
java.net.SocketTimeoutException: connect timed out
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at sun.net.NetworkClient.doConnect(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.<init>(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection$6.run(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection$6.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessController.doPrivilegedWithCombiner(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.access$200(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection$9.run(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection$9.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessController.doPrivilegedWithCombiner(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at ru.leymooo.botfilter.utils.Proxy.getProxyFromPage(Proxy.java:227)
at ru.leymooo.botfilter.utils.Proxy.lambda$updateProxiesFromSite$1(Proxy.java:178)
at java.lang.Thread.run(Unknown Source)
 
А как я смогу узнать что сейчас идет атака или она была когда нибудь и из-за нее например, у всех был высокий пинг а в тот момент я мог голову ломать, в чем проблема?
Этот лог для информативности, что бы понять что происходит с банжей во время атаки. Мне кажется эта информация может пригодится для дальнейшего улучшения антибота, введя некий дебаг или лог, который я описал выше.
Статистика для кого?
 
Статистика для кого?
Это не статистика. Это лог антибота, с помощью которого можно узнать что происходило с ним например при ддосе. Всякие ошибки складывать именно в этот лог (если это возможно) и прочее. Обычным логом банжи ты лишь узнаешь кто подключился к тебе, онлайн на всех серверах и все. Даже не узнаешь онлайн бот фильтра.
 
Это не статистика. Это лог антибота, с помощью которого можно узнать что происходило с ним например при ддосе. Всякие ошибки складывать именно в этот лог (если это возможно) и прочее. Обычным логом банжи ты лишь узнаешь кто подключился к тебе, онлайн на всех серверах и все. Даже не узнаешь онлайн бот фильтра.
Але? Я про /bf stat(s) там и про атаку и про ботов
 
Але? Я про /bf stat(s) там и про атаку и про ботов
Дак это показывает состояние на момент когда я введу эту команду.
Мне что ли поставить плагин который будет каждые 5 минут вводить эту команду? Как я сказал выше, удобнее когда некоторая информация могла бы логиниться и ее можно было потом посмотреть убедившись что все в порядке.
 

Поделиться этой страницей

Назад
Верх