加强服务器安全JBoss篇

JBoss架构:

  JBoss的模块架构是建立在JMX底层上的。JMX是一个可复用框架,它为远程(Remote)和本地(Local)管理工具扩展了应用。它的架构是层式架构。他们是实现层(instrumentation layer)、代理层(agent layer)和发布层(distribution layer)。用户使用管理Bean,MBean来提供获得相应资源的实现方法。实现层实现相关的特性资源并将它发布于JMX相关应用中,它的代理层控制和发布相应的注册在MBeanServer代理上的管理资源。.

 JMX Invoker Invokers允许客户端应用程序发送任意协议JMX请求到服务端。 这些调用都用过MBean服务器发送到响应的MBean服务。传输机制都是透明的,并且可以使用任意的协议如:HTTP,SOAP2或JRMP3。

 Deployer架构 攻击者对JBoss应用服务器中的Deployers模块.

 JAR(Java ARchives)JAR 文件格式用于部署和封装库、组件和插件程序, 并可被像编译器和 JVM 这样的工具直接使用。在 JAR 中包含特殊的文件,如 manifests 和部署描述符,用来指示工具如何处理特定的 JAR。

 WAR(Web ARchives)WAR文件是JAR文件包含一个Web应用程序的组件, 与Java ServerPages(JSP),Java类,静态web页面等类似。

 BSH(BeanSHell scripts)BeanShell是Java脚本语言,BeanShell脚本使用 Java语法,运行在JRE上。

 

存在的安全问题:

JMX Console JMX控制台允许通过web浏览器与JBoss应用服务器直接互动的组件。 默认访问地址:http://xxxx/jmx-console Server 和ServerInfo-MBean(展现了JBoss应用服务器与主机系统的信息, 包含Java虚拟机以及操作系统的类型版本信息。) MBeans的属性 jboss.system:type=Server jboss.system:type=ServerInfo

MainDeployer:MainDeployer方法属性可以在JMX-console控制台中的jboss.system中调用。deploy()方法可以由一个URL中一个参数调用,URL指向WAR文件,需要是服务器能够访问到的地址。 当invoke按钮被点击时,JBoss应用服务器会下载WAR文件并安装它,之后,就可以执行shell命令了

RMI远程方法调用:通常JMX控制台保护方法是加一个密码保护。 JBoss应用服务器经常与客户端程序接口相互调用,Java远程方法调用(RMI)也发挥重要作用;JNDI(Java Naming and Directory Interface)是一个应用程序设计的API,为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口,类似JDBC都是构建在抽象层上。 通过RMI访问MBean:RMI接口默认凯奇在端口4444上,JNDI接口默认开启在1098和1099上。 有了twiddle,就用可用命令行通过RMI调用JBoss应用服务器的MBeans。Windows下是twiddle.bat,Linux下是twiddle.sh来启动twiddle。类似于JMX控制台,MBEAN的属性可读可改,并且可以调用其方法。 显示MBean服务器的信息!

一些安全加固:

1、管理界面的安全配置:

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.propertiesweb-console-users.properties。

    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增加验证,打开jmx-console安全控制:

①、在deploy/jmx-console.war/WEB-INF/目录下,找到jboss-web.xml,解开对 Xml代码的注释:

<security-domain>java:/jaas/jmx-console</security-domain> 

②、在在同一目录下,解开web.Xml代码的注释:

<security-constraint>...</security-constraint>  

③、在server/xxx/conf/props下,修改jmx-console-roles.properties,jmx-console-users.properties,用户名密码。

    ROOTwar通常生产环境下就不需要了,直接删除就可以了。

2、使用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双向认证配置相同。

3、可以关闭管理端口和相关统计信息:

关闭jmx-console:删除/export/home/jboss-4.0.3SP1/server/default/ deploy下目录jmx-console.war、management

关闭web-console:删除/export/home/jboss-4.0.3SP1/server/default/ deploy/jbossweb-tomcat55.sar下目录ROOT.war

关闭status统计信息:修改/export/home/jboss-4.0.3SP1/server/ default/ deploy/ROOT.war/WEB-INF/web.xml

删除jboss主页目录文见:/export/home/jboss-4.0.3SP1/server/default/ deploy/ROOT.war下文件:

Manager  favicon.ico  jboss.css  jbossindex.html  logo.gif

4、JMX安全配置:

找到/server/default/deploy/jmx-console.war/WEB-INF/ jboss-web.xml文件,根据说明,去掉注释

<jboss-web>
<security-domain>java:/jaas/jmx-console</security-domain>
</jboss-web> 

在在同一目录下,解开web.Xml代码的注释:

<security-constraint>
<web-resource-collection> 

...

</security-constraint>

5、角色降权:

Jboss应用程序应运行在非root用户下,防止病毒获得超级用户权限,修改root口令,控制服务器。对角色授权只用允许范围下的最低权限。

6、隔离:

WEB应用与接收器分离,如可以通过Apache与Jboss整合的方式实现,这样做一方面更安全,另一方面更适合高并发流量的访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值