Назад | Перейти на главную страницу

Безопасный Monit 5.6 httpd на Ubuntu Trusty

Я пытаюсь безопасно установить монитор на 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.

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