InfraGuard

IP 評判の照会(AbuseIPDB)

疑わしい IP をクリックするだけで、AbuseIPDB の脅威インテリジェンスをアプリ内ポップアップで照会します — 確度ゲージ・報告・カテゴリ・Tor/ホワイトリスト、無料枠を守る 1 時間キャッシュ付き。

概要 — 何をする機能か

IP 評判の照会は共通機能です。セキュリティ領域のどこであっても、疑わしい送信元 IP(src_ip)をクリックすると、サーバーが代理で AbuseIPDB の脅威インテリジェンスを照会し、結果をアプリ内のポップアップに表示します。コンソールから離れる必要はありません — トリアージしているその場で「この IP はどれほど悪名高いのか」を判断できます。

主な特徴:

この記事のライブボタンはセキュリティ領域(/security)を開きます。評判の照会は単独のページではなく、セキュリティ画面で IP の隣にある盾+虫めがねの記号(.infr-ipsym)や [評判を照会] ボタンをクリックすると現れる共有ポップアップです。

こんなときに使う

画面構成

ポップアップ(security/partials/abuse-modal.blade.php)は、照会の結果に応じて 3 つの状態のいずれかで描画されます。

成功 — 評判カード

領域 内容
確度ゲージ 0–100 の円錐グラデーションのドーナツ + 中央に score%。トーンの色はスコアに応じて変わります(判定の表を参照)。
判定ラベル No reports(報告なし)/ Low risk(低リスク)/ Elevated(やや高い)/ High risk(高リスク)
フラグ Tor node(is_tor)· Whitelisted(is_whitelisted)のバッジ
2 つの大きな数値 報告数の合計 · 報告者数
メタ情報 国 · 用途 · ISP · ドメイン · 最終報告日時
最近の報告 最大 6 件 — カテゴリのチップ + 報告者の国 + 日時 + コメント(最大 200 文字)
照会日時のスタンプ サーバーが照会を実行した日時(checked_at)

確度スコア → 判定のトーン

スコア 判定 トーン 意味
0 報告なし(clean) good この期間に悪用の報告なし
1–24 低リスク(low) info わずかな報告 — 参考情報
25–74 やや高い(elevated) warn 無視できない悪用履歴
75–100 高リスク(high) crit 明確な悪性のシグナル

未設定・失敗時の状態

フッターの操作ボタン

ボタン 動作
IP をコピー IP をクリップボードにコピーします(安全でないコンテキストでは execCommand にフォールバック)
IP 照会 IP接続 へ移動します(/infra/traffic/ips?src_ip=…)
AbuseIPDB を開く 外部の abuseipdb.com/check/{ip} を新しいタブで開きます
ブロックリストに追加 ブロックリスト にディープリンクで事前入力します(/security/blocklist?add={ip})

使い方

  1. セキュリティ画面(脅威・検知・概要・ブロックリスト)で、IP の隣にある盾+虫めがねの記号か [評判を照会] ボタンをクリックします。
  2. ポップアップが読み込み中のスピナーとともに開き、フロントエンドがサーバーに照会を要求します。
GET /security/ip-reputation?ip=203.0.113.10
  1. サーバーは IP を厳密に検証し(filter_var FILTER_VALIDATE_IP)、AbuseIpdbService 経由で照会して、正規化した JSON を返します。
  2. ゲージ・数値・最近の報告を確認します。必要に応じてフッターのボタンからコピー・追跡・ブロックを行います。

レスポンスのスキーマ(正規化後)

成功すると、サーバーはポップアップが使う次の JSON を返します。

{
  "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"
}

穏当に失敗した場合:

{ "ok": false, "configured": false, "external_url": "https://www.abuseipdb.com/check/203.0.113.10" }
フィールド 取得元(AbuseIPDB) 意味
score abuseConfidenceScore 悪用の確度 0–100
reports totalReports 報告数の合計
distinct_users numDistinctUsers 異なる報告者の数
country countryCode 国コード
usage usageType 用途(データセンター/ISP/…)
isp / domain isp / domain ISP · ドメイン
is_tor isTor Tor 出口ノードのフラグ
is_whitelisted isWhitelisted AbuseIPDB のホワイトリスト
last_reported lastReportedAt 最終報告日時
recent[] reports[] 最近の報告(最大 6 件、コメントは 200 文字で切り詰め)

