Обзор — что делает этот экран
Безопасность ▸ Межсетевой экран (/security/firewall) наносит все порты, которые ваш парк серверов оставляет открытыми, на единую карту открытости. Каждый открытый порт окрашивается по уровню риска (crit / warn / ok / unknown), и отдельно указывается, является ли он зарегистрированной службой (managed) или неожиданным открытием (unmanaged), — так вы сразу видите, «что видно снаружи и почему».
Экран объединяет три источника:
infr_instance_firewall (per-instance firewall rules = open ports/services)
× infr_instance (host meta — public IP · criticality · env · status)
× infr_service (registered logical services — instance_id · port)
→ classified by FirewallLore → exposure map
- Это консоль только для чтения. Редактирование и сбор самих правил межсетевого экрана — задача раздела Активы ▸ Инстансы ▸ [fw]; эта страница лишь переформатирует тот реестр в общий обзор по всему парку.
- Поскольку все источники — это новые таблицы
infr_, страница никогда не обращается кlegacy_glory(Suricata, Kitsune, …): запросы идут напрямую через Eloquent, иSecurityRepositoryне требуется. - Опрос каждые 30 секунд (в реальном времени). Эталонная логика классификации риска находится в
App\Support\FirewallLore, пояснительные тексты — вresources/lang/{ko,en}/fwlore.php.
Разграничение ролей: эта страница рассматривает физическую открытость портов (поверхность атаки). Логическая доступность служб (проверки состояния) относится к разделу Сервисы ▸ Каталог. Один и тот же порт рассматривается в каждом из этих мест под своим углом.
Когда использовать
- Чтобы провести аудит поверхности атаки всего парка — «какие порты видны снаружи прямо сейчас?».
- Чтобы найти неожиданные открытия — порт базы данных, кеша или удалённого администрирования, который открыт, но не соответствует зарегистрированной службе (открытость без учёта).
- Чтобы разбирать сначала худшую открытость — порты уровня crit на хостах с публичным IP.
- Чтобы одним взглядом увидеть, какие хосты открывают заданный порт (представление по портам).
- Чтобы оценить, что и в каком объёме открывает одна машина (представление по хостам).
- Чтобы понять, почему порт опасен и как сузить его открытость (модальное окно с разбором риска порта).
Устройство экрана
Заголовок (HERO)
Заголовок и подзаголовок (Ports your fleet leaves open — attack-surface exposure map), отметка времени последнего сбора, переключатель LIVE / PAUSED (30-секундный опрос вкл./выкл.) и кнопка полноэкранного режима.
Пустое состояние
Если правил межсетевого экрана нет вовсе, появляется вводная панель — кнопка Go to Instances ведёт на /asset/instances. Импортируйте результат firewall-cmd из раздела Инстансы ▸ [fw] либо соберите открытые порты через удалённую эмуляцию, и карта заполнится.
Полоса KPI (5 плиток)
| KPI | Подпись | Определение | Как вычисляется |
|---|---|---|---|
| ports | Открытые порты | Общее число записей об открытых портах по всем хостам | количество классифицированных правил |
| hosts | Открытые хосты | Машины, открывающие хотя бы один порт | различные instance_id |
| crit | Опасная открытость | Порты, отнесённые к crit | risk == 'crit' |
| unmanaged | Открытость без учёта | Порты, которые НЕ являются зарегистрированной службой И риск которых не ok |
!managed && risk != 'ok' |
| public_crit | Публичный · crit | Порты crit, открытые на хосте с публичным IP | crit && public |
Публичный · crit — это намеренный двойной подсчёт. Порт crit на публичном IP уже учтён в
Risky exposureи (если это не зарегистрированная служба) также вUnmanaged exposure, но, поскольку именно это пересечение (public × crit) представляет самую опасную открытость во всём парке, оно выносится ещё раз как отдельный KPI, чтобы ничего не ускользнуло. Если эта плитка не равна нулю, начинайте с неё.
Полоса риска открытости
Четырёхцветная составная полоса (crit·warn·ok·unknown) показывает распределение риска. Легенда под ней работает как фильтр по щелчку: щёлкните уровень риска, чтобы оставить только его (повторный щелчок снимает фильтр). Рядом с полосой значение coverage (например, 7 / 12 hosts collected) — это число хостов, для которых есть правила межсетевого экрана, в сравнении с общим числом инстансов.
Панель инструментов · фильтры
- Переключатель представления: по портам / по хостам.
- Протокол: all / TCP / UDP.
- Риск: all / crit / warn / ok / unknown.
- Флажок Только без учёта: только порты, не являющиеся зарегистрированными службами.
- Поиск: сопоставляется с портом · службой · хостом (включая псевдоним).
Представление по портам
Сетка карточек портов. На каждой карточке — порт/протокол · подпись службы · метка риска, фишки хостов, открывающих этот порт (до 8 + +N), и подвал с числом хостов · числом публичных открытий · категорией. Щелчок по карточке открывает модальное окно с деталями порта и разбором риска. Сортировка: риск → число хостов → номер порта.
Представление по хостам
Сетка карточек хостов. На каждой карточке — имя хоста · псевдоним · env · критичность, метка публичного доступа, фишки портов, которые открывает эта машина (окрашены по риску, с маркером check-decagram, если это зарегистрированная служба), и подвал с количествами по каждому уровню риска · общим числом портов. Щелчок по фишке порта открывает то же модальное окно. Сортировка: число crit → число warn → число портов.
Модальное окно с деталями порта и разбором риска
Порт/протокол · имя службы · метка риска · категория, а также пояснение fwlore из трёх частей:
- Что это (what) — какой службе принадлежит этот порт.
- Чем это опасно (why) — к каким атакам может привести его открытость.
- Рекомендуемое действие (best) — как сузить открытость.
Ниже — список хостов, открывающих этот порт (env · критичность · зона · публичный/внутренний · метки с учётом/без учёта), и ссылка Manage in Instances ▸ [fw].
Как пользоваться
- Если включён режим LIVE, страница обновляется каждые 30 секунд. Если во время расследования меняющиеся значения мешают, переключитесь на PAUSED.
- Сначала проверьте KPI «Публичный · crit» — если он не равен нулю, щёлкните
critв легенде риска, чтобы сузить представление по портам, и в первую очередь займитесь хостами с меткой публичного доступа (значок глобуса). - С помощью фильтра Только без учёта выделите «неожиданные открытия». Если здесь появились база данных (3306/5432/27017), кеш (6379/11211), Docker (2375) или удалённое администрирование (23/3389/VNC), не являющиеся зарегистрированной службой, немедленно сузьте доступ к ним.
- Щёлкните карточку порта, прочитайте why/best в модальном окне разбора, затем перейдите по
Manage in Instances ▸ [fw], чтобы ужесточить правило или зарегистрировать его как службу. - Фактическое закрытие порта или изменение правила выполняется не здесь, а в межсетевом экране целевого хоста и в разделе Инстансы ▸ [fw]. Эта страница — карта и инструмент аудита.
Правила классификации риска (FirewallLore)
Строка порта может быть одиночным значением (8080) или диапазоном (6081-6100). Диапазон сопоставляется с таблицей общеизвестных портов по своему начальному порту.
| risk | rank | значение | примеры |
|---|---|---|---|
| crit | 3 | Немедленная опасность при открытости — хранилища данных · удалённое администрирование · файловые ресурсы · контейнеры | MySQL 3306, Redis 6379, RDP 3389, SMB 445, Docker 2375, k8s-api 6443 |
| warn | 2 | Требует внимания — управление · унаследованное · нестандартное | SSH 22, SMTP 25, 8080/8443, SNMP 161, Grafana 3000 |
| ok | 1 | Обычная публичная служба | HTTP 80, HTTPS 443, DNS 53, NTP 123, WireGuard 51820 |
| unknown | 0 | Не сопоставлено — требует проверки | порты и диапазоны, отсутствующие в каталоге |
- Диапазон VNC (5900–5910) обрабатывается как диапазон, а не как отдельные записи, и относится к
remote_admin · crit. - Широкий диапазон портов (например,
6081-6100) со значениемunknownповышается как минимум до warn, поскольку широкий диапазон увеличивает поверхность атаки. - Для несопоставленного порта указанная подпись службы отображается для сведения, но риск остаётся
unknown; если подписи нет, интерфейс выводитUnknown service.
Определение учтённости
Таблица зарегистрированных служб построена по ключу infr_service.instance_id : port. Если у инстанса на этом порту есть зарегистрированная служба, правило считается учтённым (маркер check-decagram, managed_name). Диапазоны портов сопоставляются по своему начальному порту (low). Без зарегистрированной службы правило остаётся без учёта — и если его риск не ok, оно попадает в KPI Unmanaged exposure.
Источники данных
| Таблица / источник | Роль | Чем заполняется |
|---|---|---|
infr_instance_firewall |
Правила открытых портов и служб по каждому инстансу (реестр) | Активы ▸ Инстансы ▸ [fw] — ручной CRUD / импорт исходного текста firewall-cmd --list-all / импорт JSON из scripts/infr_firewall_probe.cjs |
infr_instance |
Метаданные хоста — name · alias · env · criticality · status · ip_public |
Активы ▸ Инстансы |
infr_service |
Зарегистрированные логические службы (instance_id · port · name · kind) → проверка учтённости |
Сервисы ▸ Каталог |
App\Support\FirewallLore |
Эталон классификации порт → {key,label,category,risk,icon} (не зависит от локали) | код |
resources/lang/{ko,en}/fwlore.php |
Пояснения what/why/best по уровню риска и по категории | языковой пакет |
Структура правила infr_instance_firewall (UNIQUE instance_id, zone, proto, port):
{
"zone": "public",
"ports": [
{ "port": "22", "proto": "tcp", "service": "ssh" },
{ "port": "443", "proto": "tcp", "service": "https" },
{ "port": "3306", "proto": "tcp", "service": "mysql" },
{ "port": "6081-6100", "proto": "tcp", "service": "" }
]
}
Импортер [fw] также разбирает исходный текст firewall-cmd --list-all (заголовок зоны → сопоставление services: → ports: напрямую):
public (active)
services: http https ssh
ports: 8080/tcp 6081-6100/tcp 3306/tcp
Собранная панель кешируется на сервере в течение 30 секунд (infr:sec:firewall:dashboard). Если правил нет вовсе, возвращается пустой ответ (empty=true), по которому отрисовывается вводное состояние.
Доступ
- Просмотр: весь префикс
/security/*обёрнут посредникомinfr.level:2→ только staff (5) и выше (внутреннеuser_level >= 2). demo (1) полностью лишён доступа к данным безопасности. - На этой странице нет операций записи (только чтение). Редактирование и импорт правил межсетевого экрана выполняются в разделе Активы ▸ Инстансы ▸ [fw] и ограничены уровнем ≥ 2 и журналом аудита.
- Схема уровней: demo=1 · staff=5 · admin=10 (в отдельных разделах добавляется дополнительная проверка
infr.level:N). См. Уровни RBAC.
Устранение неполадок и вопросы
Я вижу только пустой экран («Данных о межсетевом экране пока нет»).
Это значит, что в infr_instance_firewall нет ни одного правила. Вставьте результат firewall-cmd --list-all в Активы ▸ Инстансы ▸ [fw] для импорта либо соберите открытые порты через удалённую эмуляцию.
Порт отображается как Unknown service.
Этого порта нет в каталоге FirewallLore (риск unknown). Если это законная служба, зарегистрируйте её в разделе Сервисы ▸ Каталог или добавьте подпись в поле service/note правила [fw]. Если порт не нужен, закройте его.
Это зарегистрированная служба, но отображается unmanaged.
Для проверки учтённости требуется infr_service на том же инстансе и на этом порту. Если служба находится на другом хосте или другом порту, совпадения не будет. Диапазоны портов сопоставляются только по начальному порту.
Risky exposure не равно нулю, но Public · crit равно 0.
Это значит, что все хосты с открытыми портами crit доступны только изнутри (нет ip_public) — радиус открытости невелик, поэтому относительно безопаснее. Тем не менее сузьте их, учитывая внутренние угрозы и горизонтальное перемещение.
Значения не в реальном времени. Возможно, режим LIVE переведён в PAUSED или вкладка находится в фоне. Панель кешируется на сервере 30 секунд, поэтому в течение до 30 секунд после изменения правила в [fw] вы можете видеть прежние значения.
Можно ли закрыть порт здесь? Нет. Эта страница — карта только для чтения. Фактическая блокировка выполняется в межсетевом экране целевого хоста, а обновление реестра правил — в разделе Инстансы ▸ [fw].
Связанные разделы
- Активы ▸ Инстансы ▸ [fw] — реестр правил межсетевого экрана · сторона записи для этой карты (сбор · редактирование · импорт)
- Удалённая эмуляция · сбор открытых портов через зонд tlx.php
- Сервисы ▸ Каталог · зарегистрированные службы (проверка учтённости) · логическая доступность
- Активы ▸ Инстансы · метаданные инстанса (публичный IP · критичность)
- Безопасность ▸ Обзор · стартовая страница консоли безопасности (воронка защиты)
- Администрирование ▸ Операционная политика · повторно использует каталог портов FirewallLore для выбора «отслеживаемых портов»
