本文將介紹如何運用IBM QRadar App架構開發客製化應用程式,先說明何謂應用程式、Flask,然後說明何謂安全工程、如何避免應用程式提交遭到拒絕、那些是造成應用程式驗證審核延長的問題、該如何確保自己的QRadar應用程式安全無虞,以及使用SDK進行應用程式測試。
應用程式疑難排解
以下提供應用程式疑難排解概觀,以便在應用程式未正常運作時進行疑難排解。
檢閱應用程式日誌
應用程式生活在Docker容器中有它們自己的日誌,這些日誌與QRadar日誌各自獨立。QRadar日誌僅包含容器基礎架構的相關訊息與錯誤,例如無法安裝或無法執行應用程式。關於特定的應用程式問題(無法連線、特定的應用程式中斷問題等等),可以登入每個應用程式容器的Shell,然後查看日誌。大部分的應用程式都會有十分妥善的紀錄,應可針對發生什麼錯誤以及下一步該怎麼做提供深入洞察:
/opt/qradar/support/qapp_utils.py ls
Get the app_id
/opt/qradar/support/qapp_utils.
py connect
一旦進入容器中,日誌就位在「/store/log/」。「/store/log/app.log」是應用程式的主要日誌,它大部分記錄「即時」呼叫(何時開啟UI、發佈配置等等),而「/store/log/poll.log」日誌用於記錄輪詢或背景程序(許多應用程式用來在背景執行搜尋、API呼叫等等的程序),像一個Cron工作。此外,也可以在應用程式進入容器後,為其啟用DEBUG層次日誌。若是主要應用程式UI,可藉由執行下列指令來啟用除錯日誌(app.log),這是用來記錄UI點按問題與應用程式操作問題:
vi /run.py
然後,編輯「app.run」參數以納入「debug=True」。在此之後,需要重新啟動Flask Web伺服器:
ps aux | grep run.py
kill -9 the pid for that run.py process
接著,Flask伺服器應該會自動啟動。如果未啟動,可以登出Shell(exit),然後執行「service qdocker restart」以重新啟動所有的應用程式容器(以及Flask Web伺服器)。若是背景程序(poll.log),則有不同的除錯日誌啟用程序,這用於記錄像是無資料或似乎未在背景執行其收集:
vi /src_deps/init/poll.sh
接著,編輯此行內容:
nohup python /app/core/poll.py
-l INFO > /store/log/poll.log
2>&1
並且,將其變更為:
nohup python /app/core/poll.py
-l DEBUG > /store/log/poll.log
2>&1
在取得所需之後,務必停用除錯日誌,它們可能非常詳盡(列印每一個API呼叫回應等等)。
預設的疑難排解
預設的疑難排解,包括無法安裝、應用程式無法運作等,這些步驟能協助解決應用程式安裝錯誤、應用程式未出現等問題。此外,如果應用程式無法建立或安裝亦同。
1. 利用api_doc端點,使用「GET gui_appframework」來取得app_id,看看是否有其他應用程式執行中。
2. 登入https://consoleIP,接著前往https://consoleIP/api_doc。
3.尋找/gui_apframework,按一下它,按一下/applications。
4. 捲動至最下方,按一下try it now。取得應用程式的ID#。
5. 按一下/{application_id}。
6. 使用DELETE端點來刪除應用程式,輸入應用程式ID#,按一下try it now。
7. 檢查看看在installed_application中是否還有任何項目仍存在於「psql: psql -U qradar -c "select * from installed_application;"」。
8. 在延伸模組管理視窗中檢查是否有應用程式,如果有,請從那裡刪除(直接使用UI)。
9. 檢查/store/qapp是否存在。若不存在,建立目錄並設定成chown nobody:nobody。
10. 執行「service qdocker restart」指令。
11. 透過「延伸模組管理」視窗重新安裝應用程式。
12. 清除瀏覽器快取。
13. 現在嘗試並開啟╱使用應用程式。
可用的工具
接下來,這裡將介紹幾個好用的工具指令。
首先介紹的第一個工具如下,它是可用於疑難排解應用程式延伸模組的支援工具。可用來疑難排解Docker容器、瀏覽整個Docker容器,以及執行批次指令:
/opt/qradar/support/qapp_utils.py
第二個好用的工具如下:
qapp_utils.py
而其相關指令內容如下:
ps | ls :: List all active
applications and appIDs.
connect :: Connect
to bash shell of given appID.
'exit' to quit shell.
run :: Run
command in container shell for
given appID.
第三個要介紹的指令工具內有一個新參數「-a」,是用來取得與日誌有關的一切應用程式架構。這是為了提供完整診斷給QRadar支援中心:
/opt/qradar/support/get_logs.sh -a
<摘要整理:吳明峰,目前任職於IBM擔任資安防禦經理。關於IBM Security,位在台北南港的IBM資安實驗室近年研發重點為打造智能資安中心(SOC)。從基礎防護如惡意郵件分析以及攔截、阻擋惡意DNS查詢(Quad9),到運用Watson進行智能事件分析,以及透過完整響應平台根除威脅,甚至打造情資分享平台讓企業能協同抵禦新型態攻擊。,位在台北南港的IBM 資安實驗室近年研發重點為打造智能資安中心(SOC)。從基礎防護如惡意郵件分析以及攔截、阻擋惡意DNS查詢(Quad9),到運用Watson進行智能事件分析,以及透過完整響應平台根除威脅,甚至打造情資分享平台讓企業能協同抵禦新型態攻擊。本文由IBM資安防禦經理吳明峰摘要整理。>