我正在尝试在 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 @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 身份验证?
答案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 界面。
注意:如果您希望能够远程管理,请执行不是只需扩展上述方案以允许来自其他主机的连接:用户名和密码将以明文形式通过网络传输。