InfraGuard

Проверка репутации IP (AbuseIPDB)

Щёлкните по любому подозрительному IP, чтобы во встроенном окне посмотреть данные об угрозах из AbuseIPDB — шкала уверенности, жалобы, категории, Tor/белый список и часовой кэш, который бережёт бесплатную квоту.

Обзор — что делает эта возможность

Проверка репутации IP — это общая возможность: щёлкните по подозрительному IP-адресу источника (src_ip) в любом месте раздела «Безопасность», и сервер от вашего имени запросит данные об угрозах в AbuseIPDB, показав результат во встроенном окне. Вам не нужно покидать консоль — вы оцениваете, «насколько печально известен этот IP», прямо там, где ведёте разбор.

Ключевые особенности:

Живая кнопка этой статьи открывает раздел «Безопасность» (/security). Проверка репутации — не отдельная страница, а общее всплывающее окно, которое появляется, когда вы щёлкаете по значку щита с лупой (.infr-ipsym) рядом с IP или по кнопке [Проверить репутацию] на любом экране безопасности.

Когда применять

Устройство экрана

Окно (security/partials/abuse-modal.blade.php) отображается в одном из трёх состояний в зависимости от результата проверки.

Успех — карточка репутации

Область Содержимое
Шкала уверенности Коническое кольцо 0–100 с score% по центру. Цвет тона меняется вместе с оценкой (см. таблицу вердиктов).
Метка вердикта No reports (Жалоб нет) / Low risk (Низкий риск) / Elevated (Повышенный риск) / High risk (Высокий риск)
Признаки Значки Tor node (is_tor) · Whitelisted (is_whitelisted)
Две крупные цифры Всего жалоб · количество разных заявителей
Метаданные Страна · тип использования · провайдер · домен · время последней жалобы
Недавние жалобы До 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 / domain isp / domain Провайдер · домен
is_tor isTor Признак выходного узла Tor
is_whitelisted isWhitelisted Белый список AbuseIPDB
last_reported lastReportedAt Время последней жалобы
recent[] reports[] Недавние жалобы (не более 6, комментарий обрезается до 200 символов)

Категории жалоб (1–23)

recent[].categories — это массив числовых идентификаторов. Окно выводит подписи через языковую таблицу security.abuse.cat.

ID Подпись ID Подпись ID Подпись
1 Компрометация DNS 9 Открытый прокси 17 Подмена адреса
2 Отравление DNS 10 Веб-спам 18 Перебор паролей
3 Мошеннические заказы 11 Почтовый спам 19 Вредоносный веб-бот
4 DDoS-атака 12 Спам в блогах 20 Скомпрометированный хост
5 Перебор паролей FTP 13 IP-адрес VPN 21 Атака на веб-приложение
6 Ping of Death 14 Сканирование портов 22 SSH
7 Фишинг 15 Взлом 23 Атака на IoT
8 Мошенничество с VoIP 16 SQL-инъекция

Источники данных

Эта возможность не создаёт новых таблиц. Она работает исключительно за счёт вызова внешнего API + реестра ключей + кэша.

Компонент Описание
API AbuseIPDB https://api.abuseipdb.com/api/v2/check (verbose=1, maxAgeInDays=значение провайдера·по умолчанию 90). Тайм-аут 8 секунд.
AbuseIpdbService Выполняет запрос, нормализует, кэширует и расходует ключи по кругу. check($ip) (с кэшем) · checkWithKey() (административная проверка одного ключа, без кэша).
ReputationProviderService Единый источник истины для пула ключей. Отдаёт активные строки infr_reputation_provider, упорядоченные по priority·id, с кэшем на 30 с, предоставляет rotated() для кругового перебора и откатывается к .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). Используется только как запасной вариант, когда нет ни одного зарегистрированного ключа.

Схема ротации ключей и переключения при сбое

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

Зарегистрируйте несколько ключей бесплатного тарифа — их квоты объединятся. Когда один ключ исчерпает суточную квоту и вернёт 429, служба автоматически перейдёт к следующему; командам с высокой нагрузкой по расследованиям стоит зарегистрировать 2–3 ключа в разделе API репутации.

Права доступа

Устранение неполадок и часто задаваемые вопросы

В окне написано, что ключ API не настроен

В infr_reputation_provider не зарегистрировано ни одного ключа, а .env ABUSEIPDB_KEY пуст. Добавьте ключ AbuseIPDB в разделе API репутации или задайте ABUSEIPDB_KEY=YOUR_KEY в .env. Пока этого не сделано, пользуйтесь кнопкой [Открыть AbuseIPDB], чтобы посмотреть на внешнем сайте.

Постоянно появляется сообщение о неудачной проверке

Только что заблокированный IP по-прежнему показывает низкую оценку

Результаты кэшируются для каждого IP на 1 час (infr:sec:abuse:{ip}). Если нужно свежее значение, повторите запрос не более чем через час. Кэш существует именно для того, чтобы беречь вашу бесплатную квоту.

Можно ли отсюда пожаловаться на IP в AbuseIPDB?

Нет. Эта возможность работает только на чтение. Отправка жалоб (международное взаимодействие) относится к отдельной, отложенной фазе реагирования — здесь наружу ничего не публикуется.

Я вижу только 6 недавних жалоб

На этапе нормализации сохраняются лишь 6 последних (MAX_REPORTS=6). Полную историю смотрите на внешнем сайте по кнопке [Открыть AbuseIPDB].

Это IP из белого списка или внутренней сети, но кнопка проверки скрыта

На экранах безопасности IP-адреса зарегистрированных экземпляров (вашей собственной сети) помечаются значком Internal, а кнопка репутации скрывается (SecurityScope) — так удаётся избежать путаницы, когда метки направления от Suricata указывают наш собственный сервер как «источник». Определения внутренних сетей задаются в разделе Операционная политика.

Связанные материалы

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