報告カテゴリ(1–23)

recent[].categories は数値 ID の配列です。ポップアップは security.abuse.cat の言語マップからラベルを描画します。

ID ラベル ID ラベル ID ラベル
1 DNS の侵害 9 オープンプロキシ 17 なりすまし
2 DNS ポイズニング 10 Web スパム 18 総当たり攻撃
3 不正注文 11 メールスパム 19 悪質な Web ボット
4 DDoS 攻撃 12 ブログスパム 20 踏み台にされたホスト
5 FTP への総当たり 13 VPN の IP 21 Web アプリへの攻撃
6 Ping of Death 14 ポートスキャン 22 SSH
7 フィッシング 15 ハッキング 23 IoT 狙い
8 VoIP 詐欺 16 SQL インジェクション

データソース

この機能は新しいテーブルを作りません。 外部 API の呼び出し + キーのレジストリ + キャッシュだけで動作します。

コンポーネント 説明
AbuseIPDB API https://api.abuseipdb.com/api/v2/check(verbose=1、maxAgeInDays=プロバイダの値・既定 90)。タイムアウトは 8 秒。
AbuseIpdbService 照会・正規化・キャッシュと、ローテーションされたキーの消費を担当します。check($ip)(キャッシュあり)· checkWithKey()(管理者による単一キーのテスト、キャッシュなし)。
ReputationProviderService キープールの SOT。有効な infr_reputation_provider の行を priority·id 順に 30 秒キャッシュ付きで提供し、ラウンドロビンには rotated() を使います。1 件も登録がなければ .env ABUSEIPDB_KEY にフォールバックします。
infr_reputation_provider AbuseIPDB の複数キーを登録するテーブル(マイグレーション 000733)。キーは secret_enc(Crypt、書き込み専用)として保存され、ブラウザには決して返しません。管理は 評判 API で行います。
キャッシュ Cache のキーは infr:sec:abuse:{ip}、TTL は 3600 秒(1 時間)。ラウンドロビンのカウンタは infr:reputation:rr です。
config/services.php abuseipdb.key(=.env ABUSEIPDB_KEY)· abuseipdb.max_age_days(既定 90)。登録済みのキーが 1 件もないときだけのフォールバックです。

キーのローテーション/フェイルオーバーの流れ

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

無料枠のキーを複数登録すると、それぞれのクォータがプールされます。あるキーが 1 日分のクォータを使い切って 429 を返すと、自動的に次のキーへ進みます — 調査の負荷が高いチームは 評判 API にキーを 2–3 件登録してください。

アクセス権限

トラブルシューティングと FAQ

ポップアップに「API キーが未設定」と表示される

infr_reputation_provider にキーが 1 件も登録されておらず、.env ABUSEIPDB_KEY も空です。評判 API で AbuseIPDB のキーを追加するか、.env に ABUSEIPDB_KEY=YOUR_KEY を設定してください。それまでは [AbuseIPDB を開く] ボタンから外部サイトを確認してください。

「照会に失敗」が出続ける

ブロックしたばかりの IP のスコアが低いままになる

結果は IP ごとに 1 時間キャッシュされます(infr:sec:abuse:{ip})。最新の値が必要な場合は、最大 1 時間後に再照会してください。このキャッシュは無料枠のクォータを守るためのものです。

ここから AbuseIPDB に IP を通報できますか

いいえ。この機能は照会専用です。通報の送信(国際連携)は別途あとのフェーズで実装される対応機能であり、ここから外部へ公開されるものは何もありません。

最近の報告が 6 件しか表示されない

正規化の段階で最新の 6 件だけを残しています(MAX_REPORTS=6)。すべての履歴は [AbuseIPDB を開く] から外部サイトで確認してください。

ホワイトリスト登録済み/内部の IP なのに照会ボタンが表示されない

セキュリティ画面では、登録済みインスタンスの IP(自社ネットワーク)に Internal バッジを付け、評判ボタンを隠します(SecurityScope) — Suricata の方向ラベルが自社サーバーを「送信元」と表記したときの誤解を防ぐためです。内部ネットワークの定義は 運用ポリシー で管理します。

関連項目

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