JBoss服务器差不多每一个方面都可以用JMX或Web控制台来控制,所以你至少要确保它有密码保护的。否则,任何远程用户都可以控制你的服务器,为了保护它,我们将添加一个安全域。
假设你启动的服务器是用default配置集
1、为JMX Console设置密码保护
A.修改文件%JBOSS_HOME%\server\default\deploy\jmx-console.war\WEB-INF\jboss-web.xml,取消security-domain部分的注释
<security-domain>java:/jaas/jmx-console</security-domain>
这一步只是把安全域链接至web应用程序
B. 修改文件%JBOSS_HOME%\server\default\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>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>JBossAdmin</role-name>
</auth-constraint>
</security-constraint>
这一步告诉web应用程序执行那个安全策略,保护那个URL以及允许谁访问,但是用户名和密码从来哪里来?
在%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>
C.接下来配置用户名和密码,打开./props/jmx-console-users.properties文件,这个文件存放的格式为“username=password”,现有的文件里面已经创建了一个“admin=admin”的用户和密码,基于安全考虑你可以修改为更为复杂的密码,或者删除这个用户然后再新建一个用户,但是新建的用户必须给它分配一个角色,用户角色在./jmx-console-roles.properties指定
2、为JBoss Web Console设置密码保护
A.修改%JBOSS_HOME%\server\default\deploy\management\console-mgr.sar\web-console.war\WEB-INF\ jboss-web.xml,取消security-domain部分的注释
<security-domain>java:/jaas/web-console</security-domain>
B. 修改%JBOSS_HOME%\server\default\deploy\management\console-mgr.sar\web-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>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>JBossAdmin</role-name>
</auth-constraint>
</security-constraint>
C. 接下来配置用户名和密码,web-console存放用户名和密码的文件路径稍微跟jmx-consol不一样,在%JBOSS_HOME%\server\default\conf\login-config.xml文件找到以下代码:
<application-policy name = "web-console">
<authentication>
<login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule"
flag = "required">
<module-option name="usersProperties">web-console-users.properties</module-option>
<module-option name="rolesProperties">web-console-roles.properties</module-option>
</login-module>
</authentication>
</application-policy>
它的存放路径是放在跟login-config.xml一个目录下的,如果没有这两个文件,可以自己创建对应名称的文件,配置跟jmx-console一样。