Баны и обнаружения
ssAntiCheat разделяет обнаружение читера и его удаление. Обнаружение всегда вызывает оповещение; бан происходит только после достижения порога модуля, и даже тогда он обычно откладывается до следующей волны банов. Эта задержка сделана намеренно — она мешает читеру сопоставить «я сделал X и через секунду был забанен» и вычислить, какая проверка его поймала.
Конвейер
Шаги 3–4 задаются для каждого модуля отдельно — см.
BanAfterDetections. Модуль без
этого ключа обнаруживает и оповещает, но никогда не банит сам по себе.
Волны банов
Бан, стоящий в очереди, выполняется, когда происходит любое из следующего:
| Триггер | Примечания |
|---|---|
| Каждые N сохранений мира | N задаётся AutoBan."SaveWorld Cycles" — по умолчанию 2. Это обычный путь. |
| Игрок из очереди отключается | Его банят при выходе, а не оставляют свободным до следующей волны. |
У модуля установлено InstantBan: true |
Зарезервировано для обнаружений без правдоподобных ложных срабатываний. |
Администратор выполняет ssac.banwave |
Немедленно выполнить всю очередь. |
Между постановкой в очередь и выполнением вы можете просмотреть очередь
командой ssac.pendingbans и очистить её командой ssac.clearbanwave. См.
Команды.
AutoBan
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
SaveWorld Cycles |
number | 2 |
Выполнять волну банов каждые столько сохранений мира. При интервале сохранения в 15 минут 2 означает задержку не более 30 минут. |
ExecuteCommand |
string | "banplayer {steamid} " |
Консольная команда, выполняемая для каждого забаненного игрока. {steamid} заменяется на его SteamID64. Оставьте пустым, чтобы полагаться только на встроенную систему банов. |
ExecuteCommand — это способ подключить ssAntiCheat к тому, что вы уже
используете. По умолчанию игрок добавляется в собственный бан-лист ARK; вы
можете вместо этого вызвать команду бана другого плагина или команду,
работающую на весь кластер.
💡 Совет для кластера.
banplayerв ARK работает только на уровне одного сервера. Если вы используете кластер, либо направьтеExecuteCommandна команду бана, учитывающую кластер, либо используйте встроенную систему банов с общей базой данных MySQL для всех ваших серверов — тогда каждый сервер будет применять каждый бан при входе.
IntegratedBanSystem
Встроенное хранилище банов: баны записываются в вашу базу данных MySQL и применяются, когда игрок пытается подключиться.
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
Enabled |
boolean | true |
Хранить и применять баны в MySQL. Когда false, выполняется только AutoBan.ExecuteCommand. |
UseIPBans |
boolean | true |
Также отказывать в подключении с IP-адреса забаненного игрока. См. ниже. |
UseHWIDBans |
boolean | false |
Также отказывать в подключении по аппаратному ID забаненного игрока. Требует необязательного клиентского мода-компаньона для его захвата — без него эта опция ничего не делает. |
Exclude IPS |
array | [] |
IP-адреса, никогда не считающиеся ассоциацией. Укажите здесь общие/NAT-адреса. |
BanMessage |
string | см. выше | Сообщение, которое видит игрок. |
Баны хранятся в единой таблице (ssAntiCheat_bans), содержащей Steam ID, IP,
аппаратный ID, причину, дату бана и срок действия. Направьте несколько
серверов на одну и ту же базу данных, и бан будет применяться на всех них.
Сообщение о бане
BanMessage поддерживает два плейсхолдера:
| Плейсхолдер | Заменяется на |
|---|---|
{reason} |
Причина бана. |
{ban_id} |
Числовой ID бана — значение, нужное администратору для ssac.unban. |
⚠️ Замените ссылку-заглушку. Поставляемое сообщение указывает на
store.example.com. Всегда включайте{ban_id}— без него игроку, подающему апелляцию, нечего указать, и вам придётся искать запись в базе данных вручную.
Баны по IP-ассоциации
При включённом UseIPBans игроку, подключающемуся с адреса, принадлежащего
активному бану, отказывают во входе, и это фиксируется как его собственный
бан, так что альтернативный аккаунт с этого момента забанен по Steam ID.
Оповещение уходит в AssociationBans с
указанием обоих аккаунтов.
Проверка намеренно консервативна — она срабатывает только тогда, когда IP
действительно совпадает, не входит в Exclude IPS и принадлежит другому
аккаунту Steam.
⚠️ Баны по IP затрагивают домохозяйства и общие подключения. Братья и сёстры, соседи по квартире, интернет-кафе или общий выход VPN — все они будут выглядеть как один и тот же игрок. Понаблюдайте за каналом ассоциаций некоторое время, прежде чем доверять ему, и добавьте легитимные общие адреса в
Exclude IPS.
Длительность банов
| Как был создан бан | Длительность |
|---|---|
ssac.ban с d=… |
Истекает по прошествии этого периода. |
ssac.ban без d=… |
Перманентный. |
Автоматический (по BanAfterDetections модуля) |
Перманентный. |
Чтобы снять любой бан, используйте его ID:
Проверка обнаружения до того, как оно станет баном
Промежуток между обнаружением и волной банов — это ваше окно для проверки. Хорошо работающий алгоритм действий:
- Оповещение в Discord (или внутриигровое оповещение администратору) называет игрока и модуль.
ssac.go— сразу же перейдите в режим наблюдения за ним, без аргумента — к последнему обнаружению.!tracers— посмотрите на его выстрелы; помощь в прицеливании видна невооружённым глазом этим способом.ssac.pendingbans— проверьте, стоит ли он уже в очереди и за что.- Примите решение: дать волне пройти, выполнить
ssac.banwaveнемедленно илиssac.clearbanwave, если вы считаете это ложным срабатыванием.
Если модуль даёт повторяющиеся ложные срабатывания на вашем сервере, повысьте
его порог или установите OnlyAnalysis, а не отключайте его — см.
Советы по настройке.
Дальнейшие шаги:
- Конфигурация — каждый ключ в
config.json. - Команды — полный справочник команд.