Разработка 4 мин чтения

portracker: карта открытых портов на серверах, в Docker и TrueNAS

portracker показывает, какие порты слушают на серверах и в контейнерах, и собирает несколько узлов в одну панель с SQLite внутри. Разобрал по README и коду, чем за это приходится платить: сокет Docker, общий с хостом список процессов и авторизация, выключенная по умолчанию.

portrackerинвентаризация портовDockerTrueNAS
Коротко. portracker (репозиторий mostafa-wahied/portracker, лицензия MIT, Node.js, около 2,5 тысячи звёзд) показывает, какие порты слушают на сервере, какой процесс или контейнер за ними стоит, и собирает несколько серверов в одну панель. Ставится одним контейнером с SQLite внутри. Платить приходится широким доступом: по README контейнеру нужны pid: host, права SYS_PTRACE и SYS_ADMIN, отключённый AppArmor и сокет Docker. Авторизация по умолчанию выключена, и тогда любой, кто дошёл до панели, администратор. Проект молодой (июль 2025), его ведёт один человек, документация на английском, сам я его не запускал.
Хотите внедрить это у себя?

Сделаю под ключ: разберу задачу, назову срок и цену. Чтобы начать, напишите в Telegram одной фразой.

Инвентаризация серверов и портов перед аудитом или переездом

Кто слушает порт 8081 на третьем сервере

Перед аудитом безопасности или переездом на другой хостинг первый вопрос один: что у нас вообще запущено. На пяти VPS обычно находится тестовая админка, про которую все забыли, контейнер с базой, опубликованный на все интерфейсы, и сервис, который ставил ушедший подрядчик. Таблица в экселе устаревает за месяц.

Устройства в сети я уже разбирал: LAN Orangutan их находит, NetAlertX сигналит о новых, NetBox ведёт паспорт. Здесь другой слой: что слушает порты на самих серверах и в Docker.

Что это за проект и как он находит порты

Смотрел 21.10.2026 репозиторий mostafa-wahied/portracker: README, SECURITY.md, CHANGELOG и исходники. Файл LICENSE содержит текст MIT. Репозиторий создан 7 июля 2025 года, не архивирован, около 2,5 тысячи звёзд, 105 форков. Последний релиз v1.3.14 вышел 8 октября 2026, тогда же был последний коммит. Из 91 коммита 86 сделал владелец репозитория, пять второй участник. Образы собираются под amd64 и arm64 и получают тег версии.

На Linux он читает /proc/net/tcp и tcp6, а владельца порта определяет по /proc других процессов, поэтому контейнеру нужен общий с хостом список процессов. Иначе в ход идут ss и netstat. UDP выключен по умолчанию, включается переменной INCLUDE_UDP. Контейнеры он берёт из Docker API и показывает опубликованные порты вместе с внутренними, которые наружу не проброшены. Для TrueNAS есть отдельный сборщик: с API-ключом видны приложения, виртуальные машины и LXC. ВМ при этом доступны только для чтения, а чтобы заглянуть внутрь, на ВМ ставят свой экземпляр.

Цена доступа: сокет Docker и почти root

Пример запуска в README: pid: host, cap_add SYS_PTRACE и SYS_ADMIN, apparmor:unconfined и том /var/run/docker.sock:ro. Режима privileged там нет. По силе такая связка к нему близка, это уже моя оценка, слов автора про неё в README нет.

Суффикс :ro закрывает только файл сокета. В шпаргалке OWASP сказано прямо: read-only монтирование не делает Docker API только читаемым. Взломанная панель с таким доступом означает взломанный сервер.

Автор предлагает смягчение: прокси tecnativa/docker-socket-proxy с CONTAINERS=1, IMAGES=1, INFO=1, NETWORKS=1 и POST=0. Прокси пускает только чтение. Но pid: host и права остаются. В примере к тому же проброшен порт 2375:2375, то есть прокси опубликован на хосте. В README прокси написано никогда не открывать этот порт в публичную сеть, TLS у него нет. В compose-примере оба контейнера и так сидят в общей сети, так что проброс, по моему разбору, не нужен. Проверьте на тестовой машине.

Авторизация, peer-режим и что лежит в SQLite

Авторизация включается переменной ENABLE_AUTH=true. По умолчанию её нет, и README честно пишет: без неё доступ к панели даёт права администратора в интерфейсе и API. После включения мастер создаёт админа, пароль хранится хешем bcrypt, вход идёт по сессии. Двухфакторного входа и SSO не нашёл. В разделе Security журнала изменений за последние месяцы две записи. В v1.3.11 закрыли доступ к настройкам и интеграции без входа при включённой авторизации, нашёл внешний исследователь. В v1.3.14 зашифровали ключи пиров и убрали из диагностики контейнеров переменные окружения и команды. Чинят и пишут об этом открыто, но дыра в авторизации была.

