Происхождение записей периметра¶
DomainScope сохраняет происхождение каждого домена и IP в perimeter — откуда узнали, какой parent, на каком цикле добавили. Это нужно чтобы:
- Понимать, почему DomainScope считает тот или иной актив «нашим»
- Отлаживать false positives (parking, CDN, дочерние компании)
- Принимать решения по scope (нужен ли этот IP в перимметре)
Работа с trails через UI Hub¶
В Hub UI для каждого scope-entry (Project → Scope) отображается источник появления (provenance):
- Source — откуда появилось (домены: config / subfinder / netbox_dns / scope_entry / tls_san; IP: netbox_import / dns_resolve / scope_entry)
- Parent domain — непосредственный родитель (для поддомена)
- Root domain — корневой seed-домен
- Discovered at — когда впервые увидели
- Last seen at — когда последний раз подтвердили в скане
Для каждой записи доступны действия:
- Confirm — подтвердить добавление в активный perimeter
- Reject — пометить tombstone (DomainScope не будет реактивировать автоматически)
- Block subtree — заблокировать корень и всё его поддерево разом (для parking-доменов, чужих регистраторов)
- View history — посмотреть, в каких циклах сканирования встречалась запись
Большинство задач по управлению trails решается через эти кнопки в UI. Прямой доступ в БД не требуется.
Типовые сценарии¶
Сценарий A: DomainScope сканирует «не наш» домен¶
- В Hub UI: Project → Scope → найти подозрительный домен (фильтр по source/value)
- Открыть карточку — посмотреть
Source,Root domain,Discovered at - Если домен пришёл через
subfinderот чужого root —RejectилиBlock subtree - Если домен пришёл через
netbox_dns— поправьте тег/scope в NetBox; следующий sync уберёт его
Сценарий B: Свежее обнаружение, нужно одобрить¶
- Hub UI: Project → Scope Proposals — список новых предложений от DomainScope
- Для каждого: подтвердить (Confirm) или отклонить (Reject)
- Подтверждённые становятся частью активного scope
Сценарий C: Пропадают домены, которые раньше сканировались¶
- Hub UI: Project → Scope → фильтр
Last seen at < 30 дней назад - Проверьте, что домен/IP физически жив (например,
dig <domain>) - Если давно нерабочий —
Reject(retired). Если временный сбой — оставьте, DomainScope обновит на следующем цикле
Сценарий D: Приватные IP в SARIF, нужны только публичные¶
Это решается не через trails, а через фильтр сканера:
Источники provenance¶
Домены (domains.source):
| Source | Что значит |
|---|---|
config |
Прописан в DOMAINSCOPE_DOMAINS или YAML-конфиге |
subfinder |
Найден через subfinder (поддомены discovery) |
netbox_dns |
Импортирован из NetBox-DNS plugin (DNS-зоны) |
scope_entry |
Получен из Hub через scope sync |
tls_san |
Извлечён из SAN сертификата TLS обнаруженного сервера |
IP-адреса (ip_addresses.source):
| Source | Что значит |
|---|---|
netbox_import |
Импортирован из NetBox IPAM |
dns_resolve |
Получен DNS-резолвингом обнаруженного домена |
scope_entry |
Получен из Hub через scope sync |
Значений discovery, netbox и manual в provenance нет.
Защита от автоматической реактивации¶
Если scope-entry помечен в Hub как Reject-нутый админом — DomainScope никогда не вернёт его обратно автоматически. Это защита от перетирания ручных решений: пометили «это не наш периметр» — значит не наш, даже если discovery снова его увидит.
Чтобы вернуть запись в активные, админу нужно явно нажать Activate в UI Hub.
Связанные документы¶
domainscope-scanners.md— управление сканерами и IP_SCOPE фильтрdomainscope-netbox.md— sync с NetBox