JBoss 作为开源领域的Number One容器,有着强大的功能,极高的稳定性,而且易用性良好。下载解压后,就可以直接使用。但它也像其它开源容器一样,由于缺少‘安装的过程’,导致在安全配置的不是很好。默认是全打开,所以如果直接将JBoss放到生产环境是不适合的。这就需要先进行详尽的安全设置。
没使用过JBoss可能想不到,因为JBoss拥有强大的控制界面,而且是多个,可以从各个方面进行管理。但这也加大了安全设置的繁忙程度。通常来说最安全的方式,就是将这些界面删除。但是这些管理界面在处理某些问题的时候,还是很有用处的。所以文本按照JBoss官方给出方式,进行详细安全设置。我使用的是JBoss5.1的all的模式,如果其它模式可能缺少某些东西
首先 是先要弄清有那些管理界面需要设置,JBoss管理界面有如下几个。
整体管理的admin-console (JBoss5.1新增)
管理web的web-console
管理webservice的jbossws
管理jmx的jmx-console
以及根目录root.war
这些都是安全隐患,毕竟是管理界面。被坏人利用了,就不得了了。
好 ,我们需要一步一步的减小隐患
admin-console 是已经需要密码验证的。但密码是默认的,需要修改。修改server/xxx/conf/props里jmx-console-roles.properties,jmx-console-users.properties(这俩个文件也是,jmx-console的用户配置文件)
web-console的用户文件在server/xxx/deploy/management/console-mgr.sar/web-console.war/WEB-INF/classes目录下,web-console-roles.properties和web-console-users.properties。需要修改jboss-web.xml和web.xml,去掉安全注释。
jbossws也是一样,在server/all/deploy/jmx-console.war/WEB-INF下修改jboss-web.xml和web.xml配置文件,去掉安全注释。修改server/xxx/conf/props里的jbossws-users.properties和jbossws-roles.properties。
jmx-console的配置可以见我的另一篇文章http://java-boy.iteye.com/blog/537058
ROOTwar通常生产环境下就不需要了,直接删除就可以了。
其次 ,我们可以使用SSL 加固,开启ssl双向认证。
首先需要生成服务和客户端的key。
之后需要修改web.xml的文件,修改成
- <security-constraint>
- ...
- <user-data-constraint>
- <transport-guarantee>CONFIDENTIAL</transport-guarantee>
- </user-data-constraint>
- </security-constraint>
在修改server/xxx/deploy/jbossweb.sar下的server.xml
取消ssl的注释,并修改为,注意keystore的名字和密码修改。
<Connector protocol="HTTP/1.1" SSLEnabled="true"
port="8443" address="${jboss.bind.address}"
scheme="https" secure="true" clientAuth="true"
keystoreFile="${jboss.server.home.dir}/conf/keystore"
keystorePass="password" sslProtocol = "TLS" />
后面部分与tomcat的ssl双向认证配置相同。
如果实现SSL之后,就可以高枕无忧了
先写到这里以后碰到新的,再补。
JBoss官方文档:http://community.jboss.org/wiki/securejboss