Я пытаюсь безопасно установить монитор на Ubuntu 14.04 Trusty. Пакетная версия по умолчанию - 5.6. Из того, что я вижу, monit практически невозможно использовать без включенной службы httpd (т.е. вы не можете запустить, перезапустить или остановить мониторинг службы). Это правильно?
Предполагая, что это так, я бы хотел включить httpd, но у меня возникают трудности с настройкой аутентификации. Конфигурация, которую я хочу, - это позволить root запускать / останавливать службы. Как я могу этого добиться?
Я выкопал 5.6 документы с archive.org и запустился со следующей конфигурацией:
set httpd port 2812
use address localhost
allow localhost
Кажется, это работает нормально, и я думаю, это позволяет любому пользователю подключиться. Теперь я хочу заблокировать это и позволить пользователю root управлять службами. Как я могу этого добиться?
Я попробовал allow @group
синтаксис с root
группа (которая root
пользователь является членом):
set httpd port 2812
use address localhost
allow localhost
allow @root
и перезапустился.
Когда я делаю monit status
, Я вижу monit: cannot read status from the monit daemon
Когда я делаю monit -v status
, Я вижу это:
monit: Debug: Adding host allow 'localhost'
monit: Debug: Skipping redundant host 'localhost'
monit: Debug: Skipping redundant host 'localhost'
monit: Adding PAM group 'root'.
<Long list of all runtime constants and service list omitted>
Что мне здесь не хватает? Есть ли дополнительная аутентификация pam, которую мне нужно сделать или что-то в этом роде?
Интерфейс httpd должен быть включен для командной строки monit
работать. В в документации говорится:
Если используется интерфейс командной строки Monit, необходим хотя бы один пароль в открытом виде (см. ниже), иначе интерфейс командной строки Monit не сможет подключиться к веб-интерфейсу Monit.
(Акцент мой. Моя гиперссылка выше указывает на документ для 5.6, но это также верно для 5.4 и последней версии на момент написания этого ответа.)
Два известных мне способа управления Monit - это подключение браузера к интерфейсу httpd или использование monit
команда. Действительно, если интерфейс httpd не включен, тогда Monit воля контролировать систему, но вы не можете отдавать ей команды.
Я сделал это в своей системе следующим образом:
set httpd port 2812 and
use address localhost
allow localhost
allow admin:foo
(Пожалуйста, используйте настоящий пароль, а не foo
.)
Это ограничивает доступ к интерфейсу httpd только для пользователей, которые подключаются из localhost
и кто идентифицирует себя как пользователь admin
с паролем foo
когда httpd-сервер запрашивает аутентификацию.
Обратите внимание, что теоретически любой localhost
который знает пользователь и пароль могут подключиться. Однако правильная общесистемная установка Monit будет иметь monitrc
файл установлен с разрешениями 0700 и принадлежит root
. Если Monit установлен правильно и пароль не известен, то только root
может получить доступ к интерфейсу httpd.
Примечание: если вы хотите иметь возможность управлять удаленно, сделайте не просто расширите схему, указанную выше, чтобы разрешить соединения с других хостов: имя пользователя и пароль будут передаваться по сети открытым текстом.