Как защитить сервер от гриферов
Подготовка окружения на proxify.cloud
- Войдите в панель proxify.cloud и выберите ваш выделенный сервер с Ubuntu.
- Откройте консоль (VNC/SSH) или подключитесь по SSH с локальной машины:
ssh root@<IP_ВАШЕГО_СЕРВЕРА>
- Обновите систему и установите базовые утилиты:
apt update && apt upgrade -y
apt install -y ufw fail2ban curl wget git htop tmux
Настройка файрвола (UFW)
- Запретите всё входящее, разрешите исходящее и SSH (порт 22 или ваш кастомный):
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp comment 'SSH'
- Откройте порт игрового сервера (по умолчанию 25565 для Java, 19132 UDP для Bedrock):
ufw allow 25565/tcp comment 'Minecraft Java'
ufw allow 19132/udp comment 'Minecraft Bedrock'
- Если используете RCON, откройте его только для локальной сети или VPN:
ufw allow from 10.0.0.0/8 to any port 25575 proto tcp comment 'RCON internal'
- Включите файрвол:
ufw enable
ufw status verbose
Настройка Fail2Ban для защиты SSH и RCON
- Создайте локальную конфигурацию:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
- Отредактируйте
/etc/fail2ban/jail.local:[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600
[minecraft-rcon]
enabled = true
port = 25575
filter = minecraft-rcon
logpath = /opt/minecraft/logs/latest.log
maxretry = 5
bantime = 7200
findtime = 300
- Создайте фильтр для RCON в
/etc/fail2ban/filter.d/minecraft-rcon.conf:[Definition]
failregex = ^.*RCON connection attempt from <HOST> failed.*$
^.*Invalid password from <HOST>.*$
ignoreregex =
- Перезапустите Fail2Ban:
systemctl restart fail2ban
fail2ban-client status
Создание выделенного пользователя для сервера
- Создайте пользователя
mc без sudo-прав:adduser --disabled-password --gecos "" mc
- Переключитесь на пользователя и настройте SSH-ключ (опционально, но рекомендуется):
su - mc
mkdir -p ~/.ssh
chmod 700 ~/.ssh
# Вставьте свой публичный ключ в authorized_keys
nano ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
exit
Установка Java и ядра сервера (Paper)
- Установите Java 21 (актуально для Minecraft 1.20+):
apt install -y openjdk-21-jre-headless
java -version
- Создайте директорию сервера и скачайте последнюю сборку Paper:
mkdir -p /opt/minecraft
chown mc:mc /opt/minecraft
su - mc
cd /opt/minecraft
wget -O paper.jar "https://api.papermc.io/v2/projects/paper/versions/1.21.1/builds/123/downloads/paper-1.21.1-123.jar"
# Замените версию и билд на актуальные с https://papermc.io/downloads
Базовая конфигурация server.properties
- Запустите сервер один раз для генерации файлов, затем остановите (Ctrl+C):
java -Xms2G -Xmx2G -jar paper.jar --nogui
- Отредактируйте
/opt/minecraft/server.properties:# Сеть
server-ip=0.0.0.0
server-port=25565
enable-rcon=true
rcon.port=25575
rcon.password=SuperStrongPassword123!
broadcast-rcon-to-ops=false
# Безопасность
online-mode=true
enforce-whitelist=true
white-list=true
max-players=50
view-distance=6
simulation-distance=4
# Античит/производительность
spawn-protection=16
max-tick-time=60000
- Создайте
whitelist.json и ops.json через команды в консоли сервера или вручную:# В консоли сервера:
whitelist add <ник>
op <ник>
Установка и настройка плагинов защиты
- Создайте папку плагинов и скачайте ключевые плагины (через
wget или загрузите через SFTP в панели proxify.cloud):cd /opt/minecraft/plugins
# CoreProtect — логирование блоков/контейнеров
wget -O CoreProtect.jar "https://ci.lucko.me/job/CoreProtect/lastSuccessfulBuild/artifact/coreprotect-bukkit/target/CoreProtect-22.2.jar"
# LuckPerms — права доступа
wget -O LuckPerms.jar "https://ci.lucko.me/job/LuckPerms/lastSuccessfulBuild/artifact/bukkit/loader/build/libs/LuckPerms-Bukkit-5.4.112.jar"
# WorldGuard + WorldEdit — регионы
wget -O WorldEdit.jar "https://dev.bukkit.org/projects/worldedit/files/latest"
wget -O WorldGuard.jar "https://dev.bukkit.org/projects/worldguard/files/latest"
# AntiCheat — NoCheatPlus или AAC
wget -O NoCheatPlus.jar "https://ci.nocheatplus.com/job/NoCheatPlus/lastSuccessfulBuild/artifact/NoCheatPlus.jar"
# LoginSecurity — 2FA для игроков
wget -O LoginSecurity.jar "https://github.com/LoginSecurity/LoginSecurity/releases/latest/download/LoginSecurity.jar"
- Запустите сервер для генерации конфигов плагинов, затем настройте их.
Настройка CoreProtect (/opt/minecraft/plugins/CoreProtect/config.yml)
use-mysql: false
log-block-break: true
log-block-place: true
log-container-transactions: true
log-player-sessions: true
rollback-limit: 10000
Настройка WorldGuard — защита спавна
- В игре (как OP) создайте регион спавна:
//wand
# Выделите два угла кубоида вокруг спавна
/rg define spawn
/rg flag spawn build deny
/rg flag spawn pvp deny
/rg flag spawn chest-access deny
/rg flag spawn interact deny
/rg flag spawn block-break deny
/rg flag spawn block-place deny
/rg addmember spawn g:default
Настройка LuckPerms — минимальные права для default
- В консоли сервера:
/lp creategroup default
/lp group default permission set minecraft.command.spawn true
/lp group default permission set minecraft.command.home true
/lp group default permission set essentials.spawn true
/lp group default permission set essentials.home true
/lp group default permission set essentials.tpa true
/lp group default permission set essentials.tpaccept true
# Запрет опасных команд
/lp group default permission set minecraft.command.op false
/lp group default permission set minecraft.command.gamemode false
/lp group default permission set worldguard.region.bypass false
Настройка LoginSecurity (2FA)
- В
/opt/minecraft/plugins/LoginSecurity/config.yml:auth-type: "totp"
force-registration: true
session-timeout: 1440
Автозапуск через systemd
- Создайте unit-файл
/etc/systemd/system/minecraft.service:[Unit]
Description=Minecraft Paper Server
After=network.target
[Service]
User=mc
Group=mc
WorkingDirectory=/opt/minecraft
ExecStart=/usr/bin/java -Xms4G -Xmx4G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar paper.jar --nogui
Restart=on-failure
RestartSec=10
LimitNOFILE=100000
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
- Включите и запустите:
systemctl daemon-reload
systemctl enable minecraft
systemctl start minecraft
journalctl -u minecraft -f
Бэкапы через systemd-таймер
- Скрипт бэкапа
/opt/minecraft/backup.sh:#!/bin/bash
set -e
DATE=$(date +%F_%H-%M)
BACKUP_DIR="/opt/backups/minecraft"
mkdir -p "$BACKUP_DIR"
cd /opt/minecraft
tar --exclude='plugins/dynmap/web/tiles' -czf "$BACKUP_DIR/world_$DATE.tar.gz" world world_nether world_the_end plugins CoreProtect.db
find "$BACKUP_DIR" -type f -mtime +7 -delete
chmod +x /opt/minecraft/backup.sh
chown mc:mc /opt/minecraft/backup.sh
- Сервис
/etc/systemd/system/minecraft-backup.service:[Unit]
Description=Minecraft Backup
[Service]
Type=oneshot
User=mc
ExecStart=/opt/minecraft/backup.sh
- Таймер
/etc/systemd/system/minecraft-backup.timer:[Unit]
Description=Daily Minecraft Backup
[Timer] 03:00:00
Persistent=true
[Install]
WantedBy=timers.target
- Активируйте:
systemctl daemon-reload
systemctl enable
Комментарии (0)