Bypass Guard

amxx core Bypass Guard 1.0.9

Нет прав для скачивания
Автор
Совместимость с
Amx Mod X 1.9.0, Amx Mod X 1.10.0 dev
Мультиязычность
RU, EN
Благодарности
fantom за пример работы с форматом json
juice за плагин 'Proxy/VPN check'
Lev за плагин 'SubnetBan' и модуль 'Whois'
Polarhigh за модуль 'Amxx Curl'
Inline за модуль 'gRIP'
voed за пример работы с модулем 'gRIP'
Garey, AleXr, wopox1337 за версию 'gRIP' под Windows
Отдельное спасибо тем, кто так или иначе участвовал в развитии данной системы
Внимание, данный плагин - лишь ядро системы. Для полноценной работы ему требуются суб-плагины (так называемые модули, провайдеры данных). Внимательно читайте раздел 'Установка и настройка'.

Bypass Guard
предназначен для борьбы с игроками, злостно обходящими бан путём смены SteamID и/или IP-адреса, в том числе, путём использования Proxy/VPN-сервисов. Плагин является независимым дополнением (не заменой!) к основным средствам ограничения доступа, таким как Fresh Bans, Lite Bans, Dopban by mazdan, и т.п.

Это не бан-система! Игроков плагин персонально не банит (в традиционном понимании, т.е. не заносит в список банов вашего сервера), а только лишь ограничивает им доступ на сервер на основе результата внутренних алгоритмов (на основе ряда проверок).

Что умеет плагин? У каждого провайдера интернета есть свой уникальный номер (ASN). Данный плагин может блокировать доступ по ASN (т.е. блокировать доступ конкретным провайдерам целиком). Плагин может блокировать доступ по диапазону IP-адресов. Плагин может блокировать доступ конкретным странам (режим чёрного и белого списков). Так же плагин проверяет IP-адреса игроков при помощи сервиса проверки на Proxy/VPN. Т.е. отсекает любителей обходить бан при помощи использования VPN.

Плагин на 100% защитит меня и избавит от обходов бана? Нет. Часть работы может выполнять автоматика, но в ряде случаев требуется вмешательство администратора (анализ симптомов атаки, т.е. чтение логов данного плагина в 'amxmodx/logs/bypass_guard', уточнение данных по провайдерам/странам, с которых совершается обход, и на основании этого, принятие решения по методу противодействия).

Функционал:
  • Пропуск без проверок по белому списку SteamID
  • Пропуск без проверок легитных (steam) игроков
  • Пропуск без проверок при наличии определённого флага, либо при отсутствии флага amx_default_access
  • Работа с номерами автономных систем (AS/ASN). Вы можете целиком блокировать/разрешать доступ конкретным провайдерам интернета.
  • Чёрный и белый списки IP-адресов с добавлением в понятном формате <start_ip - end_ip>
  • Проверка страны игрока как основной рубеж защиты от обхода через Proxy/VPN
  • Проверка IP-адреса игрока на принадлежность к Proxy/VPN-сервису, как дополнительный рубеж защиты
  • Автоматическая блокировка "незнакомцев" при подозрении на последовательную атаку типа "обход бана" (дополнительный плагин Supervisor).
Как работает плагин? Подробная схема работы представлена ниже, под сплойлером.

Схема работы:
схема работы.png
work scheme.png

Подборка ответов в обсуждении плагина
Зачем нужен плагин, и как бороться с теми, кто обходит баны?
Ручная проверка игрока на принадлежность к Proxy/VPN
Как решить проблему с ночным режимом, когда VIP-плагин выдаёт флаги всем игрокам?
Список буквенных кодов стран для allowed_countries.ini и banned_countries.ini (1)
Список буквенных кодов стран для allowed_countries.ini и banned_countries.ini (2)

В: Плагин не работает, работает неправильно, либо имеются прочие проблемы. Как быть?
О: Если хотите решить вопрос, необходимо создать тему в данном разделе. Перед тем, как создавать тему, убедитесь, что используете последние версии данного плагина и всех его модулей. Предыдущие версии не поддерживаются. Так же не забудьте приложить конфиг с настройками данного плагина и всех его модулей (имеются ввиду конфиги из 'configs/plugins' и 'configs/bypass_guard', ключи в 'iphub_api_keys.ini' скройте от посторонних глаз, но укажите, сколько ключей у вас используется).

В: Плагин всё делает сам, достаточно лишь установить его?
О: Нет. Во первых, плагину для полноценной работы требуются доп. плагины (провайдеры данных, так называемые модули), читайте о них в разделе 'Установка и настройка'. Во вторых, после ПРАВИЛЬНОЙ установки и после ПРАВИЛЬНОЙ настройки плагин заблокирует вход на сервер всем игрокам, чьи страны не содержатся в списке разрешённых (режим белого списка, по умолчанию), а так же будет в автоматическом режиме проверять игроков на proxy/vpn. Эта проверка не даёт 100%-ой гарантии защиты, и не покрывает все сценарии обхода. Именно для этого введены команды, позволяющие формировать чёрные и белые списки AS-номеров и IP-адресов. И если человек попадётся упорный, придётся "воевать" с ним в ручном режиме именно при помощи этих функций.

