概要 — 何をする機能か
IP 評判の照会は共通機能です。セキュリティ領域のどこであっても、疑わしい送信元 IP(src_ip)をクリックすると、サーバーが代理で AbuseIPDB の脅威インテリジェンスを照会し、結果をアプリ内のポップアップに表示します。コンソールから離れる必要はありません — トリアージしているその場で「この IP はどれほど悪名高いのか」を判断できます。
主な特徴:
- 純粋な照会(読み取り専用)。 この機能は AbuseIPDB の
/api/v2/checkを呼び出すだけです。IP を外部へ通報・公開することはありません — 外部への通報(国際連携)は、別途あとのフェーズで実装される対応機能です。 - 悪用の確度(Abuse Confidence Score)0–100 のゲージに加えて、報告数・報告者数・用途・ISP・国・ドメイン・Tor/ホワイトリストのフラグ・最近の報告履歴を、すべて正規化して表示します。
- 複数キーのラウンドロビン。 評判 API に登録した AbuseIPDB のキープールを順番に消費します。429(クォータ超過)や 401/403(キーの問題)が返った場合は、自動的に次のキーへ切り替えます(クォータのプール化)。
- IP ごとに 1 時間のキャッシュ。 無料枠の 1 日 1000 リクエストのクォータを守るため、同じ IP を 1 時間以内に繰り返し照会した場合はキャッシュした結果を返します。
- 共有ミックスイン。 脅威・検知・セキュリティ概要・ブロックリスト は、いずれも同じポップアップコンポーネントを再利用しています。
この記事のライブボタンはセキュリティ領域(
/security)を開きます。評判の照会は単独のページではなく、セキュリティ画面で IP の隣にある盾+虫めがねの記号(.infr-ipsym)や [評判を照会] ボタンをクリックすると現れる共有ポップアップです。
こんなときに使う
- 脅威 で深刻度の高い攻撃元 IP をトリアージするとき — 本当に悪性なのか、それとも既知のスキャナーやボットネットなのか。
- 検知 の JA3 オフェンダーや Kitsune の異常 IP が本当に脅威かどうかを裏づけるとき。
- ブロックリスト・評判 で対象をブロック/解除する前に、外部での評判を突き合わせるとき。
- セキュリティ概要 の上位脅威 IP / JA3 オフェンダーのパネルから、IP の評判をすばやく確認するとき。
画面構成
ポップアップ(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 | 明確な悪性のシグナル |
未設定・失敗時の状態
- キーが未設定: キーの警告アイコンと案内が表示されます。フッターの [AbuseIPDB を開く] ボタンから外部サイトを直接確認してください。
- 照会に失敗: クォータ超過やネットワークエラーなどです。しばらくしてから再試行するか、外部リンクにフォールバックしてください。
フッターの操作ボタン
| ボタン | 動作 |
|---|---|
| IP をコピー | IP をクリップボードにコピーします(安全でないコンテキストでは execCommand にフォールバック) |
| IP 照会 | IP接続 へ移動します(/infra/traffic/ips?src_ip=…) |
| AbuseIPDB を開く | 外部の abuseipdb.com/check/{ip} を新しいタブで開きます |
| ブロックリストに追加 | ブロックリスト にディープリンクで事前入力します(/security/blocklist?add={ip}) |
使い方
- セキュリティ画面(脅威・検知・概要・ブロックリスト)で、IP の隣にある盾+虫めがねの記号か [評判を照会] ボタンをクリックします。
- ポップアップが読み込み中のスピナーとともに開き、フロントエンドがサーバーに照会を要求します。
GET /security/ip-reputation?ip=203.0.113.10
- サーバーは IP を厳密に検証し(
filter_var FILTER_VALIDATE_IP)、AbuseIpdbService 経由で照会して、正規化した JSON を返します。 - ゲージ・数値・最近の報告を確認します。必要に応じてフッターのボタンからコピー・追跡・ブロックを行います。
レスポンスのスキーマ(正規化後)
成功すると、サーバーはポップアップが使う次の 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 件登録してください。
アクセス権限
- 照会エンドポイント
GET /security/ip-reputation: 純粋な照会であるため、ステップアップの再確認も監査ログもありません。セキュリティのメニュー領域(min_req 2)の内側にあるので、実質的にはセキュリティ担当者(staff=5)以上が利用できます。外部へ何も公開しないため、破壊的な操作ではありません。 - 不正な IP:
filter_varの検証に失敗すると HTTP 422 と{"ok":false,"message":"invalid_ip"}を返します。 - キーの管理 評判 API:
infr_reputation_providerに対する CRUD・ライブテスト・優先度のドラッグは**管理者専用(admin=10、level≥5)**で、監査記録が残ります。キーは暗号化して保存され、編集時に差し替えるか消去することしかできません。 - 秘密情報の漏えいなし: API キーがレスポンスやエラー本文に漏れることはありません(エラーは
http_STATUSの文字列としてのみ記録されます)。
トラブルシューティングと FAQ
ポップアップに「API キーが未設定」と表示される
infr_reputation_provider にキーが 1 件も登録されておらず、.env ABUSEIPDB_KEY も空です。評判 API で AbuseIPDB のキーを追加するか、.env に ABUSEIPDB_KEY=YOUR_KEY を設定してください。それまでは [AbuseIPDB を開く] ボタンから外部サイトを確認してください。
「照会に失敗」が出続ける
- 429(クォータ超過): 無料枠の 1 日 1000 件を使い切った可能性があります。キーを追加登録してクォータをプールするか、翌日に再試行してください。
- 401/403(キーの問題): キーの期限切れ・入力ミス・無効化のいずれかです。評判 API の [ライブテスト] で確認してください。
- ネットワーク(unreachable): コンソールのホストから
api.abuseipdb.com(443)への外向き通信がブロックされていないか確認してください。
ブロックしたばかりの IP のスコアが低いままになる
結果は IP ごとに 1 時間キャッシュされます(infr:sec:abuse:{ip})。最新の値が必要な場合は、最大 1 時間後に再照会してください。このキャッシュは無料枠のクォータを守るためのものです。
ここから AbuseIPDB に IP を通報できますか
いいえ。この機能は照会専用です。通報の送信(国際連携)は別途あとのフェーズで実装される対応機能であり、ここから外部へ公開されるものは何もありません。
最近の報告が 6 件しか表示されない
正規化の段階で最新の 6 件だけを残しています(MAX_REPORTS=6)。すべての履歴は [AbuseIPDB を開く] から外部サイトで確認してください。
ホワイトリスト登録済み/内部の IP なのに照会ボタンが表示されない
セキュリティ画面では、登録済みインスタンスの IP(自社ネットワーク)に Internal バッジを付け、評判ボタンを隠します(SecurityScope) — Suricata の方向ラベルが自社サーバーを「送信元」と表記したときの誤解を防ぐためです。内部ネットワークの定義は 運用ポリシー で管理します。
関連項目
- 評判 API の管理 — AbuseIPDB の複数キー登録、ラウンドロビン、ライブテスト
- 脅威 — IDS の脅威エンティティをトリアージしながら IP の評判を確認
- 検知 · JA3 — JA3 オフェンダーや異常 IP の評判を確認
- ブロックリスト・評判 — ブロックリスト + 評判の突き合わせ + ブロックのディープリンク
- セキュリティ概要 — 防御ファネルと上位脅威 IP
- ホワイトリスト — ブロックの免除と srct による自動無罪判定のホワイトリスト登録
