MCSec

API

Pobieraj listę na serwer, sprawdzaj pojedyncze adresy i zgłaszaj to, co blokuje serwer. Każde wywołanie to JSON przez HTTPS.

Plugin 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. Pobierz 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.

Twój klucz

Użyj klucza API serwera z Panelu → API i integracje. Z MCSec mogą korzystać tylko serwery opublikowane na CraftRank. Wysyłaj klucz w nagłówku, nigdy w adresie:

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

Dwadzieścia błędnych kluczy z jednego adresu w dziesięć minut i ten adres czeka dziesięć minut.

Pobierz listę

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

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

Sprawdź jeden adres

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

Do 120 sprawdzeń na minutę. Odpowiedź zawiera listed, score, ref i kategorie.

Zgłoś atakującego

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

Aby wysłać wiele naraz, wyślij do 100 w jednym wywołaniu:

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

Zgłaszaj tylko to, co twój serwer sam zablokował. Opisz dowód w kilku słowach: co widziano i ile. Nie wklejaj samego ataku (payloady, ciągi exploitów) ani adresów, linków czy e-maili; są usuwane, bo dowody są publiczne. Zgłoszenia tego samego adresu i kategorii w ciągu dziesięciu minut liczą się jako jedno. Do 2000 zgłoszeń na godzinę na serwer. Zbieraj zgłoszenia i wysyłaj je przez bulk co kilka sekund zamiast jednego wywołania na zgłoszenie: ponad ok. 90 wywołań na minutę z jednego adresu spowalnia zapora strony.

Kategorie

categoryNazwaCo to jest
bot-join-floodZalew botówWielu fałszywych graczy wchodzących z jednego adresu lub zakresu.
ping-floodFlood pingów i statusuPingi listy serwerów wysyłane setki razy na sekundę.
query-floodFlood zapytań queryPakiety UDP query używane do obciążania lub odbijania ruchu.
ddosFlood sieciowy (DDoS)Surowy ruch mający wyłączyć serwer.
crash-exploitExploit crashującyPakiety zrobione, by scrashować serwer: książki, NBT, chunki.
packet-spamSpam pakietamiPakiety ruchu, czatu lub kliknięć daleko ponad normę.
login-brute-forceBrute force logowaniaWiele błędnych haseł przy /login lub /register.
rcon-brute-forceBrute force RCONZgadywanie hasła na porcie RCON.
server-scannerSkaner serwerówBoty przeczesujące internet w poszukiwaniu otwartych serwerów.
port-scanSkanowanie portówSprawdzanie wielu portów na tej samej maszynie.
forwarding-bypassObejście proxyWejście bezpośrednio na backend z pominięciem BungeeCord lub Velocity.
remote-codePróba zdalnego koduLog4Shell i podobne ładunki w nickach lub czacie.
chat-spamBoty spamujące na czacieBoty publikujące reklamy, linki lub obelgi zaraz po wejściu.
proxy-abuseNadużycie otwartego proxy lub VPNWęzły wyjściowe używane do powtarzanych ataków lub omijania banów.
website-attackAtak na stronęAtaki na stronę, sklep lub strony głosowania serwera.
panel-attackAtak na panel hostinguZgadywanie loginów lub exploity przeciw panelom gier.

Jak działa wynik

Każdy serwer, który zgłosił adres w ostatnich 30 dniach, podnosi jego wynik. Serwer liczy się bardziej, gdy inne serwery zgłaszają te same adresy (jego zaufanie), gdy zgłosił adres kilka razy i gdy zgłoszenia są świeże; zgłoszenie sprzed tygodnia liczy się w połowie. Exploity crashujące i próby zdalnego kodu liczą się bardziej niż skany.

  • Jeden serwer nigdy nie podniesie adresu powyżej 55. Odrzucenie wymaga kilku serwerów.
  • Łącza domowe i komórkowe zostają na poziomie 60 lub niżej i znikają z listy po 3 dniach bez zgłoszeń, bo ich adresy się zmieniają.
  • Od 40 trafia na listę. Od 75 odrzucają go serwery z ustawieniem domyślnym.
  • Wpis wygasa po 14 dniach bez zgłoszeń.

Formaty

Dodaj format= do wywołania listy. port=25565 ogranicza formaty zapory do jednego portu.

formatCo dostajesz
jsonThe default: every address with its reference, score, category and last report.
txtJeden adres w wierszu.
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.

Błędy

401 bad_key, 403 not_active, 403 blocked, 400 bad_ip / bad_category / not_reportable (adresy prywatne, wyszukiwarki i Cloudflare nigdy nie trafiają na listę), 402 plan_required, 429 rate_limited z nagłówkiem Retry-After.