Каждый узел это отдельный экземпляр. Центральная панель сама ходит на адрес пира с заголовком X-API-Key. Исходящие ключи лежат в базе зашифрованными (AES-256-GCM), а ключ шифрования это файл peer-keys.key рядом с базой. Бэкап базы без этого файла бесполезен. HTTP для пиров разрешён, и ключ при нём идёт открытым, поэтому нужен HTTPS или закрытая сеть. Скомпрометированный пир получит свой ключ.

В SQLite лежат пиры, заметки к портам, скрытые порты, свои названия сервисов, пользователи и настройки. Таблицы с историей портов в схеме я не видел: карта текущая, кэш сканирования по README 60 секунд. Кто что открыл вчера, не узнать. Телеметрии в исходниках не нашёл. Иконки сервисов браузер грузит с cdn.jsdelivr.net, и CDN видит названия того, что вы запускаете.

Что важно учесть

Windows. В README только Docker и образ под Linux. В коде есть ветки с netstat -ano, инструкции для Windows-хоста нет, не проверял.

Обзор изнутри. portracker видит сокеты, которые слушает сам хост. Что пропускает файрвол снаружи, какие версии ПО отвечают и есть ли в них уязвимости, он не знает. Свои адреса проверьте снаружи nmap с другой машины и сверьте с картой.

Рамки проекта. Внутренних портов на контейнер по умолчанию показывается не больше 100. Интерфейс и документация на английском. Основной автор один, остановится он, чинить будет некому. Обновление ручное: новый образ с тегом версии, база мигрирует сама. Откат на версию без шифрованных ключей, по SECURITY.md, требует защищённой копии.

Что можно сделать уже сейчас

Поднимите portracker на тестовой машине с прокси для сокета и ENABLE_AUTH=true. Проверьте, видны ли ваши контейнеры, отличаются ли внутренние порты от опубликованных и ловит ли он сервисы вне Docker.

Составьте по каждому серверу таблицу «порт, сервис, владелец, зачем открыт». Заметки ведите прямо в панели. Всё необъяснимое закройте или выясните. Устройства и подсети ведите отдельно, как в NetBox.

Порт 4999 не публикуйте в интернет. Закройте его VPN, внутренней сетью или обратным прокси с аутентификацией и копируйте каталог /data вместе с ключом. Здоровье самих Proxmox и TrueNAS смотрит Pulse.

Инвентаризацию серверов и портов перед аудитом или переездом провожу в рамках ИТ-аудита, закрытие лишнего и регламент оформляю в работе по кибербезопасности.

Частые вопросы

Нужно ли ставить агент на каждый сервер?

По README каждый узел это свой экземпляр portracker, а общая панель добавляет остальные как пиры. TrueNAS можно опрашивать через API-ключ без отдельной установки, но ВМ тогда видны только списком.

Можно ли открыть панель в интернет с включённой авторизацией?

Я бы не стал. У панели доступ к Docker и к процессам хоста, а авторизация без второго фактора и с историей исправленных дыр защищает слабо. Держите её за VPN.

Заменит ли он сканер уязвимостей?

Нет. Он перечисляет, что слушает порт, но версии и уязвимости не проверяет. Для этого нужен отдельный сканер.

Коротко о главном

portracker под MIT собирает порты и сервисы серверов, Docker и TrueNAS в одну живую таблицу без внешней базы. Платить за это приходится сокетом Docker, общим пространством процессов и правами, а вместе с выключенной по умолчанию авторизацией панель сама становится целью. Для инвентаризации перед аудитом он подходит на время и за VPN.

Хотите, чтобы я составил карту портов и сервисов ваших серверов и подготовил регламент проверки? Напишите мне в Telegram кодовое слово «ПОРТЫ».

Обсудим вашу задачу

Что я делаю для бизнеса

Напишите одной фразой, что нужно. Отвечу, что подойдёт, сколько займёт и сколько стоит. Сообщение уже подготовлено.

  • Боты в Telegram, MAX, VK
  • Автоматизация процессов и CRM
  • Аналитика и дашборды
  • Сайты и лендинги под ключ
Пишу о разработке, ИИ и законах для бизнеса

Разборы, кейсы и практика — без воды. Выходит регулярно, читать 3–5 минут.

Готовые решения под ключTurnkey solutionsSoluciones llave en mano交钥匙解决方案Түлхүүр гардуулах шийдэл 451 готовых IT-решений для бизнеса451 ready-made IT solutions for business451 soluciones IT listas para empresas451 个面向企业的现成 IT 解决方案Бизнест зориулсан 451 бэлэн IT шийдэл Автоматизация, боты, AI, 152-ФЗ и платформы · бесплатная консультацияAutomation, bots, AI, data privacy and platforms · free consultationAutomatización, bots, IA, privacidad de datos y plataformas · consulta gratis自动化、机器人、AI、数据合规与平台 · 免费咨询Автоматжуулалт, бот, AI, өгөгдлийн хамгаалалт ба платформ · үнэгүй зөвлөгөө Смотреть каталогView catalogVer catálogo查看目录Каталог үзэх