weblogic关闭t3协议_Weblogic T3、IIOP协议批量禁用
转至:https://blog.csdn.net/weixin_32151313/article/details/113324040
近期各地各行业护网运动开展如火如荼,各系统、中间件、数据库、开源软件层面漏洞层出不穷,另相关的维护专业这苦不堪言。本文要讲的就是与weblogic中间件近期不断被曝出的T3协议、IIOP协议0day漏洞有关。在护网期间,官方补丁又未更新的情况下,能做的可能就是通过及时的禁用相关的协议,以达到漏洞修复的目的,但是通常任务紧、时间短、实例数量又众多的情况下,我们如何快速的做到对实例进行批量的处理呢,且看下文介绍。
一、 IIOP协议批量禁用
首先禁用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协议批量禁用
首先禁用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路径是需要根据实际情况进行修改的。如果再结合相关自动化产品将对应的场景进行任务编排,通过产品去将调用批量作业脚本、服务重启等操作编排到一个任务里面去,实现自动化调度,白屏操作,这将是一个不错的运维场景。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2020-07-30 LVM--逻辑卷管理@安装、格式化、挂载、开机自动挂载完整篇
2020-07-30 Linux系统LVM逻辑卷创建过程以及自动化脚本
2020-07-30 Linux修改主机名称