MCSec

API

Загружайте список на сервер, проверяйте отдельные адреса и сообщайте о том, что блокирует сервер. Каждый вызов — JSON по HTTPS.

Плагин MCSec

The easiest way: one plugin for Spigot, Paper, BungeeCord, Waterfall and Velocity. It downloads the list, refuses listed addresses at login and reports join floods, ping floods, chat spam bots and crash books by itself.

  1. Скачать MCSec.jar and put it in the plugins folder of your proxy (best) or server.
  2. Start the server once, then put your API key in plugins/MCSec/config.properties (api-key=).
  3. Run /mcsec reload. /mcsec status shows the list size and what was refused and reported.

Commands (permission mcsec.admin): /mcsec status, /mcsec reload, /mcsec check <player|ip>, /mcsec report <player|ip> <category> [evidence]. Set mode=log to only watch for a while before refusing anyone.

Ваш ключ

Используйте API-ключ сервера из Панели → API и интеграции. Пользоваться MCSec могут только серверы, опубликованные на CraftRank. Отправляйте ключ в заголовке, а не в адресе:

X-API-Key: your-32-character-key

Двадцать неверных ключей с одного адреса за десять минут — и адрес ждёт десять минут.

Загрузить список

GET https://craftrank.org/api/mcsec?a=blocklist&min=75
GET https://craftrank.org/api/mcsec?a=blocklist&min=60&format=txt
GET https://craftrank.org/api/mcsec?a=blocklist&category=crash-exploit

min is the lowest confidence to include, 40 to 100 (default 75). format=txt gives one address per line; IPv6 entries are /64 ranges. Pull at most once a minute on Free (every 15 seconds on Pro, every 10 on Network); every few minutes is enough for most servers. Firewall formats are under Форматы.

{"min":75,"count":2,"generated":1793567000,
 "addresses":[{"ip":"203.0.113.7","ref":"MCT-7F3A9C","score":92,"category":"bot-join-flood","last":1793566880}, …]}

Проверить один адрес

GET https://craftrank.org/api/mcsec?a=check&ip=203.0.113.7

До 120 проверок в минуту. В ответе есть listed, score, ref и категории.

Сообщить об атакующем

POST https://craftrank.org/api/mcsec?a=report
ip=203.0.113.7&category=bot-join-flood&evidence=46 joins in 60 s with 46 names

Чтобы отправить много сразу, шлите до 100 за один вызов:

POST https://craftrank.org/api/mcsec?a=bulk
Content-Type: application/json

{"reports":[{"ip":"203.0.113.7","category":"crash-exploit","evidence":"oversized book packet, 2.1 MB","time":1793566880}]}

Сообщайте только о том, что ваш сервер заблокировал сам. Пишите доказательство в нескольких словах: что видели и сколько. Не вставляйте саму атаку (payload, строки эксплойтов), адреса, ссылки и e-mail — они удаляются, потому что доказательства публичны. Жалобы на один адрес и категорию в течение десяти минут считаются одной. До 2 000 жалоб в час на сервер. Собирайте жалобы и отправляйте их через bulk раз в несколько секунд, а не по вызову на жалобу: больше ~90 вызовов в минуту с одного адреса тормозит файрвол сайта.

Категории

categoryНазваниеЧто это
bot-join-floodНаплыв ботовМного фальшивых игроков заходят с одного адреса или диапазона.
ping-floodФлуд пингами и статусомПинги списка серверов сотни раз в секунду.
query-floodФлуд query-запросамиUDP-пакеты query для нагрузки или отражения трафика.
ddosСетевой флуд (DDoS)Сырой трафик, чтобы положить сервер.
crash-exploitКрэш-эксплойтПакеты для краша сервера: книги, NBT, чанки.
packet-spamСпам пакетамиПакеты движения, чата или кликов намного выше нормы.
login-brute-forceПодбор пароля при входеМного неверных паролей в /login или /register.
rcon-brute-forceПодбор пароля RCONПодбор пароля на порту RCON.
server-scannerСканер серверовБоты, прочёсывающие интернет в поисках открытых серверов.
port-scanСканирование портовПроверка множества портов на одной машине.
forwarding-bypassОбход проксиПрямой вход на бэкенд в обход BungeeCord или Velocity.
remote-codeПопытка удалённого кодаLog4Shell и похожие нагрузки в никах или чате.
chat-spamСпам-боты в чатеБоты, которые сразу после входа пишут рекламу, ссылки или оскорбления.
proxy-abuseЗлоупотребление открытым прокси или VPNВыходные узлы для повторных атак или обхода банов.
website-attackАтака на сайтАтаки на сайт, магазин или страницы голосования сервера.
panel-attackАтака на хостинг-панельПодбор входа или эксплойты против игровых панелей.

Как считается оценка

Каждый сервер, сообщивший об адресе за последние 30 дней, добавляет к его оценке. Сервер весит больше, когда другие серверы сообщают о тех же адресах (его доверие), когда он сообщал об адресе несколько раз и когда жалобы свежие; недельная жалоба весит вдвое меньше. Крэш-эксплойты и попытки удалённого кода весят больше, чем сканирование.

  • Один сервер не может поднять адрес выше 55. Для отклонения нужно несколько серверов.
  • Домашние и мобильные подключения остаются на 60 или ниже и покидают список через 3 дня без жалоб, потому что их адреса меняются.
  • От 40 — в списке. От 75 отклоняется серверами с настройкой по умолчанию.
  • Запись исчезает через 14 дней без жалоб.

Форматы

Добавьте format= к запросу списка. port=25565 ограничивает форматы файрвола одним портом.

formatЧто ты получаешь
jsonThe default: every address with its reference, score, category and last report.
txtОдин адрес на строку.
csvA spreadsheet: ip, ref, score, category, last_report.
ipsetFor ipset restore: sets mcsec (IPv4) and mcsec6 (IPv6).
nftablesFor nft -f: a table inet mcsec that drops listed addresses.
iptables, ip6tablesFor iptables-restore -n: a chain MCSEC; jump to it from INPUT.
crowdsecFor cscli decisions import -i file.json: 24-hour bans.
curl -s -H "X-API-Key: $KEY" "https://craftrank.org/api/mcsec?a=blocklist&min=75&format=nftables&port=25565" | nft -f -

These calls come with the paid plans.

GET  https://craftrank.org/api/mcsec?a=history&ip=203.0.113.7        (Pro)
GET  https://craftrank.org/api/mcsec?a=changes&since=0              (Network)
POST https://craftrank.org/api/mcsec?a=check_bulk   {"ips":["203.0.113.7", …]}  (Network, up to 500)

The changes feed returns addresses that joined or left the list, or crossed 75; pass the next number back as since. A call your plan does not include answers 402 plan_required.

Ошибки

401 bad_key, 403 not_active, 403 blocked, 400 bad_ip / bad_category / not_reportable (частные адреса, поисковики и Cloudflare никогда не попадают в список), 402 plan_required, 429 rate_limited с заголовком Retry-After.