五一放假的时候给2Bizbox ERP国外新客户部署了两台服务器,忙到很晚才睡觉,搞定了心里舒服了,睡的也香,但是假期结束来了客户说服务器被hack了,结果服务器re-image,所有工作白做了。多的不扯了,被hack,主要原因是JBoss的jmx-console和web-console导致的, 所以这里说下JBoss相关的安全设置吧。
JBoss jmx-console和web-console的安全设置
介绍
如果在网上公布了自己的JBoss服务器(用选项-b 0.0.0.0启动服务器或者在.../jboss/server/default/deploy/web-deployer/server.xml
改变第一个发生变量jboss.bind.address 为 0.0.0.0), 你也自动的公开了JBoss web-console (http://localhost:8080/web-console)
和 jmx-console (http://localhost:8080/jmx-console) 的管理平台,并且没有用户名和密码。
网上的任何人都可以通过这个途径,停止你的服务器,清空服务器上的应用,而且可以部署自己的应用上去。
jmx-console的安全设置
1) 在.../jboss/server/default/deploy/jmx-console.war/WEB-INF/jboss-web.xml 里,取消下面代码注释
<security-domain>java:/jaas/jmx-console</security-domain>
2) 在.../jboss/server/default/deploy/jmx-console.war/WEB-INF/web.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/server/default/conf/props/jmx-console-users.properties文件里,增加/编辑行:
admin=a_password_you_like
. 要分配一个用户到JBossAdmin组里,在jmx-console-roles.properties.properties(相同目录下)文件里添加"username=JBossAdmin"
. jmx-console-users.properties文件里有一个admin/admin的用户,为了安全起见,要么删除这个用户,要么改变这个pw更安全
web-console的安全设置
1)在.../jboss/server/default/deploy/management/console-mgr.sar/web-console.war/WEB-INF/jboss-web.xml取消下面代码注释
<security-domain>java:/jaas/web-console</security-domain>
2)在.../jboss/server/default/deploy/management/console-mgr.sar/web-console.war/WEB-INF/web.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/server/default/deploy/management/console-mgr.sar/web-console.war/WEB-INF/classes/web-console-users.properties 文件里,
增加/编辑行
admin=a_password_you_like
. 要分配一个用户到JBossAdmin组里,在web-console-roles.properties.properties(相同目录下)文件里添加"username=JBossAdmin"
. web-console-users.properties文件里有一个admin/admin的用户,为了安全起见,要么删除这个用户,要么改变这个pw更安全
说明:
-两个 jboss-jmx-plugin用JMX控制台(跟maven-cargo-plugin一样)
-不需要web-console, 因此应该是不可用的(通过删除或是注释web-console-users.properties中的user/password行)
本文参考http://code.google.com/p/jboss-jmx-maven-plugin/wiki/Security
更多信息可以查看https://community.jboss.org/wiki/JBossASTuningSliming