最大的问题--安全问题----jboss信息安全
错误
0:34:20,942 ERROR
[UsersRolesLoginModule] Failed to load users/passwords/role files
java.io.IOException: No
propertie敏感词ile: users.properties or defaults: defaultUsers.propertie敏感词ound
JBoss
安装成功后,一般可以通过
http://localhost:port
来访问
.Jmx Console
和
Jboss Web Console
里面可以修改和删除应用的参数,如果不加强安全设置,将会带来严重安全后果。
默认登录
jmx-console
的账号信息是:
admin/admin
,因此我们应该修改这个账号信息。
一、
JMX
安全配置
1
:
找到
%JBOSS_HOME%/server/default/deploy/jmx-console.war/WEB-INF/jboss-web.xml
文件,去掉对下面这段
xml
文本的注释。
Xml 代码
- <jboss-web>
- <security-domain>java:/jaas/jmx-console</security-domain>
- </jboss-web>
2
:
与
jboss-web.xml
同级目录下还有一个文件
web.xml
,找到下面这段
xml
文本,取消注释。
Xml 代码
- <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>
注意:
<role-name>JBossAdmin</role-name>
引用了一个已定义的角色名 :JBossAdmin( 这个角色名称是在该文件下的
<security-role><role-name>JBossAdmin</role-name></security-role>
节点中定义的
),
jmx-console-roles.properties
文件中的角色名称必须与其一致
,
如:
duqiang=JBossAdmin,HttpInvoker;
定义了一个
duqiang
用户
,
其属于
JBossAdmin
角色
3
:
在第一步中的
jmx-console
安全域和第二步中的运行角色
JBossAdmin
与用户名和密码都是在
login-config.xml
中配置,
我们在
%JBOSS_HOME%/server/default/conf/login-config.xml
文件可以看到以下配置,
Xml 代码
- <!-- 此处应与 jboss-web.xml 文件中的 <security-domain>java:/jaas/jmx-console</security-domain> 一致 -->
- <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>
文件 props/jmx-console-users.properties 中定义了用户名、密码;文件
props/jmx-console-roles.properties
中定义了用户所属角色
注:
jmx-console-users.properties
格式是:用户名
=
密码明文
jmx-console-roles.properties
格式是:用户名
=
角色
1,
角色
2,
角色
3
可以找到这两个文件,修改用户名和密码。
二、
WEB-CONSOLE
的安全配置
1
:
找到
%JBOSS_HOME%/server/default/deploy/ management/console-mgr.sar/web-console.war/WEB-INF/jboss-web.xml
文件,去掉对以下
xml
文本的注释。
Xml
代码
<jboss-web>
<depends>jboss.admin:service=PluginManager</depends>
</jboss-web>
2
:
与
jboss-web.xml
同级目录下还有一个文件
web.xml
,找到下面这段
xml
文本,取消注释。
Xml 代码
- <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>
3 :在
%JBOSS_HOME%/server/default/deploy/management/console-mgr.sar/web-console.war/WEB-INF/classes 目录下找到
web-console-users.properties,web-console-roles.properties
文件
分别把他们重命名成
users.properties
与
roles.properties
。
4:
在
% JBOSS_HOME%/server/default/conf/login-config.xml
文件可以看到以下配置:
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>
修改该配置为:
- <application-policy name = "web-console">
- <authentication>
- <login-module code= "org.jboss.security.auth.spi.UsersRolesLoginModule"
- flag = "required">
- <module-option name= "usersProperties">users.properties</module-option>
- <module-option name= "rolesProperties">roles.properties</module-option>
- </login-module>
- </authentication>
- </application-policy> <!-- 主要在 login-config.xml 同级目录新建了这两个文件, users.properties roles.properties ,设置好用户名密码问题解决 -->
你可以修改
users.properties
其中的用户名和密码,格式和上面的两个
properties
文件中的一样。
启动服务输入
http://localhost:8080/jmx-console
和
http://localhost:8080/web-console
测试安全机制
,
安是否和你自己修改后的账号信息一致。
也可以启动服务输入
http://localhost:8080/
然后分别点击
JMX Console
以及
Jboss Web Console
测试安全机制。
注意:如果在配置
web-console
时,不对
web-console-users.properties
与
web-console-roles.properties
文件重命名和修改
login-config.xml
文件中的
<module-option name="usersProperties">users.properties</module-option>
<module-option
name="rolesProperties">roles.properties</module-option>
节点内容时,控制台会抛出异常信息。如下:
1. Failed to load users/passwords/role files
2. java.io.IOException: No properties file: users.properties or defaults: defaultUsers.properties