保护JMX 并防止远程客户端使用javax.management.load.MLet注册任意Mbeans JMX



上下文:在我们的场景中,我们不会传递com.sun.management.jmxremote.port因此我们只运行JMX进行本地监控。 要从客户端远程监控该生产主机(称为 x((称为 y(,用户可以从 x 上的 jmx 服务端口创建 ssh 数据包转发(假设来自 y 的用户有权访问在 x 上为 JMX 提供服务的公共端口(。

如果我错了,请纠正我:由于用户可以访问 X 上的 JMX 服务端口,我认为这也使 y 上的用户能够使用javax.management.loading.MLet在生产主机 x 上执行任意代码。

来自Orcales监控和管理文档,可以肯定地说,如果我们在配置中使用密码身份验证

com.sun.management.jmxremote.authenticate=true
com.sun.management.jmxremote.ssl=true

这是否使 JMX 访问安全,这意味着是否可以安全地说用户将无法使用javax.management.loading.MLet在生产主机 x 上执行代码,即使他们可以访问其上的 JMX 服务端口?

关于保护 JMX 有什么更好的建议吗?

这是正确的,但请记住,除非用户拥有正确的凭据,否则他们根本无法访问 JMX 服务。换句话说,您不仅阻止了 MLet 注册,还阻止了所有内容。您还应该仔细选择身份验证方法。如果使用属性文件,则对文件系统具有 SSH 访问权限的用户可能能够获取凭据。

相关内容

最新更新