强制 Apache ActiveMQ 的 JMX 只能从 localhost 访问

Posted

技术标签:

【中文标题】强制 Apache ActiveMQ 的 JMX 只能从 localhost 访问【英文标题】:Force JMX of Apache ActiveMQ to only be accessible from localhost 【发布时间】:2021-05-12 13:27:15 【问题描述】:

我有一个运行 Apache ActiveMQ 的 RHEL6 服务器,但我找不到禁用远程访问 JMX 的方法。 我可以完全禁用 JMX,但这会限制 ActiveMQ 的功能,它使用 JMX 访问代理以获取状态信息,或传达关闭请求(ActiveMQ 回退到 SIGKILL!)。 我想让 ActiveMQ 可以通过 JMX 访问,但只能从 localhost 访问。

根据Apache's website,默认情况下应该禁用远程连接,但我可以从其他机器连接到默认的 1099 端口。据我所知,JMX 的设置保留为默认设置。

我知道一些类似的问题,但建议的解决方案对我没有用,尤其是:

添加 -Dcom.sun.management.jmxremote.host=localhost 和/或 -Dcom.sun.management.jmxremote.local.only=true 没有帮助 添加 -Djava.rmi.server.hostname=localhost 也无济于事

尽管这个 solution 和一些 cmets 似乎表明我正在运行的 Java 版本 (>8u102) 修复了一些已知问题。

一些解决方案谈到有必要切换到“编码”(例如,this 或 this),但我不清楚如何将这种方法与 ActiveMQ 一起使用。

【问题讨论】:

【参考方案1】:

在 bin/env(Apache ActiveMQ 构建)中添加:

-Dcom.sun.management.jmxremote.host=127.0.0.1

然后观察JMX端口绑定only到本地ip

% netstat -na | grep 1099
tcp4       0      0  127.0.0.1.11099        *.*                    LISTEN     

【讨论】:

我又试了一次,还是不行。 netstat 显示本地地址0.0.0.0:1099 和国外地址0.0.0.0:*

以上是关于强制 Apache ActiveMQ 的 JMX 只能从 localhost 访问的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 jmx 从 activemq 获取消费者列表和消费者“选择器”?

ActiveMQ Web Console

活动 MQ JMX SSL

ActiveMQ :安装启动及测试

org.apache.tomcat.jdbc.pool.jmx.JmxUtil.registerJmx Jmx 注册失败

Apache Solr JMX服务远程代码执行漏洞复现