我使用CentOS 6.5和Jetty 9.1.0.v20131115。我使用Jetty的JMX功能。
我希望只有在运行的计算机(localhost,或127.0.0.0/8)中才能访问JMX,而不能从外部访问JMX (例如,JMX不能从public.example.com访问)。
因此,我将Jetty的JMX主机配置为使用jetty.jmxrmihost=localhost而不是通配符jetty.jmxrmihost=0.0.0.0。
然而,我的Jetty服务器实例仍然可以从“外部”访问,允许任何人通过JMX连接到我的Jetty服务器。
我需要配置什么才能让Jetty只听那些源自localhost的JMX连接
下面是与本主题相关的Jetty配置文件:
文件${jetty.base}/start.d/jmx.ini:
--module=jmx
#jetty.jmxrmihost=localhost # I tried this one, but it didn't work either
jetty.jmxrmihost=127.0.0.1
jetty.jmxrmiport=1099文件${jetty.base}/start.d/jmx-remote.ini:
--module=jmx-remote发布于 2014-01-16 01:00:31
从问题提出的方式来看,这似乎不是Jetty/JMX问题,而是防火墙问题--您想要的是阻止不需要的外部流量到此服务器上的JMX端口。
如果您有权限并且愿意这样做,您将希望从/etc/sysconfig/iptables中删除打开JMX端口的任何规则(在本例中是1099)。这样的规则如下所示:
[0:0] -A INPUT -s SOME_IP_SUBNET -p tcp -m tcp --dport 1099 -j ACCEPT或者,另一方面,您可能希望只对特定的子网(例如公司的子网)启用JMX监视,此时您需要添加以下内容:
[0:0] -A INPUT -s MY_IP_SUBNET_HERE -p tcp -m tcp --dport JMX_PORT -j ACCEPT,分别用您自己的IP子网和JMX端口替换MY_IP_SUBNET_HERE和JMX_PORT。
我自己还没有为iptables编写过很多规则,所以请考虑上面的示例,而不一定是您所需要的确切语法。*nixCraft提供了一个处理iptables/sysctl的基本指南,它还介绍了如何在不编辑文件的情况下修改规则(我通常只是修改文件)。
两个注意事项,如果您使用修改iptables文件的路线:
/etc/init.d/iptables restart或service iptables restart)/sbin/sysctl -p 重新启动iptable之后调用。重新启动iptables将清除sysctl.conf中的任何自定义规则,调用sysctl -p将恢复这些规则。https://stackoverflow.com/questions/21083080
复制相似问题