默认情况下任何用户直接通过http://hostname:8080/jmx-console的URL地址就可以浏览JBOSS的部署管理信息,不需要任何用户名和密码就可以进入此页面,很方便,但真正使用起来是有安全隐患,下面针对此问题对JBoss启用安全配置,使得访问JMX-Console必须使用用户名和密码才可能访问。本文适用于JBOSS 5.1.0及以上版本,具体差异见下文,共文四个步骤。
一、JBoss6.0以上,编辑JBOSS_HOME\common\deploy\jmx-console.war\WEB-INF目录下的web.xml去掉<security-constraint>节点的注释,如下:
<security-constraint>
<web-resource-collection>
<web-resource-name>HtmlAdaptor</web-resource-name>
<description>An example security config that only allows users with the
role JBossAdmin to access the HTML JMX console web application
</description>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>JBossAdmin</role-name>
</auth-constraint>
</security-constraint>
JBoss5.1.0,编辑JBOSS_HOME\server\default\deploy\jmx-console.war\WEB-INF目录下的web.xml,去掉<security-constraint>节点的注释,同上。
二、编辑第一步同一目录下,即JBOSS_HOME\common\deploy\jmx-console.war\WEB-INF中的jboss-web.xml去掉<security-domain>节点的注释,如下:
<security-domain>java:/jaas/jmx-console</security-domain>
Boss5.1.0,编辑JBOSS_HOME\server\default\deploy\jmx-console.war\WEB-INF目录下的的jboss-web.xml去掉<security-domain>节点的注释。
三、查看JBOSS_HOME\server\default\conf目录下login-config.xml,是否存在节点(默认配置,应该无须修改)
<application-policy name="jmx-console">
<authentication>
<login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule"
flag="required">
<module-option name="usersProperties">props/jmx-console-users.properties</module-option>
<module-option name="rolesProperties">props/jmx-console-roles.properties</module-option>
</login-module>
</authentication>
</application-policy>
注意:name="jmx-console"必须与上一步骤中的<security-domain>节点匹配java:/jaas/jmx-console,此步骤JBOSS5.1.0和JBOSS6.0.0相同。
一、由上一步骤可以看出用户名和密码的配置文件在props目录下的jmx-console-users.properties和jmx-console-roles.properties文件中,配置用户名和密码,
# A sample users.properties file for use with the UsersRolesLoginModule
admin=admin
测试成功。
另外:本人使用JMXConnector采用编程方式访问JMX,默认没有启用安全管理,因而同样存在安全问题。修改JBOSS_HOME/server/ default /deploy/jmx-jboss-beans,去掉节点
<property name="securityDomain">jmx-console</property>注释,即可起用JMXConnector的远程安全。