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.
- Télécharger MCSec.jar and put it in the
pluginsfolder of your proxy (best) or server. - Start the server once, then put your API key in
plugins/MCSec/config.properties(api-key=). - Run
/mcsec reload./mcsec statusshows 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
| category | Nom | Ce que c’est |
|---|---|---|
bot-join-flood | Vague de bots | Beaucoup de faux joueurs qui se connectent depuis une adresse ou une plage. |
ping-flood | Flood de ping et de statut | Pings de liste de serveurs envoyés des centaines de fois par seconde. |
query-flood | Flood de requêtes query | Paquets UDP query utilisés pour charger ou réfléchir le trafic. |
ddos | Flood réseau (DDoS) | Trafic brut destiné à mettre le serveur hors ligne. |
crash-exploit | Exploit de crash | Paquets conçus pour faire planter le serveur : livres, NBT, chunks. |
packet-spam | Spam de paquets | Paquets de mouvement, de chat ou de clic bien au-dessus de la normale. |
login-brute-force | Force brute sur le login | Beaucoup de mauvais mots de passe sur /login ou /register. |
rcon-brute-force | Force brute RCON | Essais de mots de passe sur le port RCON. |
server-scanner | Scanner de serveurs | Bots qui parcourent internet à la recherche de serveurs ouverts. |
port-scan | Scan de ports | Sondage de nombreux ports sur la même machine. |
forwarding-bypass | Contournement du proxy | Connexion directe au backend pour éviter BungeeCord ou Velocity. |
remote-code | Tentative de code à distance | Log4Shell et charges similaires dans les pseudos ou le chat. |
chat-spam | Bots de spam dans le chat | Bots qui postent pubs, liens ou insultes juste après leur arrivée. |
proxy-abuse | Abus de proxy ouvert ou de VPN | Nœuds de sortie utilisés pour des attaques répétées ou pour contourner les bans. |
website-attack | Attaque du site web | Attaques contre le site, la boutique ou les pages de vote du serveur. |
panel-attack | Attaque du panel d’hébergement | Essais 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.
| format | Ce que tu obtiens |
|---|---|
json | The default: every address with its reference, score, category and last report. |
txt | Une adresse par ligne. |
csv | A spreadsheet: ip, ref, score, category, last_report. |
ipset | For ipset restore: sets mcsec (IPv4) and mcsec6 (IPv6). |
nftables | For nft -f: a table inet mcsec that drops listed addresses. |
iptables, ip6tables | For iptables-restore -n: a chain MCSEC; jump to it from INPUT. |
crowdsec | For 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 -
Appels Pro et Network
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.