在Ubuntu Trusty上保护Monit 5.6 httpd

我试图在Ubuntu 14.04 Trusty上安全地安装monit。 默认的打包版本是5.6。 从我所看到的情况来看,如果没有启用httpd服务,monit基本上不可用(即无法启动,重新启动或停止监视服务)。 这是正确的吗?

假设是,我想启用httpd,但我觉得设置身份validation很困难。 我想要的configuration是允许root启动/停止服务。 我怎样才能做到这一点?

我从archive.org中挖掘了5.6文档,并开始使用以下configuration:

set httpd port 2812 use address localhost allow localhost 

这似乎工作正常,我想这允许任何用户连接。 现在我想locking它,让rootpipe理服务。 我怎样才能做到这一点?

我尝试使用root组( root用户是其成员)的allow @group语法:

 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> 

我在这里错过了什么? 有一些额外的pamauthentication,我需要做的或什么?

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

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

(Emphasis mine。我上面的超链接指向了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服务器要求authentication时,用户将自己标识为具有密码foo用户admin

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

注意:如果您想要远程pipe理,请不要简单地扩展上面的scheme以允许来自其他主机的连接:用户名和密码将通过电报以明文forms显示。