近期各地各行業護網運動開展如火如荼,各系統、中間件、數據庫、開源軟件層面漏洞層出不窮,另相關的維護專業這苦不堪言。本文要講的就是與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路徑是需要根據實際情況進行修改的。如果再結合相關自動化產品將對應的場景進行任務編排,通過產品去將調用批量作業腳本、服務重啟等操作編排到一個任務里面去,實現自動化調度,白屏操作,這將是一個不錯的運維場景。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/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,點擊立即購...
閱讀 1351·2023-01-11 13:20
閱讀 1696·2023-01-11 13:20
閱讀 1209·2023-01-11 13:20
閱讀 1901·2023-01-11 13:20
閱讀 4160·2023-01-11 13:20
閱讀 2739·2023-01-11 13:20
閱讀 1393·2023-01-11 13:20
閱讀 3662·2023-01-11 13:20