我们在ActiveMQ的文档中没有看到如何隐藏嵌入式jetty版本。当我们在端口80上使用Web套接字传输时,我们的渗透测试人员将其标记为安全线程。我们一直在使用配置文件jetty.xml和参数,但没有成功。已经通过代码中的补丁
为其他项目(参见https://issues.apache.org/jira/browse/HADOOP-13414)解决了这个问题到目前为止,我们一直在尝试更改jetty.xml中的配置。
搜索jetty属性后,我们就是如何配置属性的属性:
<bean id="httpConfig" class="org.eclipse.jetty.server.HttpConfiguration">
<property name="sendServerVersion" value="false">
</property>
</bean>
但是,这对版本的曝光没有任何影响。我们进一步尝试使用连接工厂,但这也没有效果:
<bean id="invokeConnectors" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject" ref="Server" />
<property name="targetMethod" value="setConnectors" />
<property name="arguments">
<list>
<bean id="Connector" class="org.eclipse.jetty.server.ServerConnector">
<constructor-arg ref="Server" />
<constructor-arg>
<list>
<bean id="httpConnectionFactory" class="org.eclipse.jetty.server.HttpConnectionFactory">
<constructor-arg ref="httpConfig"/>
</bean>
</list>
</constructor-arg>
<!-- see the jettyPort bean -->
<property name="host" value="#{systemProperties['jetty.host']}" />
<property name="port" value="#{systemProperties['jetty.port']}" />
</bean>
</list>
</property>
</bean>
我们是否走在正确的轨道上,还是需要通过ActiveMQ的代码库解决?
这是我们展示版本的方式:
#nmap -sV -p80 localhost
Starting Nmap 7.70 ( https://nmap.org ) at 2018-04-23 18:16 CEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000098s latency).
PORT STATE SERVICE VERSION
80/tcp open http Jetty 9.2.22.v20170606
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 11.34 seconds
修改:我们在ActiveMQ JIRA收到了一个答案,表明需要在ActiveMQ项目中进行一些代码修改。如果当前状态发生变化,我们将更新此问题。当前的ActiveMQ是5.15.3。
引用Tim Bain的链接问题:
由于org.apache.activemq.transport.discovery.http.EmbeddedJettyServer.start()通过调用new(无Spring注入)来创建其服务器,并且该方法的代码没有提供任何指定的方法HttpConfiguration,更改此行为的能力需要更改代码。 org.apache.activemq.transport.WebTransportServerSupport中有类似的代码,也没有任何能够指定禁用发送版本号的HttpConfiguration的能力。
答案 0 :(得分:2)
使用......
org.eclipse.jetty.server.HttpConfiguration.setSendServerVersion(false);
...是正确的设置。
但是,您无法在服务器启动后更改此内容。
服务器本身的启动是唯一可以进行此更改的地方。
创建/初始化连接器是唯一使用此设置的地方。
这是因为该设置在启动期间传播到许多组件中(Http / 1 Generator,Http / 2 Generator,ErrorPage生成器,WebSocket升级过程等)