http-access

Globalкритичнонужен перезапускХаб задаёт сам

Кто и с какими правами попадает в веб-монитор
в конфигурации это строкаhttp-access noneвнутри блока Global
Кого пускать в консоль управления узлом

Строка задаёт, каким адресам открыт монитор и что им там позволено. Уровней четыре: none — никого; monitor — только чтение; operator — плюс просмотр конфигурации и выполнение команд; admin — плюс правка конфигурации. К monitor можно добавить deny-logs и закрыть доступ к журналам.

Монитор — это консоль управления, а не панель просмотра. С него правят конфигурацию, выполняют команды, удаляют письма из очереди. Доступ уровня admin равен доступу к узлу.

Строка повторяется и разбирается сверху вниз — совпал первый подходящий. Значит, широкая строка выше узкой перекрывает её: http-access 0/0 monitor в начале файла делает всё, что ниже, бессмысленным.

По умолчанию закрыт всем. Монитор слушает порт и отвечает 403, пока адрес не разрешён здесь. Руководство отдельно предупреждает: в интернет управляющий интерфейс выставлять не следует.

Главная ловушка — считать этот список защитой, раздав при этом ключ. Руководство говорит прямо (§ 8.2, § 8.3): правильный ключ в заголовке отменяет ограничения по адресу и работает с любого адреса. Список — первый рубеж, ключ его обходит, а не дополняет.
Что делает Хаб. Пишет — три строки и больше: 127.0.0.1 admin и ::1 admin для самого узла, затем monitor каждому известному адресу Хаба. Своему адресу Хаб намеренно даёт только чтение, а административные действия выполняет ключом.

Причина в коде записана: адрес Хаба — часто общий выход в сеть, и уровень admin на нём достался бы каждой машине за тем же выходом. Если адрес Хаба неизвестен, вместо строки пишется комментарий, и доступ остаётся только локальным.

Рекомендуемые значения

Уровень выбирают по тому, что именно нужно тому, кого пускаете:

Уровень Что даёт
none ничего; явный запрет выше по списку
monitor чтение состояния и очередей
monitor,deny-logs то же без доступа к журналам
operator плюс чтение конфигурации и команды
admin плюс правка конфигурации

Порядок строк значим: узкие выше широких.

Четыре уровня, уточнение deny-logs, порядок разбора сверху вниз и умолчание none — из руководства (§ 3.3.1.58.3). Что ключ отменяет ограничение по адресу — оттуда же (§ 8.2, § 8.3). Разбор нашей схемы доступа — по коду Хаба.
Пример в конфигурации
# узкие строки выше широких: разбор идёт сверху вниз
http-mgmt-port 1000
http-access 127.0.0.1 admin
http-access 10.0.0.5 monitorhttp-access 0/0 none
Последняя строка не обязательна — умолчание и так none, — но делает намерение явным для того, кто будет читать файл после вас.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

Типичные ошибки и проблемы

что делают не так и чем это кончается3 ошибки▶

Ставят широкую строку выше узкой

§ 3.3.1.58.3

Чем чреватоРазбор идёт сверху вниз до первого совпадения. 0/0 monitor в начале списка делает все последующие строки недостижимыми, включая явные запреты.
Как заметитьАдрес получает не тот уровень, который для него выписан ниже.
Как правильноПереставить: самые узкие строки первыми, широкие последними.

Закрывают монитор по адресам и раздают ключ

§ 8.2

Чем чреватоКлюч отменяет ограничение по адресу и работает откуда угодно. Список перестаёт что-либо ограничивать для того, у кого ключ есть.
Как заметитьВ журнале монитора успешные запросы с адресов, которых в списке нет.
Как правильноСчитать ключ равным полному доступу и защищать его так же, как сам узел; список адресов — рубеж для тех, у кого ключа нет.

Дают уровень admin общему выходу в сеть

наш опыт

Чем чреватоУровень достаётся не одному человеку, а каждой машине за тем же выходом — всему офису или всей подсети.
Как заметитьВ списке стоит admin на адрес шлюза или широкую подсеть.
Как правильноДавать адресу только чтение, а административные действия выполнять ключом — так делает Хаб.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
http-access CIDR { monitor[,deny-logs] | operator | admin | none }
Значения
CIDR и один из уровней none, monitor[,deny-logs], operator, admin
Умолчание
none § 3.3.1.58.3
Применение
нужен перезапуск сервиса
Очередь
уже поставленное в очередь не затронет
Где писать
Global
Сколько раз
можно повторять
Всё здесь — из руководства, с разделом.
Наследование
Наследования нет: строки пишутся в корне файла, раздел Global. Список общий на весь узел: разделения по интерфейсам или по API у него нет — монитор, API конфигурации и API команд разбираются одним и тем же списком.
⇄

Связанные директивы

3 связи

Как проверить на узле
Проверять надо с того адреса, о котором речь, — ответ 403 и есть результат:
curl -s -o /dev/null -w '%{http_code}\n' http://NODE:1000/status
200 — адрес разрешён, 403 — нет. Ошибки разбора самой строки MTA пишет в журнал монитора /var/log/pmta/pmtahttp.log; туда же попадает адрес, с которого пришёл отказ, — руководство советует смотреть именно там.
В Хабе
Управляется
Инфраструктура → Параметры узла
Значение
Хаб подбирает сам — темп, стадия прогрева, метрики
Цена ошибки
опасно: последствия переживут откат
Сценарии
Безопасность узла · Собрать телеметрию
Важность
критично