Intégration de fail2ban
Transférez chaque adresse IP bannie par fail2ban sur votre serveur vers la liste noire de ReportedIP . Une petite action personnalisée appelle l'API de signalement à chaque bannissement, de sorte que votre pare-feu et la communauté se protègent mutuellement — ces mêmes données alimentent également le flux de la liste noire et la zone DNS/RBL.
report autorisation. Créez-en une gratuitement dans votre
tableau de bord; voir Authentification en matière de limites. N'indiquez que les adresses IP que votre propre serveur a effectivement détectées.Comment fonctionne fail2ban (en 30 secondes)
fail2ban surveille les fichiers journaux (ou le journal systemd). A filtre correspond aux
modèles d'attaque, un prison compte le nombre de correspondances par adresse IP au sein de findtime, et dès qu'une adresse IP
est détectée maxretry la prison gère son actions (bannissement + tout ce que vous ajoutez).
Nous ajoutons une deuxième action qui signale l'adresse IP bannie à ReportedIP.
1. Créer l'action de rapport
Enregistrer sous /etc/fail2ban/action.d/reportedip.conf. À chaque blocage, il envoie une requête POST contenant l'adresse IP bloquée, les
catégories de menaces et un bref commentaire à l'endpoint de signalement.
# /etc/fail2ban/action.d/reportedip.conf
[Definition]
actionstart =
actionstop =
actioncheck =
actionban = curl -sS -m 10 -X POST "<report_url>" \
-H "X-Key: <api_key>" \
--data-urlencode "ip=<ip>" \
--data-urlencode "categories=<categories>" \
--data-urlencode "comment=fail2ban <name>: <failures> failed attempts" \
-o /dev/null || :
actionunban =
[Init]
report_url = https://reportedip.de/wp-json/reportedip/v2/report
api_key = <your-api-key>
categories = 18,22
Restriction des droits d'accès afin que la clé ne soit pas accessible en lecture par tous :
chmod 600 /etc/fail2ban/action.d/reportedip.conf
Les balises <ip>, <name> (nom de la prison) et <failures>
sont renseignés par fail2ban ; <api_key>, <categories> et
<report_url> proviennent de [Init] bloc.
2. L'activer sur une cellule
Ajouter l'action à une prison dans /etc/fail2ban/jail.local — en plus de la
mesure d'exclusion habituelle (%(action_)s), et non à la place de celui-ci :
# /etc/fail2ban/jail.local
[sshd]
enabled = true
action = %(action_)s
reportedip
Vous pouvez redéfinir les catégories pour chaque prison en les spécifiant directement dans le code, par exemple :
reportedip[categories="16,21"] sur une instance d'application web.
3. Appliquer et vérifier
fail2ban-client reload
fait pas fixez-le solidement. Utilisez systemctl restart fail2ban, puis vérifiez que les deux
actions sont bien chargées.systemctl restart fail2ban
fail2ban-client get sshd actions
# -> The jail sshd has the following actions:
# nftables, reportedip
Consulter le journal de fail2ban
les journaux de fail2ban vers /var/log/fail2ban.log (ou la revue : journalctl -u fail2ban).
Les lignes qui vous intéressent :
2026-05-30 21:56:18 fail2ban.filter [38760]: INFO [sshd] Found 203.0.113.45 - 2026-05-30 21:56:18
2026-05-30 21:56:26 fail2ban.actions [38760]: NOTICE [sshd] Ban 203.0.113.45
2026-05-30 22:06:26 fail2ban.actions [38760]: NOTICE [sshd] Unban 203.0.113.45
| Synopsis | Signification |
|---|---|
Found <ip> | Le filtre a détecté une tentative d'attaque. L'utilisateur n'a pas encore été banni. |
Ban <ip> | Seuil atteint — le jail a exécuté ses actions, y compris l'envoi du rapport à ReportedIP. |
Unban <ip> | bantime Le délai s'est écoulé ; la règle de pare-feu a été supprimée (aucun rapport). |
Restore Ban <ip> | fail2ban a redémarré et a réappliqué une interdiction toujours en vigueur. |
Le rapport lui-même ne fait aucune mention de la réussite (-o /dev/null). Pour surveiller l'envoi des rapports,
suivre le journal pendant les tests ou exécuter l'action curl manuellement pour une seule adresse IP — une opération réussie
affiche le nouveau rapport :
{"data":{"ipAddress":"203.0.113.45","abuseConfidencePercentage":39,"reportId":"4316026","aggregated":true}}
Compteurs en temps réel : vérifiez votre clé avec
curl -H "X-Key: <key>" https://reportedip.de/wp-json/reportedip/v2/verify-key et lire
limits.dailyReportUsage, ou ouvrez le tableau de bord.
Choix des catégories de menaces par prison
Transmettez les identifiants de catégorie correspondant à ce que la prison détecte. Mappages courants (liste complète dans Catégories de menaces) :
| Prison | categories | Signification |
|---|---|---|
sshd | 18,22 | Force brute, SSH |
postfix-sasl, dovecot | 11,18 | Courriels indésirables, attaques par force brute |
proftpd, vsftpd | 5 | Attaque par force brute sur FTP |
nginx-http-auth, apache-auth | 18,21 | Attaque par force brute, attaque contre une application web |
nginx-badbots, apache-badbots | 14,19 | Analyse de ports, bot web malveillant |
apache-sqli, failles de sécurité sur le Web | 16,21 | Injection SQL, attaque d'application web |
WordPress / wp-login | 18,21 | Attaque par force brute, attaque contre une application web |
recidive (récidivistes) | 15,18 | Piratage, attaque par force brute |
Déclarer plusieurs établissements pénitentiaires
Associez l'action à chaque prison et remplacez les catégories directement dans le code afin que chaque rapport soit exact :
# /etc/fail2ban/jail.local
[sshd]
enabled = true
action = %(action_)s
reportedip[categories="18,22"]
[postfix-sasl]
enabled = true
action = %(action_)s
reportedip[categories="11,18"]
[recidive]
enabled = true
action = %(action_)s
reportedip[categories="15,18"]
Bonnes pratiques et sécurité
- Signalez uniquement les interdictions qui vous concernent. Ne signalez jamais des adresses IP que vous n'avez pas constatées en train d'attaquer vos propres systèmes : les faux signalements nuisent à la qualité de l'ensemble de données (et peuvent entraîner la suspension de votre clé).
- Ajoutez vos propres plages à la liste blanche. Conserver
ignoreipConfigurez les adresses IP de votre bureau et de vos systèmes de surveillance afin de ne jamais vous signaler vous-même. - Ne divulguez pas votre clé (
chmod 600). Il n'est pas accessible aux pirates, mais toute personne en possession de ce fichier peut envoyer des rapports en se faisant passer pour vous. En cas de fuite, modifiez-le depuis le tableau de bord. - Un signalement rejeté n'empêche jamais une exclusion. Le
|| :à la fin deactionbansignifie qu'un problème de réseau au niveau de ReportedIP empêchera ReportedIP fail2ban de bloquer l'accès localement. - Des seuils raisonnables. Très faible
maxretryles jails bruyantes peuvent surestimer le nombre de clients temporaires ; les valeurs par défaut (3–5) conviennent parfaitement.
Dépannage
| Symptôme | Corriger |
|---|---|
get <jail> actions n'affiche que la mesure d'exclusion | Vous avez actualisé la page au lieu de la recharger. Exécutez systemctl restart fail2ban. |
unknown smtpd restriction / jail ne démarre pas | Faute de frappe dans la configuration jail.local; vérifiez l'indentation de la ligne suivante sous action. |
| Rapports rejetés (HTTP 401/403) | La touche manquante report des droits d'accès incorrects ou un en-tête erroné — il doit être X-Key. |
| HTTP 429 / quota | La limite quotidienne de rapports a été atteinte pour votre forfait ; consultez la section « Authentification ». |
| Rien dans le journal concernant l'interdiction | Le rapport ne mentionne pas si l'opération a abouti. Vérifiez auprès de fail2ban-client get <jail> actions et un manuel curl. |