近期各地各行业护网运动开展如火如荼,各系统、中间件、数据库、开源软件层面漏洞层出不穷,另相关的维护专业这苦不堪言。本文要讲的就是与weblogic中间件近期不断被曝出的T3协议、IIOP协议0day漏洞有关。在护网期间,官方补丁又未更新的情况下,能做的可能就是通过及时的禁用相关的协议,以达到漏洞修复的目的,但是通常任务紧、时间短、实例数量又众多的情况下,我们如何快速的做到对实例进行批量的处理呢,且看下文介绍。
首先禁用IIOP协议,需要在应用侧确认反馈应用未使用该协议的前提下,才能进行禁用处理。
单台或者少量实例,处理方法很简单,可以直接登陆控制台,警用IIOP协议即可,方法如下:
Weblogicconsole -> “服务”->”xxxServer”->”协议”,取消“启用IIOP”的勾选,重启服务即可。
但是成百上千个实例,一个个登陆console修改配置,显然不切实际,那我们就需要使用批量方案了。批量禁用可以使用weblogic自带的wlst工具,通过脚本进行批量禁用,该方法脚本逻辑简单清晰,分享如下。
weblogic_iiop.sh:通过shell脚本去调用weblogicwlst,执行禁用的python脚本。
#!/bin/bash . $HOME/.bash_profile WLS_HOME="/weblogic/Oracle/Middleware/wlserver" echo [`date +%Y-%m-%d %H:%M:%S`]" =====[BEGIN]=========================" ${WLS_HOME}/common/bin/wlst.sh weblogic_iiop.py echo [`date +%Y-%m-%d %H:%M:%S`]" =====[END]===========================" |
weblogic_iiop.py:获取配置文件中的weblogic控制台账号、口令,循环去禁用每一个实例的IIOP协议。
cfg = open("./conf.cfg", "rb") for line in cfg: auth = line.split(#) USERNAME = auth[0].strip() PASSWORD = auth[1].strip() ADMINURL = auth[2].strip() print(-------------- + ADMINURL + -----------------------------------) size = len(auth) if size < 3 or USERNAME == "" or PASSWORD == "" or ADMINURL == "": continue connect(USERNAME,PASSWORD,ADMINURL) edit() cd(Servers) allSrvs=cmo.getServers() for srv in allSrvs: print(--------------startEdit--------------------------------) startEdit() srvName=srv.getName(); print(Now begin modify server: + srvName) cd(/Servers/ + srvName) ## true-开启, false-关闭 cmo.setIIOPEnabled(false) save() activate() disconnect() exit() |
conf.cfg:目标weblogic实例的控制台账号、密码
weblogic#weblogic!123#t3://IP1:port weblogic#weblogic!123#t3://IP2:port ….. |
如上,只需将脚本部署到可以访问目标实例的服务器上,配置好conf.cfg配置文件,就可以很轻松的解决IIOP协议批量禁用的问题了,记得最后要重启服务才能生效哦。
首先禁用T3协议,原理上其实是通过在weblogicconsole中添加T3协议访问白名单的方式来控制T3协议访问,禁止白名单以外的IP或网段来访问服务,以达到屏蔽漏洞的作用。所以,在配置T3协议禁用之前,需要应用侧梳理出需要使用T3协议访问的IP或网段。单台或者少量实例,处理方法同样简单,可以直接登陆控制台配置即可,方法如下:
Weblogicconsole -> “domain”->”安全”->”筛选器”,在“连接筛选器规则”处,配置规则即可。
但是成百上千个实例,一个个登陆console修改配置,费时费力,同样的,我们也有批量作业的方法,分享如下:
run.sh:通过shell脚本去调用weblogicwlst,同时读取weblogic控制台账号、口令,执行禁用的python脚本。
JAVA_HOME=/weblogic/jdk1.7.0_141 WLS_HOME=/weblogic/Oracle/Middleware/wlserver_10.3 FILENAME=conf.cfg cat $FILENAME | while read LINE do echo "----$LINE------" IP=`echo ${LINE} |awk -F"#" {print $1}` PORT=`echo ${LINE} |awk -F"#" {print $2}` USERNAME=`echo ${LINE} |awk -F"#" {print $3}` PASSWORD=`echo ${LINE} |awk -F"#" {print $4}` DOMAIN_NAME=`echo ${LINE} |awk -F"#" {print $5}` echo $DOMAIN_NAME $WLS_HOME/common/bin/wlst.sh weblogic_filter.py $IP $PORT $USERNAME $PASSWORD $DOMAIN_NAME done |
conf.cfg:目标weblogic实例的控制台账号、密码、域名
IP#port#weblogic#weblogic!123#testdomain IP#prot#weblogic#weblogic!123#testdomain….. |
weblogic_filter.py:对每一个weblogicdomain去配置T3协议白名单。
# coding=utf-8 # FileName: weblogic_filter.py # Description: import time,re,os,sys IP = sys.argv[1] print HOST_IP=,IP PORT = sys.argv[2] print PORT=,PORT USERNAME = sys.argv[3] print USERNAME=,USERNAME PASSWORD = sys.argv[4] print PASSWORD=,PASSWORD mydomain = sys.argv[5] mydomain = mydomain.rstrip() print DOMAIN_NAME=,mydomain URL=t3://+IP+:+PORT connect(USERNAME,PASSWORD,URL) edit() startEdit() cd(/SecurityConfiguration/ + mydomain) cmo.setConnectionFilter(weblogic.security.net.ConnectionFilterImpl) set(ConnectionFilterRules,jarray.array([String(IP1+ * * allow t3 t3s), String(IP2+ * * allow t3 t3s), String(IP3+ * * allow t3 t3s), String(IP4+ * * allow t3 t3s), String(0.0.0.0/0 * * deny t3 t3s)], String)) save() activate() |
如上,python脚本中,在set(ConnectionFilterRules,jarray.array([String(IP1+ * * allow t3 t3s), String(IP2+ * * allow t3 t3s)],String))中添加需要配置的白名单配置规则即可。显然然,这里笔者这里是偷懒了,有兴趣的朋友,可以将规则也配置到配置文件中去,那么脚本即可通用了,只需要修改配置文件即可,使用起来会更灵活。最后,只需将脚本部署到可以访问目标实例的服务器上,配置好conf.cfg配置文件,就可以很轻松的解决T3协议禁用的问题。
以上提供的方法,需要注意的是相关的脚本中的一些JDK版本及路径、WLS_HOME路径是需要根据实际情况进行修改的。如果再结合相关自动化产品将对应的场景进行任务编排,通过产品去将调用批量作业脚本、服务重启等操作编排到一个任务里面去,实现自动化调度,白屏操作,这将是一个不错的运维场景。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/130134.html
摘要:直接执行该脚本即可运行工具。有离线和在线两种模式,通过命令可以从进入,按照目录形式对资源进行管理,甚至连操作的命令都和高度相似,比如是切换到指定资源路径下,是列出该目录下所有资源。 说明 weblogic安装目录下有一个创建Managed Server的脚本,脚本位于/u01/app/Oracle/Middleware/oracle_common/common/bin/config.s...
摘要:理解原理及应用一术语在我的经验里,这个词被滥用的程度大概仅次于,更加有趣的是与在某些语境下的含义是相同的。其中的作用就是为了解决协议无状态的缺陷所作出的努力。 理解HTTP session原理及应用 一、术语session 在我的经验里,session这个词被滥用的程度大概仅次于transaction,更加有趣的是transaction与session在某些语境下的含义是相同的。 ...
摘要:绑定解绑进入负载均衡页面,可对外网绑定的外网弹性进行以下操作。负载均衡算法监听器对数据包的负载方式服务节点一般情况,添加服务节点是需要在监听器创建完成后再进行。禁用服务节点后,现存的长连接不会断开。,点击确定,即完成批量禁用服务节点。创建ULB操作步骤1、进入负载均衡 ULB页面。2,点击创建负载均衡进行ULB实例创建。3、填写配置信息,进行ULB实例创建。详细配置说明见下方。4,点击立即购...
阅读 1251·2023-01-11 13:20
阅读 1566·2023-01-11 13:20
阅读 1019·2023-01-11 13:20
阅读 1702·2023-01-11 13:20
阅读 3973·2023-01-11 13:20
阅读 2546·2023-01-11 13:20
阅读 1356·2023-01-11 13:20
阅读 3494·2023-01-11 13:20