在 Ubuntu Trusty 上保护 Monit 5.6 httpd

在 Ubuntu Trusty 上保护 Monit 5.6 httpd

我正在尝试在 Ubuntu 14.04 Trusty 上安全地安装 monit。默认的打包版本是 5.6。据我所知,如果不启用 httpd 服务,monit 基本上无法使用(即您无法启动、重新启动或停止监控服务)。这样对吗?

如果是,我想启用 httpd,但我发现设置身份验证很困难。我想要的配置是允许 root 启动/停止服务。我该如何实现?

我挖出了来自 archive.org 的 5.6 文档并从以下配置开始:

set httpd port 2812
  use address localhost
  allow localhost

这似乎没问题,我猜这允许任何用户连接。现在我想锁定它并让 root 管理服务。我该如何实现?

我尝试了allow @grouproot组(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 身份验证?

答案1

必须打开 httpd 接口才能使命令monit行正常工作。文档指出

如果正在使用 Monit 命令行界面,至少需要一个明文密码(见下文),否则 Monit 命令行界面将无法连接到 Monit Web 界面。

(重点是我的。上面的超链接指向 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 当 httpd 服务器要求身份验证时,他们会admin使用密码来确认自己是用户。foo

请注意,理论上任何localhost知道用户和密码可以连接。但是,正确安装 Monit 的系统范围会将文件monitrc设置为权限 0700 并属于root。当正确安装 Monit 并且密码未共享时,则root只能访问 httpd 界面。

注意:如果您希望能够远程管理,请执行不是只需扩展上述方案以允许来自其他主机的连接:用户名和密码将以明文形式通过网络传输。

相关内容