InfraGuard

Consultation de réputation d’IP (AbuseIPDB)

Cliquez sur n’importe quelle IP suspecte pour consulter les renseignements sur les menaces d’AbuseIPDB dans une fenêtre intégrée — jauge d’indice, signalements, catégories, Tor/liste blanche, avec un cache d’une heure qui protège votre quota gratuit.

Vue d’ensemble — à quoi cela sert

La consultation de réputation d’IP est une capacité partagée : cliquez sur une IP source suspecte (src_ip) n’importe où dans l’espace Sécurité et le serveur interroge pour vous les renseignements sur les menaces d’AbuseIPDB, puis affiche le résultat dans une fenêtre intégrée à l’application. Vous ne quittez jamais la console : vous jugez « à quel point cette IP est connue » là même où vous effectuez le triage.

Caractéristiques principales :

Le bouton en direct de cet article ouvre l’espace Sécurité (/security). La consultation de réputation n’est pas une page autonome : c’est une fenêtre partagée qui apparaît lorsque vous cliquez sur le symbole bouclier-loupe (.infr-ipsym) à côté d’une IP ou sur un bouton [Vérifier la réputation] d’un écran Sécurité.

Quand l’utiliser

Disposition

La fenêtre (security/partials/abuse-modal.blade.php) s’affiche dans l’un de ces trois états selon le résultat de la consultation.

Succès — carte de réputation

Zone Contenu
Jauge d’indice Anneau conique de 0–100 avec score% au centre. La couleur de la tonalité varie selon le score (voir le tableau des verdicts).
Étiquette de verdict No reports (Aucun signalement) / Low risk (Risque faible) / Elevated (Risque élevé) / High risk (Risque important)
Indicateurs Badges Tor node (is_tor) · Whitelisted (is_whitelisted)
Deux grands chiffres Total des signalements · déclarants distincts
Métadonnées Pays · type d’usage · FAI · domaine · date du dernier signalement
Signalements récents Jusqu’à 6 — puces de catégorie + pays du déclarant + heure + commentaire (200 caractères max.)
Horodatage de consultation Moment où le serveur a effectué la consultation (checked_at)

Score d’indice → tonalité du verdict

Score Verdict Tonalité Signification
0 Aucun signalement (clean) good Aucun signalement d’abus sur cette période
1–24 Risque faible (low) info Quelques signalements — à titre informatif
25–74 Risque élevé (elevated) warn Antécédents d’abus significatifs
75–100 Risque important (high) crit Signal malveillant marqué

États « non configuré » / échec

Boutons d’action du pied de page

Bouton Action
Copier l’IP Copie l’IP dans le presse-papiers (repli sur execCommand dans les contextes non sécurisés)
Consultation d’IP Renvoie vers Connexions IP (/infra/traffic/ips?src_ip=…)
Ouvrir AbuseIPDB Ouvre abuseipdb.com/check/{ip} externe dans un nouvel onglet
Ajouter à la liste de blocage Lien profond pré-remplissant Liste de blocage (/security/blocklist?add={ip})

Mode d’emploi

  1. Sur un écran Sécurité (Menaces, Détections, Vue d’ensemble, Liste de blocage), cliquez sur le symbole bouclier-loupe ou sur le bouton [Vérifier la réputation] à côté d’une IP.
  2. La fenêtre s’ouvre avec un indicateur de chargement et le frontend demande la consultation au serveur :
GET /security/ip-reputation?ip=203.0.113.10
  1. Le serveur valide strictement l’IP (filter_var FILTER_VALIDATE_IP), puis interroge via AbuseIpdbService et renvoie du JSON normalisé.
  2. Examinez la jauge, les chiffres et les signalements récents. Utilisez les boutons du pied de page pour copier, tracer ou bloquer selon les besoins.

Schéma de réponse (normalisé)

En cas de succès, le serveur renvoie le JSON consommé par la fenêtre :

{
  "ok": true,
  "configured": true,
  "ip": "203.0.113.10",
  "score": 84,
  "reports": 128,
  "distinct_users": 41,
  "country": "CN",
  "usage": "Data Center/Web Hosting/Transit",
  "isp": "Example Hosting Ltd",
  "domain": "example-host.net",
  "is_tor": false,
  "is_whitelisted": false,
  "last_reported": "2026-08-12T22:14:07+00:00",
  "recent": [
    { "at": "2026-08-12T22:14:07+00:00", "country": "US", "categories": [18, 22], "comment": "SSH brute-force" }
  ],
  "checked_at": "2026-08-13 09:31:20",
  "external_url": "https://www.abuseipdb.com/check/203.0.113.10"
}

En cas d’échec maîtrisé :

