MCSec

API

Lade die Liste in deinen Server, prüfe einzelne Adressen und melde, was dein Server blockt. Jeder Aufruf ist JSON über HTTPS.

Das MCSec-Plugin

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. herunterladen
  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.

Dein Schlüssel

Nutze den API-Schlüssel deines Servers unter Panel → API & Integrationen. Nur Server, die auf CraftRank live sind, können die MCSec nutzen. Sende den Schlüssel in einem Header, nie in der Adresse:

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

Zwanzig falsche Schlüssel von einer Adresse in zehn Minuten, und diese Adresse muss zehn Minuten warten.

Liste laden

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 Formate.

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

Eine Adresse prüfen

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

Bis zu 120 Abfragen pro Minute. Die Antwort enthält listed, score, ref und die Kategorien.

Einen Angreifer melden

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

Für viele auf einmal sende bis zu 100 in einem Aufruf:

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}]}

Melde nur, was dein Server selbst geblockt hat. Schreib den Beleg in wenigen Worten: was gesehen wurde und wie viel. Füge nicht den Angriff selbst ein (Payloads, Exploit-Strings) und keine Adressen, Links oder E-Mail-Adressen; sie werden entfernt, weil Belege öffentlich sind. Meldungen derselben Adresse und Kategorie innerhalb von zehn Minuten zählen als eine. Bis zu 2.000 Meldungen pro Stunde und Server. Sammle Meldungen und sende sie alle paar Sekunden mit bulk statt einem Aufruf pro Meldung: Mehr als etwa 90 Aufrufe pro Minute von einer Adresse bremst die Firewall der Website.

Kategorien

categoryNameWas es ist
bot-join-floodBot-Join-FlutViele falsche Spieler, die von einer Adresse oder einem Bereich joinen.
ping-floodPing- und Status-FlutServerlisten-Pings, hunderte Male pro Sekunde.
query-floodQuery-FlutUDP-Query-Pakete, um Last zu erzeugen oder Verkehr zu reflektieren.
ddosNetzwerkflut (DDoS)Roher Datenverkehr, der den Server offline nehmen soll.
crash-exploitCrash-ExploitPakete, die den Server abstürzen lassen sollen: Bücher, NBT, Chunks.
packet-spamPaket-SpamBewegungs-, Chat- oder Klickpakete weit über dem Normalen.
login-brute-forceLogin-Brute-ForceViele falsche Passwörter bei /login oder /register.
rcon-brute-forceRCON-Brute-ForcePasswortraten am RCON-Port.
server-scannerServer-ScannerBots, die das Internet nach offenen Servern absuchen.
port-scanPortscanAbtasten vieler Ports auf derselben Maschine.
forwarding-bypassForwarding-UmgehungDirekter Join auf den Backend-Server, um BungeeCord oder Velocity zu umgehen.
remote-codeRemote-Code-VersuchLog4Shell und ähnliche Payloads in Namen oder Chat.
chat-spamChat-Spam-BotsBots, die direkt nach dem Join Werbung, Links oder Beleidigungen posten.
proxy-abuseMissbrauch offener Proxys oder VPNsAusgangsknoten für wiederholte Angriffe oder Bann-Umgehung.
website-attackAngriff auf die WebsiteAngriffe auf Website, Shop oder Vote-Seiten des Servers.
panel-attackAngriff auf das Hosting-PanelLogin-Raten oder Exploits gegen Game-Panels.

So funktioniert der Wert

Jeder Server, der eine Adresse in den letzten 30 Tagen gemeldet hat, erhöht ihren Wert. Ein Server zählt mehr, wenn andere Server dieselben Adressen melden (sein Vertrauen), wenn er die Adresse mehrmals gemeldet hat und wenn die Meldungen neu sind; eine Woche alte Meldung zählt halb. Crash-Exploits und Remote-Code-Versuche zählen mehr als Scans.

  • Ein einzelner Server kann eine Adresse nie über 55 bringen. Zum Ablehnen braucht es mehrere Server.
  • Heim- und Mobilverbindungen bleiben bei 60 oder darunter und verlassen die Liste nach 3 Tagen ohne Meldungen, weil sich ihre Adressen ändern.
  • Ab 40 gelistet. Ab 75 lehnen Server mit der Standardeinstellung ab.
  • Ein Eintrag endet nach 14 Tagen ohne Meldungen.

Formate

Füge format= zum Blocklist-Aufruf hinzu. port=25565 beschränkt die Firewall-Formate auf einen Port.

formatDas bekommst du
jsonThe default: every address with its reference, score, category and last report.
txtEine Adresse pro Zeile.
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.

Fehler

401 bad_key, 403 not_active, 403 blocked, 400 bad_ip / bad_category / not_reportable (private Adressen, Suchmaschinen und Cloudflare werden nie gelistet), 402 plan_required, 429 rate_limited mit einem Retry-After-Header.