MCSec

API

Récupère la liste sur ton serveur, vérifie des adresses une à une et signale ce que ton serveur bloque. Chaque appel est du JSON en HTTPS.

Le 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. Télécharger 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.

Ta clé

Utilise la clé API de ton serveur dans Panel → API et intégrations. Seuls les serveurs en ligne sur CraftRank peuvent utiliser la MCSec. Envoie la clé dans un en-tête, jamais dans l’adresse :

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

Vingt mauvaises clés depuis une adresse en dix minutes, et cette adresse attend dix minutes.

Récupérer la liste

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

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

Vérifier une adresse

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

Jusqu’à 120 vérifications par minute. La réponse contient listed, score, ref et les catégories.

Signaler un attaquant

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

Pour plusieurs à la fois, envoie jusqu’à 100 en un appel :

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

Signale seulement ce que ton serveur a bloqué lui-même. Écris la preuve en quelques mots : ce qui a été vu et combien. Ne colle pas l’attaque elle-même (payloads, chaînes d’exploit) ni d’adresses, liens ou e-mails ; ils sont retirés car la preuve est publique. Les signalements de la même adresse et catégorie en dix minutes comptent pour un. Jusqu’à 2 000 signalements par heure et par serveur. Regroupe les signalements et envoie-les avec bulk toutes les quelques secondes plutôt qu’un appel par signalement : au-delà d’environ 90 appels par minute depuis une adresse, le pare-feu du site ralentit.

Catégories

categoryNomCe que c’est
bot-join-floodVague de botsBeaucoup de faux joueurs qui se connectent depuis une adresse ou une plage.
ping-floodFlood de ping et de statutPings de liste de serveurs envoyés des centaines de fois par seconde.
query-floodFlood de requêtes queryPaquets UDP query utilisés pour charger ou réfléchir le trafic.
ddosFlood réseau (DDoS)Trafic brut destiné à mettre le serveur hors ligne.
crash-exploitExploit de crashPaquets conçus pour faire planter le serveur : livres, NBT, chunks.
packet-spamSpam de paquetsPaquets de mouvement, de chat ou de clic bien au-dessus de la normale.
login-brute-forceForce brute sur le loginBeaucoup de mauvais mots de passe sur /login ou /register.
rcon-brute-forceForce brute RCONEssais de mots de passe sur le port RCON.
server-scannerScanner de serveursBots qui parcourent internet à la recherche de serveurs ouverts.
port-scanScan de portsSondage de nombreux ports sur la même machine.
forwarding-bypassContournement du proxyConnexion directe au backend pour éviter BungeeCord ou Velocity.
remote-codeTentative de code à distanceLog4Shell et charges similaires dans les pseudos ou le chat.
chat-spamBots de spam dans le chatBots qui postent pubs, liens ou insultes juste après leur arrivée.
proxy-abuseAbus de proxy ouvert ou de VPNNœuds de sortie utilisés pour des attaques répétées ou pour contourner les bans.
website-attackAttaque du site webAttaques contre le site, la boutique ou les pages de vote du serveur.
panel-attackAttaque du panel d’hébergementEssais de connexion ou exploits contre les panels de jeu.

Comment fonctionne le score

Chaque serveur qui a signalé une adresse ces 30 derniers jours ajoute à son score. Un serveur pèse plus quand d’autres signalent les mêmes adresses (sa confiance), quand il a signalé l’adresse plusieurs fois et quand les signalements sont récents ; un signalement vieux d’une semaine compte moitié. Les exploits de crash et le code à distance comptent plus que les scans.

  • Un seul serveur ne peut jamais porter une adresse au-dessus de 55. Il faut plusieurs serveurs pour la refuser.
  • Les connexions domestiques et mobiles restent à 60 ou moins et quittent la liste après 3 jours sans signalement, car leurs adresses changent.
  • À partir de 40, listée. À partir de 75, refusée par les serveurs réglés par défaut.
  • Une fiche prend fin après 14 jours sans signalement.

Formats

Ajoute format= à l’appel de la liste. port=25565 limite les formats de pare-feu à un port.

formatCe que tu obtiens
jsonThe default: every address with its reference, score, category and last report.
txtUne adresse par ligne.
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.

Erreurs

401 bad_key, 403 not_active, 403 blocked, 400 bad_ip / bad_category / not_reportable (les adresses privées, les moteurs de recherche et Cloudflare ne sont jamais listés), 402 plan_required, 429 rate_limited avec un en-tête Retry-After.