FiReMQ (Файловая ретрансляция по MQTT
FiReMQ (Файловая ретрансляция по MQTT) — это серверная система для гибкой, автоматической развёртки программ, самораспаковывающихся архивов и выполнения удалённых команд (в cmd или PowerShell от любого пользователя) на большом количестве компьютеров, не связанных одной сетью.
FiReMQ способна эффективно обрабатывать до тысячи агентов одновременно, обеспечивая постоянную обратную связь через MQTT, включая сбор характеристик агентов и контроль выполнения запросов (ссылки на GitFlicи GitHub).
FiReAgent — это программное обеспечение, которое устанавливается на клиентские компьютеры для обработки запросов от FiReMQ.
Подробней о FiReAgent на репозитории GitFlic или GitHub.
FiReMQ является кроссплатформенным (для Linux или Windows), основная ОС для работы - это Linux, Windows же больше для отладки и “на пощупать” в виде портативной DEMO версии.
Проект полностью открытый и бесплатный, распространяется по лицензии MIT.
Под капотом:
FiReAgent является консольной программой агентом, работящая в режиме службы, совместно с другими программами-модулями на компьютере клиента, связь с серверной частью FiReMQ производится через защищённый (mTLS + авторизация по логину и паролю) канал MQTT (с уровнем гарантии доставки QoS2), этот лёгкий TCP протокол хорошо оптимизирован для работы в нестабильных или низкокачественных сетях.
Протокол для скачивания клиентами бинарных файлов с сервера выбран QUIC, это современный транспортный протокол, работающий поверх UDP, великолепно показал себя в тестах с разными размерами файлов при кратковременных обрывах связи, или переключении сети, в нём так же реализовал докачку файлов при кратковременных разрывах интернета, загрузка всегда продолжается с того места, где произошёл разрыв + реализована перезакачка файла в случаях неверного хеша (проверка хеша реализована при загрузке файла на сервер и при скачивании клиентом “на лету” через быстрый алгоритм XXH3), защита используется в виде mTLS + индивидуальные, одноразовые токены с коротким сроком жизни, так же если нет активных задач, то QUIC порт отключается для снижения поверхности атак.
Все важные данных хранятся во встраиваемой, быстрой и отказоустойчивой БД типа “ключ — значение”, которую легко бэкапить.
За защиту от большинства атак отвечает Coraza WAF — это высокопроизводительный брандмауэр веб-приложений, использующий набор правил OWASP CRS (обновление правил легко реализовано в WEB админке во вкладке “О проекте”), так же в защите используется валидация вводимых данных на стороне сервера, строгий набор заголовков безопасности HTTP, защита от DoS атак, использование CSRF токенов для POST запросов, “base64Captcha” капча после ввода 2-х неудачных попыток логина или пароля на странице авторизации и алгоритм шифрования “chaCha20-Poly1305” для данных куки в WEB браузере.
Минимальные системные требования
ОС: Linux, ядро ≥ 5.4 (LTS)
CPU: 2 ядра, x64 с поддержкой AES-NI
ОЗУ: 4 Гб DDR3
Диск: 20 Гб SSD
Сеть: 100 Мбит/с
Что может FiReMQ + FiReAgent:
В FiReMQ всё взаимодействие с клиентами производится через WEB админку.
-
Можно производить удалённую установку программ, для этого выделяются нужны клиенты и выбрать “Установка ПО”, где нужно загрузить исполняемый файл на сервер, есть возможность выбора места загрузки файла, так же можно указать необходимые аргументы для его запуска, выполнить запуск от любого доступного пользователя со стороны клиента (нужно наличие достаточных прав доступа) как с повышенными правами, так и без них, либо же можно просто указать, что бы агент скачал файл, без его запуска вовсе.
-
Можно производить удалённое выполнение cmd или PowerShell команд, для этого выделяются нужны клиенты и выбрать “Выполнить cmd / PowerShell”, в комплекте есть шпаргалка с готовым списком команд для обеих видов терминала с их кратким описанием (команды можно использовать как самостоятельно, так и для своих скриптов), есть возможность указать рабочую папку, а так же выполнить команды от любого доступного пользователя со стороны клиента, как с повышенными правами, так и без них. Все команды на стороне клиента выполняются как скрипты.
-
Отчёт с обратной связью о выполненных запросах от каждого клиента по установкам ПО и по cmd / PowerShell можно посмотреть, открыв окно “Отчёт”, в котором будет две соответствующие вкладки, в которых можно выбрать ранее созданный запрос (в виде короткой даты и времени создания), там же можно повторить запрос для каждого клиента индивидуально, удалить конкретного клиента из списка (независимо выполнился запрос или ещё нет), либо удалить весь запрос со всеми клиентами. В cmd/PowerShell можно дополнительно посмотреть процесс выполненной команды для конкретного клиента.
-
Админские учётные записи (в WEB админке) общие (видны всем админам, включая права доступа), ограничения на количества создаваемых учётных записей нет. Можно достаточно гибко настроить права доступа для каждой учётки, даже при полном ограничении действий какой либо учётки, она сможет видеть все созданные запросы на WEB, но сделать ничего не сможет (так называемый режим чтения).
-
В “Меню → Логи” можно посмотреть актуальные логи в браузере, либо скачать HTML лог на компьютер (период хранения логов и их минимальное количество, которое должно оставаться при автоматической очистке, настраивается в главном конфиге “server.conf”).
-
В “Меню → Статистика сервера” можно посмотреть информацию о Linux сервере и самом FiReMQ.
-
В “Меню → Обновление FiReAgent” можно принудительно запросить обновления FiReAgent для онлайн клиентов, а так же смотреть актуальную информацию о модулях и их версиях, включая дату и время последней проверки у конкретного клиента.
-
Можно создавать любое количество групп и подгрупп для клиентов и перемещать клиентов между ними.
-
У каждого клиента можно просмотреть актуальную информацию по его “железу”, как через кастомный способ, реализованный в модуле на стороне клиента, так и через AIDA64 (опционально, если добавлен в установщике FiReAgent).
-
Для каждого клиента можно посмотреть информацию о его белом и локальном IP, версию Windows, его ID и дату когда клиент последний стал онлайн или офлайн, а так же задать ему любое, понятное имя.
-
Поддерживается автоматическое разлогирование из учётной записи в целях безопасности, если нет активности с сервером из WEB админки в течение 40 минут.
-
Поддерживаются горячие клавиши для Переименования клиента “F2” (можно удерживать F2 и курсором проводить вниз по списку с клиентами, для появления строки с вводом нового имени - это массовый вызов переименования, сохранение же происходит нажатием Enter на конкретном клиенте, отменить переименование можно клавишей Esc, так же ведя по списку, либо обновить страницу), для получения кастомной (Lite) информации о клиенте “F1”, либо из Aida64 “F4”.
- Установка FiReMQ на сервер:
Установка рассчитана на Linux-дистрибутивы с пакетным форматом DEB (Debian, Ubuntu, Mint и др.), для этого создал готовый DEB-пакет (RPM пакета пока нет, если потребуется в будущем, создам).
Процесс установки очень простой, с минимальным использованием консоли. Установку и настройку самого Linux сервера я не рассматриваю.
Для пробы можно скачать DEMO на Windows из релизов, распаковать и запустить исполняемый файл "FiReMQ.exe".
- Загрузить на Linux сервер любым способом DEB пакет и установить его командой “apt install ./firemq-*-linux-amd64.deb” (необходимые зависимости подтянутся автоматически).
- В процессе установки будет запрос на указание белого IP-адреса или домена, тут важно не ошибиться в воде и нажать Enter.
- Необходимо скачать 3 файла сертификата с Linux сервера по пути “/etc/firemq/certs”, а именно: “client-cert.pem”, “client-key.pem”, и “server-cacert.pem”, они необходимы под подключения клиентской части FiReAgent к серверу!
- Зайти в WEB админку по IP адресу и порту по умолчанию 8443, Логин и пароль по умолчанию “FiReMQ”, ОБЯЗАТЕЛЬНО СМЕНИТЬ при первом входе “Меню → Учётные записи Админов”, а так же сменить логин и пароль MQTT “Меню → MQTT авторизация”, по умолчанию стоит тоже “FiReMQ”, после смены ещё раз зайти в “Меню → MQTT авторизация” и убедиться, что “Резервный аккаунт” стоит в состоянии ВЫКЛЮЧЕН.
- Установка и настройка FiReMQ завершена, осталось настроить проброс портов на маршрутизаторе, для MQTT нужно открыть TCP порт (по умолчанию 883) и для QUIC протокола UDP порт (по умолчанию 4242), порт WEB админки лучше НЕ выбрасывать без необходимости наружу.
Почти все пути объявлены в главном конфиге “/etc/firemq/config/server.conf”, если по какой то причине потребуется изменить расположение того или иного файла, либо изменить порт, то это можно сделать в нём, затем сохранить конфиг и перезапустить сервер командой “systemctl restart firemq”.
Осталось подготовить установщик FiReAgent, добавив в него скаченные сертификаты и простейший конфиг файл для развёртки на клиентских машинах, для этого нужно перейти в репозиторий GitFlic или GitHub, выбрать и подготовить один из двух способов развёртки агента и установить клиентам
После запуска агента, почти сразу же в WEB админке FiReMQ появится данный клиент в группе “Новые клиенты”, подгруппа “Нераспределённые”, где можно будет его переименовать и переместить в новую группу с подгруппой.
Узнать версию FiReMQ или ServerUpdater:
FiReMQ --version
ServerUpdater --version
Либо из WEB админки в окне “О проекте”.
Справка по доступным ключам FiReMQ:
FiReMQ ?
FiReMQ -h
FiReMQ --help
Автобэкапы и откат БД:
Путь, интервал и количество создания бэкапов задаются в главном конфиге “server.conf” (/etc/firemq/config/server.conf), по умолчанию 1 раз каждые 12 часов, до 60 бэкапов с поддержкой ротации.
Для интерактивного отката БД из бэкапа нужно остановить службу (systemctl stop firemq), затем запустить FiReMQ от root с ключом “–RestoreDB”, после отката запустить службу (systemctl start firemq).
Бэкапы создаются по пути, указанном в главном конфиге “server.conf” в параметре “Path_Backup=” (по умолчанию сюда “/var/backups/firemq/Backup”).
Сброс пароля WEB админки:
Для сброса пароля любой учётной записи из WEB админки, нужно остановить службу (systemctl stop firemq), затем при запуске FiReMQ от root с ключом “–PasswdDB”, в интерактивном режиме выбрать нужную учётную запись, сменить пароль и запустить службу (systemctl start firemq).
Это может понадобиться, если забыт логин или пароль от WEB админки и нет другого способа авторизоваться, запуск с этим ключом возможен только от root или через sudo с остановленной службой firemq. При запуске утилита сама определяет расположение БД, считывая все учётные записи и позволяет увидеть логины и кому они принадлежат, а так же задать новый пароль.
Описание исполняемых файлов:
- FiReMQ — основное серверное приложение, которая работает как служба (Go).
- ServerUpdater — утилита для проверки обновлений FiReMQ (только для Linux) с репозитория GitFlic или GitHub, ручное обновление запускается из WEB админки в окне “О проекте” (Go).
- 7z/7zzs — утилита архиватора 7-ZIP.
Сертификаты FiReMQ:
На Linux сервере PEM сертификаты расположены по пути "/etc/firemq/certs":
- "server-cacert.pem" - Корневой сертификат сервера
- "server-cert.pem" - Серверный сертификат
- "server-key.pem" - Приватный ключ сервера
- "client-cacert.pem" - Корневой сертификат клиента
- "client-cert.pem" - Клиентский сертификат
- "client-key.pem" - Приватный ключ клиента
Сертификаты генерируются автоматически при первой установке DEB-пакета, либо при их удалении из каталога “/etc/firemq/certs” и перезапуске FiReMQ.
Можно заменить сертификаты на свои, для этого сначала нужно остановить службу командой “systemctl stop firemq”, затем удалить все сертификаты из “/etc/firemq/certs”, скопировав на их место свои, назначить пользователя и группу “firemq” новым сертификатом командой “sudo chown firemq:firemq /etc/firemq/certs/*” и запустить FiReMQ “systemctl start firemq” (FiReMQ сама поменяет права на файлы сертификатов на нужные).
В папке “Документы” лежит ручная инструкция “Создание mTLS сертификатов FiReMQ (на стороне сервера).odt” по созданию сертификатов, она не понадобится, но в ней понятно описано, как генерируются сертификаты самой FiReMQ.
Пути расположения файлов в Linux:
- “/etc/firemq/certs/” — тут генерируются и хранятся файлы PEM сертификатов при первом запуске FiReMQ (по умолчанию пустая).
- “/etc/firemq/config/” — тут хранятся конфиги правил OWASP CRS (“coraza.conf”, “crs-setup.conf” и папка “rules”), файл ключа “chacha20_key” для шифрования/дешифрования логина авторизованного админа в куках браузера, конфиг “mqtt_config.json” с логином и паролем MQTT и главный конфиг “server.conf”, в котором указаны почти все пути и настройки FiReMQ.
- “/opt/firemq/” — тут лежат бинарные файлы “FiReMQ” и “ServerUpdater”.
- “/usr/local/share/firemq/7z” — тут хранится бинарный файл архиватора 7-ZIP “7zzs” и файл с его лицензией.
- “/usr/local/share/firemq/data” — тут статические данные WEB админки (HTML, JS, CSS, SVG, ICO).
- “/var/backups/firemq/Backup/” — тут будут создаваться не более одной копии архивов с бэкапами FiReMQ и правил OWASP CRS (появляются после первого обновления).
- “/var/lib/firemq/db” — тут создастся папка с БД (BadgerDB) при первом запуске FiReMQ, рекомендую делать бэкап этой БД (желательно при остановленной службе FiReMQ), позже реализую автобэкапы автоматически.
- “/var/lib/firemq/Downloads” — сюда загружаются бинарные файлы из WEB админки “Установка ПО”, и ожидающие скачивания клиентами через протокол QUIC.
- “/var/lib/firemq/Info_files” — сюда загружаются сжатые в “.html.xz” файлы с информацией о “железе” клиентов сформированные кастомным способом и через AIDA64 (если добавлена в установщик FiReAgent’а).
- “/var/log/firemq/” — тут создаётся HTML лог “FiReMQ_Logs.html” от FiReMQ и ServerUpdater.
Удаление клиентов “FiReAgent” из WEB админки:
Предусмотрено централизованное, массовое, либо одиночное удаление установленных агентов “FiReAgent” из WEB админки.
Для этого достаточно выделить клиентов в WEB админке, которых нужно удалить, открыть “Меню → Удаление “FiReAgent””, ввести подтверждающее слово “Удаляем!” и нажать кнопку “Удалить”, после чего данные клиенты удалятся из отчёта загрузок сервера (если были), из БД и произойдёт полное удаление со стороны клиентов.
Смена MQTT Логина/Пароля у всех клиентов:
Предусмотрена простая, удалённая смена логина/пароля от MQTT для всех клиентов из WEB админки.
Для этого зайти в “Меню → MQTT авторизация”, задать новые сложные логин и пароль, нажать “Сохранить” и подтвердить, после этого можно открыть окно по кнопке “Статус” и увидеть как меняются статусы у клиентов. После того как все клиенты сменят свой статус на успешный, резервный аккаунт сам отключится.
ВАЖНО, не отключать вручную резервный аккаунт, пока все клиенты не сменят логин/пароль на новые, иначе те клиенты, кто не успел актуализировать новые данные, не смогут это сделать, это связано со спецификой библиотеки MQTT брокера.
В случае ошибки появится краткое описание ошибки у конкретных клиентов и можно будет повторить запрос кнопкой “Повторить для ошибок”, в данном случае повторный запрос отправиться только клиентам, у которых были ошибки.
Перед установкой нового логина/пароля, потребуется сначала нажать кнопку “Очистить сессию” в окне статуса, что бы удалить старую сессию.
СКРИПТЫ ДЛЯ УПРОЩЕНИЯ АВТОМАТИЗАЦИИ (в папке “Скрипты”).
Установка PFX сертификатов:
“Мастер-скрипт PFX.ps1” создаёт инсталляционный скрипт “Install-*.ps1” для массовой установки PFX сертификатов через FiReMQ, с помощью PowerShell.
Инструкция:
1) Поместить PFX сертификат (название может быть любым) рядом со скриптом “Мастер-скрипт PFX.ps1” (PFX сертификатов может быть любое количество в папке, скрипт сам спросит какой из них выбрать), через правый клик мыши на скрипте выбрать “Выполнить с помощью PowerShell” и следовать интерактивным подсказкам, в конце создастся новый скрипт “Install-*.ps1” (к примеру: Install-Тест.ps1).
2) Через правый клик на скрипте “Install-Тест.ps1” выбрать “Изменить” (откроется в редакторе Windows PowerShell ISE), либо открыть в Notepad++, выделить всё и скопировать (Ctrl+A / Ctrl+C).
3.1) В FiReMQ выделить нужных клиентов, кликнуть на кнопку “Выполнить cmd / PowerShell”, выбрать “Тип терминала: PowerShell”, в поле “Команда:” вставить ранее скопированный скрипт, указать имя пользователя и пароль и нажать “Отправить”.
3.2) ВАЖНО, если установка производится в хранилище для текущего пользователя (CurrentUser) и у данного пользователя ОГРАНИЧЕННЫЕ ПРАВА и/или выбрана установка в “Доверенные корневые центры сертификации (Root)”, тогда в FiReMQ после указания имени пользователя и пароля пользователю, нужно обязательно выбрать “Выполнять только для пользователей, вошедших в систему”, при этом пользователь должен быть авторизован - это ограничения самой Windows!
4) Всё, можно наблюдать за результатом в “Отчёт -> По cmd / PowerShell”.
ㅤ
Удаление PFX сертификатов:
Скрипт для массового удаления PFX сертификатов из хранилища Windows через FiReMQ, с помощью PowerShell.
Инструкция:
1) Через правый клик на скрипте “Install-Тест.ps1” выбрать “Изменить” (откроется в редакторе Windows PowerShell ISE), либо открыть в Notepad++, сверху в пункте “===== НАСТРОЙКИ =====” внести нужные правки для удаляемых сертификатов, выделить всё и скопировать (Ctrl+A / Ctrl+C).
2) В FiReMQ выделить нужных клиентов, кликнуть на кнопку “Выполнить cmd / PowerShell”, выбрать “Тип терминала: PowerShell”, в поле “Команда:” вставить ранее скопированный скрипт и нажать “Отправить”.
3) Всё, можно наблюдать за результатом в “Отчёт -> По cmd / PowerShell”.
Скриншоты:
Все скриншоты в папке “Скриншоты”.

Наглядное древо FiReMQ в Linux:
📁 /
-
📁 etc
-
📁 firemq
-
📁 certs
- 📄 client-cacert.pem
- 📄 client-cert.pem
- 📄 client-key.pem
- 📄 server-cacert.pem
- 📄 server-cert.pem
- 📄 server-key.pem
-
📁 config
-
📄 chacha20_key
-
📄 coraza.conf
-
📄 crs-setup.conf
-
📄 mqtt_config.json
-
📁 rules
- 📄 asp-dotnet-errors.data
- 📄 iis-errors.data
- 📄 REQUEST-901-INITIALIZATION.conf
- 📄 REQUEST-905-COMMON-EXCEPTIONS.conf
- …
-
📄 server.conf
-
-
-
-
📁 opt
-
📁 firemq
- 📄 FiReMQ
- 📄 ServerUpdater
-
-
📁 usr
-
📁 local
-
📁 share
-
📁 firemq
-
📁 7z
- 📄 7zzs
- 📄 License Linux ‘7zzs’.txt
-
📁 data
-
📄 auth.html
-
📁 css
- 📄 auth.css
- 📄 clients.css
- 📄 groups.css
- 📄 info-viewer.css
- …
-
📄 favicon.ico
-
📁 icon
- 📄 AccountsAdmin.svg
- 📄 CheckMark.svg
- 📄 Del_FiReAgent.svg
- 📄 Delete.svg
- …
-
📄 index.html
-
📁 js
- 📄 auth.js
- 📄 clients.js
- 📄 csrf.js
- 📄 groups.js
- …
-
-
-
-
-
-
📁 var
-
📁 backups
-
📁 firemq
-
📁 Backup
- 📄 bak_05.10.25(в_16.34.03)_OWASP_CRS_4.18.0.7z
- 📄 bak_20.10.25(в_18.57.21)_ver=17.09.25_FiReMQ.zip
-
-
-
📁 lib
-
📁 firemq
-
📁 db
-
📁 FiReMQ_DB
- 📄 000733.sst
- 📄 000734.sst
- 📄 001202.vlog
- 📄 001203.vlog
- 📄 DISCARD
- 📄 KEYREGISTRY
- 📄 MANIFEST
-
-
📁 Downloads
- 📄 Test.exe
-
📁 Info_files
- 📄 Aida_000714-TEST_268859b.html.xz
- 📄 Lite_000714-TEST_268859b.html.xz
-
-
-
📁 log
- 📁 firemq
- 📄 FiReMQ_Logs.html
- 📁 firemq
-
Заметки:
Автоматические проверки обновлений с репозиториев происходят только вручную с WEB админки из окна “О проекте” + создаётся один бэкап предыдущей версии, для возможности отката в случае каких либо непредвиденных проблем (только для Linux).
Если остановить службу “systemctl stop firemq” и запустить FiReMQ напрямую “/opt/firemq/FiReMQ”, то он будет работать в режиме отладки.
Хоть FiReMQ и имеет очень хорошую, базовую защиту, тем не менее без надобности лучше НЕ выставлять WEB админку наружу в интернет, безопасность лишней не бывает.
Если по какой то причине нужно создать свой DEB пакет (рекомендую Debian), то можно воспользоваться готовой пошаговой инструкцией “Создание DEB пакета.odt” из папки “Документы”.
Подключение между сервером и клиентами защищено с помощью mTLS, как в MQTT (TCP соединение) + авторизация по логину и паролю, так и через QUIC (UDP соединение) + индивидуальные, одноразовые токены с коротким сроком жизни.
Никакая информация со стороны клиентов, либо сервера не передаётся на чужие сервера!
Автор Otto, г. Омск 2025-2026