В: Как понять, что система правильно работает?
О: В 'amxmodx/logs/bypass_guard' у вас будут логи допуска игроков на сервер (ALLOW), и логи отказа входа на сервер (DENY). Ниже будет сплойлер 'О лог-файлах', более подробная информация расположена там.

В: Наличие лога ERROR.log, это нормально?
О: И да, и нет. В лог могут периодически записываться ошибки, связанные с истечением ключа и последующим переключением на следующий доступный ключ. Это нормально. Так же иногда могут возникать проблемы с доступом к веб-сервису проверки (определение AS-номера для IP, проверка на Proxy/VPN). Периодическое появление подобных ошибок - тоже нормальное явление. Прочие ошибки нужно рассматривать отдельно, в разделе 'Проблемы с работой плагинов'.

В: По какому принципу работает "доступ по флагам"?
О: Доступ по флагам, - это когда плагин определяет, что игрок не является "обычным игроком". На выбор имеется два метода, один исключает другой. Используйте тот, что подходит именно вам. Первый метод, - стандартный, когда значение квара bypass_guard_immunity_flags НЕ является пустым. В этом случае плагин проверяет, есть ли у игрока любой из перечисленных в значении данного квара флагов. Если флаг обнаруживается, игрок входит без проверок. Если нет, - следует проверка.
Второй метод - когда значение квара bypass_guard_immunity_flags является пустым (т.е. ""). При таком варианте плагин проверяет, есть ли у игрока флаг, который установлен значением квара amx_default_access. Если у игрока этот флаг НЕ обнаружен, - он входит без проверок. Иначе следует проверка. Если квар amx_default_access не найден или пуст, - данный метод, а значит и иммунитет по флагу доступа, не работает.

В: Можно ли редактировать белый и чёрный списки ASN/подсетей IP вручную?
О: Списки стран, - можно. Списки IP/AS, - можно, но не рекомендуется (перед ручной правкой плагин желательно отключить, либо сразу после редактирования сменить карту).

В: Я хочу выдать nonsteam-игроку доступ по SteamID. Как мне узнать его SteamID, если на всех серверах из-за "соли" SteamID отличается?
О: Перед киком плагин шлёт игроку в консоль его текущие ник, SteamID, и IP. Если этой информации игрок не получает (такое может быть), можно спросить у него его ник на момент кика, найти этот ник в 'amxmodx/logs/bypass_guard/DENY.log', и уже там подсмотреть SteamID.

В: Я могу использовать один плагин-провайдер для получения AS-номера, другой, - для проверки на proxy/VPN, и ещё один - для получения данных страны (гео)?
О: Да. Именно для этого у плагинов-провайдеров и имеются квары, определяющие, какие функции эти плагины выполняют.

В: Что за 'Triggered port flags' и 'Check fail flags' в лог-файлах?
О: Это флаги, присвоенные кварами 'bypass_guard_check_port' (удалён начиная с версии 1.0.2) и 'bypass_guard_kick_if_cant_check'

В: Что означают первые два поля в ALLOW.log и DENY.log?
О:

ALLOW.log (записывается каждый успешный вход игрока):
Первое поле:

[Legit Steam] - Игрок допущен без проверок, т.к. играет со steam-клиента.

[Access Flags] - Игрок допущен без проверок благодаря наличию флага доступа из квара bypass_guard_immunity_flags, либо благодаря отсутствию флага из квара amx_default_access, если значение квара bypass_guard_immunity_flags является пустым.

[SteamID Immunity] - Игрок допущен без проверок, т.к. на его SteamID ранее был выдан иммунитет.

[IP Whitelist] - Игрок допущен, т.к. его IP значится в белом списке подсетей IP.

[AS Whitelist] - Игрок допущен, т.к. AS-номер его провайдера значится в белом списке AS-номеров.

[Check] - Игрок допущен в результате стандартной проверки.

Второе поле:
[SV: *****] - Статус проверки игрока в плагине Supervisor.

N/A - Проверка пропущена, либо плагин Supervisor не установлен/отключён.

Approved - Игрок не распознан как посещавший сервер ранее, но успешно прошёл все проверки (или часть необходимую их часть) и был допущен на сервер (в результате чего, в будущем, игрок будет учитываться как посещавший сервер ранее).

Whitepass Query - Игрок распознан как посещавший сервер ранее при помощи запроса к базе данных.

Whitepass Cache - Игрок распознан как посещавший сервер ранее при помощи локального кеша.

DENY.log (записывается каждый неудачный вход игрока):
Первое поле:

[Banned AS] - Игрок не допущен, т.к. AS-номер его провайдера значится в чёрном списке AS-номеров.

[IP Blacklist] - Игрок не допущен, т.к. его IP значится в чёрном списке подсетей IP.

[Bad Country] - Игрок не допущен, т.к. его страна, в зависимости от значения квара bypass_guard_country_check_mode, отсутствует в списке разрешённых (в т.ч., не определена), либо присутствует в списке запрещённых.