{ "ok": false, "configured": false, "external_url": "https://www.abuseipdb.com/check/203.0.113.10" }
Champ Source (AbuseIPDB) Signification
score abuseConfidenceScore Indice d’abus 0–100
reports totalReports Total des signalements
distinct_users numDistinctUsers Nombre de déclarants distincts
country countryCode Code pays
usage usageType Usage (centre de données / FAI / …)
isp / domain isp / domain FAI · domaine
is_tor isTor Indicateur de nœud de sortie Tor
is_whitelisted isWhitelisted Liste blanche AbuseIPDB
last_reported lastReportedAt Date du dernier signalement
recent[] reports[] Signalements récents (6 max., commentaire tronqué à 200 caractères)

Catégories de signalement (1–23)

recent[].categories est un tableau d’identifiants numériques. La fenêtre affiche les libellés via la table de langue security.abuse.cat.

ID Libellé ID Libellé ID Libellé
1 Compromission DNS 9 Proxy ouvert 17 Usurpation
2 Empoisonnement DNS 10 Spam web 18 Force brute
3 Commandes frauduleuses 11 Spam par e-mail 19 Robot web malveillant
4 Attaque DDoS 12 Spam de blog 20 Hôte compromis
5 Force brute FTP 13 IP de VPN 21 Attaque d’application web
6 Ping of Death 14 Balayage de ports 22 SSH
7 Hameçonnage 15 Piratage 23 Ciblage IoT
8 Fraude VoIP 16 Injection SQL

Sources de données

Cette fonction ne crée aucune nouvelle table. Elle repose uniquement sur un appel d’API externe + un registre de clés + un cache.

Composant Description
API AbuseIPDB https://api.abuseipdb.com/api/v2/check (verbose=1, maxAgeInDays=valeur du fournisseur·90 par défaut). Délai d’expiration de 8 secondes.
AbuseIpdbService Consulte, normalise, met en cache et consomme les clés en rotation. check($ip) (avec cache) · checkWithKey() (test d’une seule clé par l’administrateur, sans cache).
ReputationProviderService Source de vérité du pool de clés. Fournit les lignes actives de infr_reputation_provider triées par priority·id avec un cache de 30 s, rotated() pour la rotation, et se replie sur .env ABUSEIPDB_KEY si aucune n’est enregistrée.
infr_reputation_provider Table de registre multi-clés AbuseIPDB (migration 000733). Les clés sont stockées en secret_enc (Crypt, écriture seule) — jamais renvoyées au navigateur. Gérées dans API de réputation.
Cache Clé Cache infr:sec:abuse:{ip}, TTL de 3600 s (1 heure). Le compteur de rotation est infr:reputation:rr.
config/services.php abuseipdb.key (=.env ABUSEIPDB_KEY) · abuseipdb.max_age_days (90 par défaut). Repli uniquement lorsqu’aucune clé enregistrée n’existe.

Flux de rotation des clés / bascule

check(ip)
  ├ cache hit? → return
  └ miss → iterate providers.rotated()
        key#1 → 200? → normalize·cache·return
              → 429/401/403 → fail over to next key (secret never printed)
        key#2 → …
        all fail → { ok:false, error:"http_429"|"unreachable" }

Enregistrez plusieurs clés de l’offre gratuite et leurs quotas se mutualisent. Lorsqu’une clé épuise son quota quotidien et renvoie un 429, le service passe automatiquement à la suivante — les équipes fortement sollicitées par les investigations devraient enregistrer 2–3 clés dans API de réputation.

Accès

Dépannage et FAQ

La fenêtre indique « clé d’API non configurée »

Aucune clé n’est enregistrée dans infr_reputation_provider et .env ABUSEIPDB_KEY est vide. Ajoutez une clé AbuseIPDB dans API de réputation ou définissez ABUSEIPDB_KEY=YOUR_KEY dans le .env. En attendant, utilisez le bouton [Ouvrir AbuseIPDB] pour consulter le site externe.

« Échec de la consultation » revient sans cesse

Une IP que je viens de bloquer affiche encore un score faible

Les résultats sont mis en cache par IP pendant 1 heure (infr:sec:abuse:{ip}). Si vous avez besoin d’une valeur fraîche, relancez la requête après une heure au maximum. Ce cache existe pour préserver votre quota gratuit.

Puis-je signaler l’IP à AbuseIPDB depuis ici ?

Non. Cette fonction est réservée à la consultation. L’envoi de signalements (coopération internationale) relève d’une phase de réponse distincte et différée — rien n’est publié à l’extérieur ici.

Je ne vois que 6 signalements récents

L’étape de normalisation ne conserve que les 6 plus récents (MAX_REPORTS=6). Consultez l’historique complet via [Ouvrir AbuseIPDB] sur le site externe.

C’est une IP interne ou en liste blanche, mais le bouton de consultation est masqué

Les écrans Sécurité marquent les IP des instances enregistrées (votre propre réseau) d’un badge Internal et masquent le bouton de réputation (SecurityScope) — cela évite la confusion lorsque les étiquettes directionnelles de Suricata désignent notre propre serveur comme « source ». Les définitions de réseau interne se gèrent dans Politique d’exploitation.

Voir aussi

위협 화면의 IP 조사 진입점
위협 화면의 IP 조사 진입점