- Автор
- Совместимость с
- 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
SKAJIbnEJIb за конструктивную критику и идеи
Отдельное спасибо тем, кто так или иначе участвовал в развитии данной системы
Внимание, данный плагин - лишь ядро системы. Для полноценной работы ему требуются суб-плагины (так называемые модули, провайдеры данных). Внимательно читайте раздел 'Установка и настройка'.
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', уточнение данных по провайдерам/странам, с которых совершается обход, и на основании этого, принятие решения по методу противодействия).
Функционал:
Схема работы:
Подборка ответов в обсуждении плагина
Зачем нужен плагин, и как бороться с теми, кто обходит баны?
Ручная проверка игрока на принадлежность к Proxy/VPN
Как решить проблему с ночным режимом, когда VIP-плагин выдаёт флаги всем игрокам?
Список буквенных кодов стран для allowed_countries.ini и banned_countries.ini (1)
Список буквенных кодов стран для allowed_countries.ini и banned_countries.ini (2)
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).
Схема работы:
Подборка ответов в обсуждении плагина
Зачем нужен плагин, и как бороться с теми, кто обходит баны?
Ручная проверка игрока на принадлежность к 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, и ещё один - для получения данных страны (гео)?
О: Да. Именно для этого у плагинов-провайдеров и имеются квары, определяющие, какие функции эти плагины выполняют.
О: Если хотите решить вопрос, необходимо создать тему в данном разделе. Перед тем, как создавать тему, убедитесь, что используете последние версии данного плагина и всех его модулей. Предыдущие версии не поддерживаются. Так же не забудьте приложить конфиг с настройками данного плагина и всех его модулей (имеются ввиду конфиги из '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 ранее был выдан иммунитет.
[Stats Immunity] - Игрок допущен без проверок, т.к. отыграл на сервере не менее # минут (по данным статистики)
[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, здесь уже всё зависит от того, какие провайдеры данных вы используете.
О: Это флаги, присвоенные кварами '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 ранее был выдан иммунитет.
[Stats Immunity] - Игрок допущен без проверок, т.к. отыграл на сервере не менее # минут (по данным статистики)
[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 - Выводит информацию о присутствующих игроках