- Поддерживаемые версии
- 1.13
- 1.14
- 1.15
- 1.16
- 1.17
- 1.18
- 1.19
- 1.20
- 1.21
VitalityDefenderOP — Enterprise-Grade Server Protection System
Версия: 1.0.0
Назначение
- Защита опасных административных действий через дополнительную аутентификацию (пароль + сессия).
- Базовая защита от краш-пакетов и спама пакетов через ProtocolLib (если установлен).
- Журналирование событий безопасности в защищённый лог.
- Watchdog с безопасным поведением (без Runtime.halt(1) по умолчанию).
1) Требования и совместимость (текущее состояние реализации)
- Minecraft API: Spigot/Paper 1.13.2+ (плагин использует Bukkit API; совместимость с 1.14–1.21 зависит от конкретного ядра и тестов).
- Java: 8+ (код написан под Java 8).
- ProtocolLib: опционально; требуется для модуля packet_protection.
Важно: плагин компилируется с API ProtocolLib 5.x; с 4.x фактическая совместимость не гарантируется без отдельного слоя совместимости.
2) Установка и быстрый старт
1. Поместите JAR в plugins/VitalityDefenderOP.jar.
2. Запустите сервер, чтобы создался plugins/VitalityDefenderOP/config.yml.
3. Установите админ-пароль:
/vdo setadminpassword <пароль>
Команда доступна только из консоли или с permission vitalitydefenderop.system.
4. Проверьте статус:
/vdo status
3) Команды
Команда плагина: /vitalitydefenderop
Алиасы: /vdef, /vdo
3.1 Основные
- /vdo status
Показывает TPS, состояние Panic, и статусы модулей (Auth/ML/Packets/Watchdog).
Доступ: консоль/system или vitalitydefenderop.admin.
- /vdo reload
Перезагрузка config.yml и перезапуск/остановка модулей по настройкам.
Доступ: консоль или permission vitalitydefenderop.system.
- /vdo toggle <auth|ml|packets|watchdog> [on|off]
Включает/выключает модуль во время работы (runtime) где это возможно.
Доступ: консоль или permission vitalitydefenderop.system.
Примечание: для packets требуется установленный ProtocolLib.
- /vdo panic [on|off]
Режим минимальной нагрузки: оставляет только rate-limit пакетов; отключает ML и ML-интеграцию.
Доступ: консоль или permission vitalitydefenderop.system.
3.2 AdminAuth
- /vdo setadminpassword <пароль>
Сохраняет bcrypt-хеш в config.yml (admin_auth.password.hash).
Доступ: консоль или permission vitalitydefenderop.system.
- /vdo loginadmin <пароль>
Завершает ожидающую аутентификацию (AUTH_PENDING) и создаёт сессию.
Доступ: игрок (при запросе пароля).
- /vdo cancel
Отмена ожидания пароля и восстановление состояния (после freeze).
Доступ: игрок.
3.3 ML
- /vdo ml status
Выводит реальные данные: tracked count, thresholds, decay/cooldowns, топ игроков по score.
Доступ: консоль/system или vitalitydefenderop.admin.
- /vdo ml train
В эвристическом режиме сохраняет baseline-снимок в models/neuralguard_baseline.json.
Доступ: консоль/system или vitalitydefenderop.admin.
- /vdo ml falsepositive [игрок]
Сбрасывает score и включает временное подавление (suppress) для игрока.
Если игрок не указан: для себя (только из игры).
Доступ: консоль/system или vitalitydefenderop.admin.
4) Права (permissions)
Определены в plugin.yml:
- vitalitydefenderop.admin
Доступ к административным подкомандам (/vdo status, /vdo ml status|train|falsepositive) (по умолчанию: op).
- vitalitydefenderop.system
Системный уровень: setadminpassword/reload/toggle/panic.
По умолчанию false (включать вручную через LuckPerms/PEX и т.д.).
- vitalitydefenderop.bypass.auth
Обход AdminAuth (не будет запрашивать пароль).
- vitalitydefenderop.bypass.ml
Обход ML-анализатора.
- vitalitydefenderop.bypass.watchdog
Нельзя кикнуть действиями watchdog (KICK_ADMINS), но события всё равно логируются.
5) Модули и логика работы
5.1 SecurityLogger (plugins/VitalityDefenderOP/.secure/security.log)
- Папка plugins/VitalityDefenderOP/.secure/ создаётся автоматически.
- Запись происходит через очередь + поток, чтобы не блокировать main thread.
- Есть ограничение размера очереди (punishments.security_log.queue_capacity). При переполнении старые записи вытесняются.
- Опциональное AES-шифрование строк (punishments.security_log.encrypt).
5.2 AdminAuth (защита опасных команд)
Конфигурация:
- admin_auth.enabled: true/false
- admin_auth.password.hash: bcrypt-хеш (заполняется через /vdo setadminpassword)
- admin_auth.session.duration_minutes: длительность сессии
- admin_auth.session.bind_to_ip: привязка к IP (при смене IP сессия считается недействительной)
- admin_auth.input.timeout_seconds: таймаут ожидания пароля
- admin_auth.input.max_attempts: максимум попыток
- admin_auth.input.freeze_player: "заморозка" игрока (walkSpeed/flySpeed = 0 с восстановлением)
- admin_auth.punish.ip_ban_enabled: бан IP при провале (через Bukkit BanList Type.IP; fallback в .secure/ip_bans.txt)
Триггеры:
- admin_auth.trigger_commands: список regex-правил вида:
- pattern: "op .*"
level: 3
Плагин сравнивает с командной строкой без ведущего "/" и в lower-case.
Важно: используется matcher.matches(), поэтому pattern должен покрывать всю строку (часто нужен ".*" или шаблон с аргументами).
Сессии:
- Хранятся по UUID в памяти, с expiry по времени.
- Уровень (level) сохраняется как "минимально подтверждённый уровень" (по триггеру).
AUTH_PENDING:
- При требовании пароля игрок попадает в pending-состояние:
- чат блокируется;
- команды блокируются, кроме /vdo loginadmin и /vdo cancel;
- если включён freeze_player: скорость ходьбы/полёта фиксируется и восстанавливается после успеха/отмены/таймаута.
- По истечении timeout_seconds игрок кикается и событие пишется в security.log.
5.3 PacketProtection (ProtocolLib)
Работает только если установлен ProtocolLib и включено packet_protection.protocolLib_integration: true.
Что слушаем:
- CUSTOM_PAYLOAD
- WINDOW_CLICK
- SET_CREATIVE_SLOT
- UPDATE_SIGN
- TAB_COMPLETE
- CHAT
Rate-limit:
- На каждого игрока применяется token-bucket лимитер:
packet_protection.rate_limit.max_packets_per_second + burst_allowance.
- При превышении пакет отменяется, событие пишется в лог.
- При многократных превышениях в окне violation_window_seconds игрок кикается.
Crashing checks (базовые):
- sign: ограничение длины строк.
- book (через предмет в WINDOW_CLICK/SET_CREATIVE_SLOT): лимит страниц и общего числа символов.
- tab-complete/chat: лимит длины строки.
Интеграция с ML:
- packet_protection.ml_integration.enabled: true/false
- Если ML выдаёт verdict PUNISH/CRITICAL: пакет отменяется; по настройке kick_enabled игрок кикается.
Panic mode:
- В panic режиме оставляется только rate-limit (другие проверки отключаются).
5.4 NeuralGuardEngine (эвристика, безопасная)
- Score 0.0..1.0 для игрока, с decay по half-life (machine_learning.decay.half_life_seconds).
- Разделение на уровни действия: WARN / PUNISH / CRITICAL.
- Cooldown для WARN и PUNISH (machine_learning.cooldown.*) чтобы не спамить действиями.
- /vdo ml falsepositive сбрасывает score и включает suppress (machine_learning.false_positive.suppress_seconds).
- Состояние сохраняется в models/neuralguard_state.json.
5.5 WatchdogSystem (anti-bypass + checksum)
Конфигурация:
- security.watchdog.enabled
- security.watchdog.check_interval_ms
- security.watchdog.action: LOG|KICK_ADMINS|DISABLE_MODULES|SHUTDOWN
- security.watchdog.jar_checksum.enabled
- security.watchdog.jar_checksum.create_if_missing
Проверки:
- Плагин активен (Bukkit считает plugin enabled).
- ClassLoader не поменялся.
- SHA-256 checksum JAR: при первом запуске создаёт .secure/jar_checksum.sha256 (если create_if_missing=true).
Действия при срабатывании:
- LOG: только лог.
- KICK_ADMINS: кик игроков с op/vitalitydefenderop.admin (кроме bypass.watchdog).
- DISABLE_MODULES: включает Panic (минимум нагрузки).
- SHUTDOWN: корректный Bukkit.shutdown().
AntiBypassListener:
- Блокирует команды выгрузки/disable и /reload (/rl) по правилам из config.
- Логирует попытки.
- При N попытках с одного IP в окне времени может триггерить watchdog.action (escalate_*).
6) Файлы и директории
plugins/VitalityDefenderOP/
- config.yml
- models/
- neuralguard_state.json
- neuralguard_baseline.json
- .secure/
- security.log
- jar_checksum.sha256
- ip_bans.txt (fallback, если BanList Type.IP недоступен)
7) Проверка соответствия расширенному ТЗ (важно: это честный статус)
Реализовано (в текущей сборке):
- AdminAuth: bcrypt-хеш в config.yml, проверка BCrypt.checkpw(), pending-состояние, таймаут с киком, сессии по UUID с expiry, bind_to_ip, /vdo cancel, IP ban (опционально).
- PacketProtection: ProtocolLib API напрямую, ограниченный список PacketType, per-player rate-limit, cancel+log, kick при повторе, базовые crasher-checks, ML интеграция по конфигу.
- SecurityLogger: .secure/ создаётся, очередь с лимитом, стабильное завершение.
- Watchdog: отдельный поток, action через конфиг, без Runtime.halt(1), jar checksum с авто-созданием.
- AntiBypassListener регистрируется в onEnable при включении anti_bypass.
Не реализовано (из большого enterprise-списка, требует отдельной разработки):
- Multi-release JAR и автодетект Java 8–25.
- Гарантированная совместимость Minecraft 1.13–1.21.11 и специфические API каждого ядра (Folia RegionScheduler и т.д.).
- Полноценный "Adaptive Load Balancer" (throttle по TPS), async Netty packet processor, отдельные пулы потоков для ML.
- Реальная нейросеть TensorFlow Lite/DL4J, обучение на миллионах пакетов и заявленная точность.
- Полная "заморозка" игрока на уровне всех действий/ивентов (инвентарь/взаимодействия/урон/телепорты и т.д.).
- ConsoleSanitizer (фильтрация вывода консоли) и защита от утечек пароля в сторонние плагины.
- Полный набор crasher-checks (chunk/entity/particle/sound/NBT-depth и т.д.) и whitelist каналов payload.
- Привязка к экономикам/Vault thresholds, NBT trigger patterns, item triggers (в текущей версии это не подключено к игровым событиям).
8) Рекомендации по эксплуатации
- Сразу задайте пароль через консоль и храните доступ к vitalitydefenderop.system в узком кругу.
- Не используйте агрессивные наказания (перманентные IP bans) без понимания последствий для игроков за NAT/VPN.
- Для защиты пакетов ставьте актуальный ProtocolLib; при нестандартных версиях ядра тестируйте на копии.
by - https://t.me/Sercl_Studio
Версия: 1.0.0
Назначение
- Защита опасных административных действий через дополнительную аутентификацию (пароль + сессия).
- Базовая защита от краш-пакетов и спама пакетов через ProtocolLib (если установлен).
- Журналирование событий безопасности в защищённый лог.
- Watchdog с безопасным поведением (без Runtime.halt(1) по умолчанию).
1) Требования и совместимость (текущее состояние реализации)
- Minecraft API: Spigot/Paper 1.13.2+ (плагин использует Bukkit API; совместимость с 1.14–1.21 зависит от конкретного ядра и тестов).
- Java: 8+ (код написан под Java 8).
- ProtocolLib: опционально; требуется для модуля packet_protection.
Важно: плагин компилируется с API ProtocolLib 5.x; с 4.x фактическая совместимость не гарантируется без отдельного слоя совместимости.
2) Установка и быстрый старт
1. Поместите JAR в plugins/VitalityDefenderOP.jar.
2. Запустите сервер, чтобы создался plugins/VitalityDefenderOP/config.yml.
3. Установите админ-пароль:
/vdo setadminpassword <пароль>
Команда доступна только из консоли или с permission vitalitydefenderop.system.
4. Проверьте статус:
/vdo status
3) Команды
Команда плагина: /vitalitydefenderop
Алиасы: /vdef, /vdo
3.1 Основные
- /vdo status
Показывает TPS, состояние Panic, и статусы модулей (Auth/ML/Packets/Watchdog).
Доступ: консоль/system или vitalitydefenderop.admin.
- /vdo reload
Перезагрузка config.yml и перезапуск/остановка модулей по настройкам.
Доступ: консоль или permission vitalitydefenderop.system.
- /vdo toggle <auth|ml|packets|watchdog> [on|off]
Включает/выключает модуль во время работы (runtime) где это возможно.
Доступ: консоль или permission vitalitydefenderop.system.
Примечание: для packets требуется установленный ProtocolLib.
- /vdo panic [on|off]
Режим минимальной нагрузки: оставляет только rate-limit пакетов; отключает ML и ML-интеграцию.
Доступ: консоль или permission vitalitydefenderop.system.
3.2 AdminAuth
- /vdo setadminpassword <пароль>
Сохраняет bcrypt-хеш в config.yml (admin_auth.password.hash).
Доступ: консоль или permission vitalitydefenderop.system.
- /vdo loginadmin <пароль>
Завершает ожидающую аутентификацию (AUTH_PENDING) и создаёт сессию.
Доступ: игрок (при запросе пароля).
- /vdo cancel
Отмена ожидания пароля и восстановление состояния (после freeze).
Доступ: игрок.
3.3 ML
- /vdo ml status
Выводит реальные данные: tracked count, thresholds, decay/cooldowns, топ игроков по score.
Доступ: консоль/system или vitalitydefenderop.admin.
- /vdo ml train
В эвристическом режиме сохраняет baseline-снимок в models/neuralguard_baseline.json.
Доступ: консоль/system или vitalitydefenderop.admin.
- /vdo ml falsepositive [игрок]
Сбрасывает score и включает временное подавление (suppress) для игрока.
Если игрок не указан: для себя (только из игры).
Доступ: консоль/system или vitalitydefenderop.admin.
4) Права (permissions)
Определены в plugin.yml:
- vitalitydefenderop.admin
Доступ к административным подкомандам (/vdo status, /vdo ml status|train|falsepositive) (по умолчанию: op).
- vitalitydefenderop.system
Системный уровень: setadminpassword/reload/toggle/panic.
По умолчанию false (включать вручную через LuckPerms/PEX и т.д.).
- vitalitydefenderop.bypass.auth
Обход AdminAuth (не будет запрашивать пароль).
- vitalitydefenderop.bypass.ml
Обход ML-анализатора.
- vitalitydefenderop.bypass.watchdog
Нельзя кикнуть действиями watchdog (KICK_ADMINS), но события всё равно логируются.
5) Модули и логика работы
5.1 SecurityLogger (plugins/VitalityDefenderOP/.secure/security.log)
- Папка plugins/VitalityDefenderOP/.secure/ создаётся автоматически.
- Запись происходит через очередь + поток, чтобы не блокировать main thread.
- Есть ограничение размера очереди (punishments.security_log.queue_capacity). При переполнении старые записи вытесняются.
- Опциональное AES-шифрование строк (punishments.security_log.encrypt).
5.2 AdminAuth (защита опасных команд)
Конфигурация:
- admin_auth.enabled: true/false
- admin_auth.password.hash: bcrypt-хеш (заполняется через /vdo setadminpassword)
- admin_auth.session.duration_minutes: длительность сессии
- admin_auth.session.bind_to_ip: привязка к IP (при смене IP сессия считается недействительной)
- admin_auth.input.timeout_seconds: таймаут ожидания пароля
- admin_auth.input.max_attempts: максимум попыток
- admin_auth.input.freeze_player: "заморозка" игрока (walkSpeed/flySpeed = 0 с восстановлением)
- admin_auth.punish.ip_ban_enabled: бан IP при провале (через Bukkit BanList Type.IP; fallback в .secure/ip_bans.txt)
Триггеры:
- admin_auth.trigger_commands: список regex-правил вида:
- pattern: "op .*"
level: 3
Плагин сравнивает с командной строкой без ведущего "/" и в lower-case.
Важно: используется matcher.matches(), поэтому pattern должен покрывать всю строку (часто нужен ".*" или шаблон с аргументами).
Сессии:
- Хранятся по UUID в памяти, с expiry по времени.
- Уровень (level) сохраняется как "минимально подтверждённый уровень" (по триггеру).
AUTH_PENDING:
- При требовании пароля игрок попадает в pending-состояние:
- чат блокируется;
- команды блокируются, кроме /vdo loginadmin и /vdo cancel;
- если включён freeze_player: скорость ходьбы/полёта фиксируется и восстанавливается после успеха/отмены/таймаута.
- По истечении timeout_seconds игрок кикается и событие пишется в security.log.
5.3 PacketProtection (ProtocolLib)
Работает только если установлен ProtocolLib и включено packet_protection.protocolLib_integration: true.
Что слушаем:
- CUSTOM_PAYLOAD
- WINDOW_CLICK
- SET_CREATIVE_SLOT
- UPDATE_SIGN
- TAB_COMPLETE
- CHAT
Rate-limit:
- На каждого игрока применяется token-bucket лимитер:
packet_protection.rate_limit.max_packets_per_second + burst_allowance.
- При превышении пакет отменяется, событие пишется в лог.
- При многократных превышениях в окне violation_window_seconds игрок кикается.
Crashing checks (базовые):
- sign: ограничение длины строк.
- book (через предмет в WINDOW_CLICK/SET_CREATIVE_SLOT): лимит страниц и общего числа символов.
- tab-complete/chat: лимит длины строки.
Интеграция с ML:
- packet_protection.ml_integration.enabled: true/false
- Если ML выдаёт verdict PUNISH/CRITICAL: пакет отменяется; по настройке kick_enabled игрок кикается.
Panic mode:
- В panic режиме оставляется только rate-limit (другие проверки отключаются).
5.4 NeuralGuardEngine (эвристика, безопасная)
- Score 0.0..1.0 для игрока, с decay по half-life (machine_learning.decay.half_life_seconds).
- Разделение на уровни действия: WARN / PUNISH / CRITICAL.
- Cooldown для WARN и PUNISH (machine_learning.cooldown.*) чтобы не спамить действиями.
- /vdo ml falsepositive сбрасывает score и включает suppress (machine_learning.false_positive.suppress_seconds).
- Состояние сохраняется в models/neuralguard_state.json.
5.5 WatchdogSystem (anti-bypass + checksum)
Конфигурация:
- security.watchdog.enabled
- security.watchdog.check_interval_ms
- security.watchdog.action: LOG|KICK_ADMINS|DISABLE_MODULES|SHUTDOWN
- security.watchdog.jar_checksum.enabled
- security.watchdog.jar_checksum.create_if_missing
Проверки:
- Плагин активен (Bukkit считает plugin enabled).
- ClassLoader не поменялся.
- SHA-256 checksum JAR: при первом запуске создаёт .secure/jar_checksum.sha256 (если create_if_missing=true).
Действия при срабатывании:
- LOG: только лог.
- KICK_ADMINS: кик игроков с op/vitalitydefenderop.admin (кроме bypass.watchdog).
- DISABLE_MODULES: включает Panic (минимум нагрузки).
- SHUTDOWN: корректный Bukkit.shutdown().
AntiBypassListener:
- Блокирует команды выгрузки/disable и /reload (/rl) по правилам из config.
- Логирует попытки.
- При N попытках с одного IP в окне времени может триггерить watchdog.action (escalate_*).
6) Файлы и директории
plugins/VitalityDefenderOP/
- config.yml
- models/
- neuralguard_state.json
- neuralguard_baseline.json
- .secure/
- security.log
- jar_checksum.sha256
- ip_bans.txt (fallback, если BanList Type.IP недоступен)
7) Проверка соответствия расширенному ТЗ (важно: это честный статус)
Реализовано (в текущей сборке):
- AdminAuth: bcrypt-хеш в config.yml, проверка BCrypt.checkpw(), pending-состояние, таймаут с киком, сессии по UUID с expiry, bind_to_ip, /vdo cancel, IP ban (опционально).
- PacketProtection: ProtocolLib API напрямую, ограниченный список PacketType, per-player rate-limit, cancel+log, kick при повторе, базовые crasher-checks, ML интеграция по конфигу.
- SecurityLogger: .secure/ создаётся, очередь с лимитом, стабильное завершение.
- Watchdog: отдельный поток, action через конфиг, без Runtime.halt(1), jar checksum с авто-созданием.
- AntiBypassListener регистрируется в onEnable при включении anti_bypass.
Не реализовано (из большого enterprise-списка, требует отдельной разработки):
- Multi-release JAR и автодетект Java 8–25.
- Гарантированная совместимость Minecraft 1.13–1.21.11 и специфические API каждого ядра (Folia RegionScheduler и т.д.).
- Полноценный "Adaptive Load Balancer" (throttle по TPS), async Netty packet processor, отдельные пулы потоков для ML.
- Реальная нейросеть TensorFlow Lite/DL4J, обучение на миллионах пакетов и заявленная точность.
- Полная "заморозка" игрока на уровне всех действий/ивентов (инвентарь/взаимодействия/урон/телепорты и т.д.).
- ConsoleSanitizer (фильтрация вывода консоли) и защита от утечек пароля в сторонние плагины.
- Полный набор crasher-checks (chunk/entity/particle/sound/NBT-depth и т.д.) и whitelist каналов payload.
- Привязка к экономикам/Vault thresholds, NBT trigger patterns, item triggers (в текущей версии это не подключено к игровым событиям).
8) Рекомендации по эксплуатации
- Сразу задайте пароль через консоль и храните доступ к vitalitydefenderop.system в узком кругу.
- Не используйте агрессивные наказания (перманентные IP bans) без понимания последствий для игроков за NAT/VPN.
- Для защиты пакетов ставьте актуальный ProtocolLib; при нестандартных версиях ядра тестируйте на копии.
by - https://t.me/Sercl_Studio