[Proxy/VPN] - Игрок не допущен, т.к. проверка на proxy/vpn вернула положительный результат.

[****** Check Fail] - Игрок не допущен, т.к. не удалось получить необходимую информацию для его IP (регулируется кваром 'bypass_guard_kick_if_cant_check').

[Supervisor] - Игрок не допущен, т.к. Supervisor отказал в ему в доступе. Т.е. игрок не распознан как посещавший сервер ранее, и при этом действует глобальное (для всех) или локальное (для конкретного ASN) ограничение на вход игроков.

Второе поле:
[SV: *****] - Статус проверки игрока в плагине Supervisor:

N/A - Проверка пропущена, либо плагин Supervisor не установлен/отключён.

Global Restriction - Игрок не допущен, т.к. Supervisor отказал в ему в доступе. Т.е. игрок не распознан как посещавший сервер ранее, и при этом действует глобальное (для всех) ограничение на вход игроков.

ASN Restriction - Игрок не допущен, т.к. Supervisor отказал в ему в доступе. Т.е. игрок не распознан как посещавший сервер ранее, и при этом действует локальное (для конкретного ASN) ограничение на вход игроков.

ERROR.log:
Коды ошибок перечислены в scripting/grip.inc или в scripting/iphubclient.inc, здесь уже всё зависит от того, какие провайдеры данных вы используете.
Команды
bg_allow_steamid <steamid> - Выдаёт указанному steamid иммунитет ко всем проверкам

Внимание! Внесение AS/IP в чёрный список не проверяет сервер на наличие игроков, подпадающих под добавленное ограничение.
Другими словами, забанив AS/IP игрока, который в данный момент находится на сервере, вы должны кикнуть его самостоятельно.

AS-номер вводится как AS***, например AS123, AS765, AS35678
<> вводить не надо, это указатель границ аргумента
"" указывает на то, что аргумент нужно обрамлять в кавычки
[optional] вводить не надо, это указывает на то, что рассматриваемый аргумент является опциональным (т.е. можно его не указывать)
IP во всех случаях указывается без порта. 127.0.0.1 правильно, 127.0.0.1:27005 неправильно

Работа с чёрным списком AS-номеров:
bg_as_blacklist_add <as number> "<comment>"[optional]
Примеры:

bg_as_blacklist_add AS123
bg_as_blacklist_add AS345 "RosTelecom Provider"
bg_as_blacklist_del <as number>
bg_as_blacklist_show <page>

Работа с белым списком AS-номеров:
bg_as_whitelist_add <as number> "<comment>"[optional]
bg_as_whitelist_del <as number>
bg_as_whitelist_show <page>

Работа с чёрным списком IP-адресов:
bg_ip_blacklist_add <start ip> <end ip> "<comment>"[optional]
Примеры:

bg_ip_blacklist_add 120.50.40.0 120.50.90.0
bg_ip_blacklist_add 120.50.1.10 120.50.5.45
"RosTelecom Subnet"
bg_ip_blacklist_del <start ip> <end ip>
bg_ip_blacklist_show <page>

Работа с белым списком IP-адресов:
bg_ip_whitelist_add <start ip> <end ip> "<comment>"[optional]
bg_ip_whitelist_del <start ip> <end ip>
bg_ip_whitelist_show <page>

bg_find_ip <ip> - Позволяет проверить наличие указанного IP в диапазонах чёрного и белого списков

bg_find_as <as number> - Позволяет проверить наличие указанного AS-номера в чёрном и белом списках

bg_get_as_by_ip <ip> - Позволяет получить AS-номер для указанного IP

bg_check_ip <ip> - Позволяет проверить IP-адрес на причастность к Proxy/VPN

bg_flush_data <1-3>:
1 - Обнулить хранилище, содержащее steamid'ы, имеющие иммунитет ко всем проверкам (nvault)
2 - Обнулить чёрный и белый список IP, удалить файл-список диапазонов IP
3 - Обнулить чёрный и белый список AS-номеров, удалить файл-список AS-номеров

bg_status - Выводит информацию о присутствующих игроках
  • Нравится
Реакции: NoNameNPC и Pokemoshka
Автор
BlackSignature
Скачиваний
1,147
Просмотры
32K
Первый выпуск
Обновление
Оценка
5.00 звёзд 4 оценок

Другие ресурсы пользователя BlackSignature

Последние обновления

  1. Обновление до версии 1.0.9

    1.0.9 (10.02.2024): ● Добавлено принудительное конвертирование кода страны в верхний регистр в...
  2. Обновление до версии 1.0.8

    1.0.2 (29.05.2023): ● Удалён квар 'bypass_guard_check_port' и связанный с ним функционал...
  3. Обновление до версии 1.0.1

    ● Исправление логики проверки страны (вайтлист/блеклист страны не работал), спасибо stalin_alex...

Последние рецензии

good joob
круто!
Использую твой плагин с версии от 24.02.2019.
Отличный плагин,а вместе с fb и dopбаном - классная вещь.
Игроки,которые обходят в бан уже в прошлом :)
5 из 5.
Мне показалось эта задумка интересной! Хорошая работа!
Сверху Снизу