Монитор как частный пульт управления

Он умеет менять конфигурацию, а не только показывать

Задача. На управляемом узле монитор нужен — ради журналов, страницы состояния и списка писем, — но не должен стать способом для всякого, кто дотянулся до порта, прочесть учёт, подменить лицензию, править конфигурацию или остановить отправку.

Из чего складывается:

  • http-mgmt-port — порт монитора, в стороне от портов, которые занимает другое ПО;
  • http-access — список адресов с уровнями доступа, он же вся модель разграничения;
  • web-monitor-access — сертификат и совет не выставлять монитор в интернет.

Области у составляющих разные. Всё это уровня узла: монитор — один слушатель на узел.

Как они взаимодействуют. Это одно решение из трёх частей, и итог задаёт слабейшая. Узкий список на порту по умолчанию — всё равно служба, через которую каждый с уровнем operator выполняет команды; хороший сертификат при открытом списке защищает передачу того, до чего добираться не следовало. Суть схемы: строка http-access с уровнем operator или admin — это правило межсетевого экрана с правами оболочки.

Главная ловушка — считать уровень monitor безопасным. Без оговорки deny-logs он отдаёт журналы и файлы учёта — адреса получателей и ответы приёмников; «только посмотреть очередь» таким уровнем не выдаётся.
Что делает Хаб. Применяет частично. Порт монитора задаёт сам (http-mgmt-port), в http-access — 127.0.0.1 и ::1 с уровнем admin, адреса Хаба — monitor; команды Хаб отправляет по ключу. Самоподписанный сертификат установки не заменён, а http-redirect-to-https false — опрос идёт по обычному http://.
Рекомендуемые значения

Три части и цена пропуска каждой:

Часть Что задать Что будет, если пропустить
http-mgmt-port свой порт, проверенный на занятость монитор спорит за 8080 с другим ПО
http-access только нужные адреса, уровень не выше нужного команды и учёт доступны лишним
сертификат подписанный вместо самоподписанного подлинность узла не проверить
Порт, уровни доступа, оговорка deny-logs, сертификат и совет про интернет — из руководства (§ 3.3.1.58.1, § 3.3.1.58.3, § 5.1). Сама схема — наша гипотеза.
Пример в конфигурации
http-mgmt-port 8190
http-access 127.0.0.1 admin
http-access 203.0.113.10 monitor,deny-logs
Адрес 203.0.113.10 — для примера; deny-logs отрезает журналы и учёт, оставляя страницы монитора.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Как проверить на узле
Проверить, кому и на каком порту открыт монитор:
grep -n 'http-mgmt-port\|http-access\|http-redirect-to-https' /etc/pmta/config
ss -ltnp | grep pmtahttp
Строка шире адресов, которым монитор нужен, — лишний вход; ss покажет адрес и порт, на которых монитор слушает.