Jboss中间件安全设计方案1背景本文档是针对明珠商城在测试环境下,为了只让信任的IP访问指定的服务,减少系统的运行风险,为此引入了iptables服务进行防护。Jboss本身的安全问题也要做些处理,比如对外屏蔽jboss其他(除8080)众多端口,把控制台等模块服务给移除等方式,把安全漏洞降到最低。2应用服务器的安全配置2.1Linux防火墙配置设置环境:服务器IP地址描述服务端192.168.145.128被保护的应用服务器客户端A192.168.145.129不被信任的客户端客户端B192.168.145.1信任的客户端示意图:设置防火墙步骤:#清除现有规则iptables–F#设置默认策略,默认关闭进入应用服务器的所有数据包链路iptables-PINPUTDROPiptables-POUTPUTACCEPTiptables-PFORWARDACCEPT#设置可信任IP或端口iptables-AINPUT-ptcp--dport22-jACCEPTiptables-AINPUT-s192.168.145.1-ptcp--dport8080-jACCEPT#把设置保持至/etc/sysconfig/iptables,以后防火墙重启也不会失效/etc/rc.d/init.d/iptablessave2.2JBoss中间件的安全配置Jboss默认安装时,为了管理配置方便,很多服务都给默认安装上了,比如Tomcatstatus(full)(XML)、JMXConsole、JBossWebConsole等管理服务,这些服务给人带来调试、配置方便的同时,也给系统带来了严重的安全隐患。为了减少jboss服务被恶意攻击,除了做好iptables安全防护外,jboss本身的很多服务也要减少被攻击机会,通常有两种做法,一是引入apache服务,让所有请求通过apache转发,把jboss服务隐藏在后端,减少直接被攻击的风险;二是不用apache,而是直接把jboss的相关服务给卸载掉,把这些安全漏洞直接堵死。2.2.1方法一:通过Apache进行服务转发要实现apache转发jboss服务,需集成mod_jk或是mod_proxy其中一个模块,这两个模块都可以做负载均衡和代理服务。mod_jk性能好些但相对而言配置量大些,而mod_proxy配置简单但性能稍差,其版本不断更新,正在不断完善中。另外需注意的是如果要通过apache转发服务,隐藏jboss细节的话,前提条件是apache服务与jboss应用不能部署在同一台服务器上,这里以mod_jk集成为例进行配置介绍。2.2.1.1安装apache服务安装linux是自带,这里就不介绍2.2.1.2安装mod_jk模块1).源码安装tar–zxvftomcat-connectors-1.2.30-src.tar.gzcdtomcat-connectors-1.2.23-srccdnative./configure--with-apxs=/usr/local/apache/bin/apxsmakecp./apache-2.0/mod_jk.so/etc/httpd/modules/2).修改/etc/httpd/conf/http.conf配置文件LoadModulejk_modulemodules/mod_jk.soIncludeconf/extra/httpd-vhosts.confIncludeconf/mod_jk.conf#ServerName改为ServerName127.0.0.1:80添加默认首页:IfModuledir_moduleDirectoryIndexindex.htmlindex.htmindex.jsp/IfModule3).增加mod_jk配置文件在/etc/httpd/conf/下面建立两个配置文件mod_jk.conf和workers.propertiesvi/etc/httpd/conf/mod_jk.conf在/etc/httpd/conf/下面建立两个配置文件mod_jk.conf和workers.propertiescd/etc/httpd/conf/vimod_jk.confJkWorkersFileconf/workers.propertiesJkLogFilelogs/mod_jk.logJkLogLevelinfoJkLogStampFormat[%a%b%d%H:%M:%S%Y]JkOptions+ForwardKeySize+ForwardURICompat-ForwardDirectoriesJkRequestLogFormat%w%V%Tvimworkers.properties#Definingaworkernamedworker1andoftypeajp13worker.list=worker1#Setpropertiesforworker1worker.worker1.type=ajp13worker.worker1.host=localhostworker.worker1.port=8009worker.worker1.lbfactor=50worker.worker1.cachesize=10worker.worker1.cache_timeout=600worker.worker1.socket_keepalive=1worker.worker1.socket_timeout=3004).配置apache的vhost配置/usr/local/apache/conf/extra/httpd-vhosts.conf,增加mod_jk的配置vi/etc/httpd/conf/extra/httpd-vhosts.confNameVirtualHost*:80#VirtualHostexample:#AlmostanyApachedirectivemaygointoaVirtualHostcontainer.#ThefirstVirtualHostsectionisusedforallrequeststhatdonot#matchaServerNameorServerAliasinanyVirtualHostblock.#VirtualHost*:80ServerAdmincaozhiping@foreveross.comDocumentRoot/usr/local/jboss-4.2.3.GA/server/default/deployServerName192.168.145.128ServerAlias*.jspworker1JkMount/jmx-console/*worker1//这个工程能通过80端口来访问JkMount/web-console/*worker1//这个工程能通过80端口来访问,如果没有定义的工程,不能访问#apachewillservethestaticpictureJkUnMount/*.jpgworker1#JkUnMount/*.gifworker1JkUnMount/*.swfworker1JkUnMount/*.bmpworker1JkUnMount/*.pngworker1ErrorLoglogs/dummy-host.example.com-error_logCustomLoglogs/dummy-host.example.com-access_logcommon/VirtualHost2.2.1.3禁止jboss配置jboss默认的端口是8080,可以注视掉,通过8009交给apache来解析cd/usr/local/jboss-4.2.3.GA/server/default/deploy/jboss-web.deployervimserver.xml!--Connectorport=8080address=${jboss.bind.address}maxThreads=250maxHttpHeaderSize=8192emptySessionPath=trueprotocol=HTTP/1.1enableLookups=falseredirectPort=8443acceptCount=100connectionTimeout=20000disableUploadTimeout=true/--这这一段注视掉2.2.2方法二:JBoss的安全配置这种方式是通过删除jboss本身的一些在开发环境下有利于开发人员工作需要的服务,以及关闭管理账户、限制IP等方式加强jboss安全2.2.2.1移除jmx-console控制台rm-r/usr/local/jboss/server/default/deploy/jmx-console.warrm–r/usr/local/jboss/server/default/deploy/jbossws.sar/jbossws-context.warrm–r/usr/local/jboss/server/default/deploy/management/console-mgr.sar/web-console.war2.2.2.2移除web-console控制台rm–r/usr/local/jboss/server/default/deploy/jboss-web.deployer/ROOT.warrm–r/usr/local/jboss/server/default/deploy/jboss-web.deployer/context.xml测试效果访问:访问:禁止自动扫描修改文件:JBOSS_HOME/server/web/conf/jboss-service.xml修改内容:attributename=ScanEnabledfalse/attributefalse:表示禁用。这样设置可以提高性能,同时JBoss应用被修改,也不会马上生效(必须重启),但是这样设置之后代表热部署不再支持。这里可以根据实际情况权衡利弊然后再进行设置。2.2.2.4限制访问IPJBOSS4.2以上版本服务启动如果不加任何参数的话,只监听127.0.0.1,就是说只能用127.0.0.1或者localhost访问。可以通过参数-bip地址来绑定监听的地址。如:所有IP都能访问:-b0.0.0.0所有同局域网机器都可以访问:-b10.101.1.100(10.101.1.100为Jboss服务器IP)2.2.2.5移除管理用户注释/usr/local/jboss/server/default/conf/props文件夹里面的配置文件所有用户与角色vijbossws-roles.properties#Asampleroles.propertiesfileforusewiththeUsersRolesLoginModule#kermit=friendvijbossws-users.properties#Asampleusers.propertiesfileforusewiththeUsersRolesLoginModule#kermit=thefrogvijmx-console-roles.properties#Asampleroles.propertiesfileforusewiththeUsersRolesLoginModule#admin=JBossAdmin,HttpInvokervijmx-console-users.properties#Asampleusers.propertiesfileforusewiththeUsersRolesLoginModule#admin=admin