国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于B/S架構的工業(yè)主機衛(wèi)士軟件設計與實現(xiàn)

2022-02-14 12:13任軍鋒楊立源
自動化儀表 2022年1期
關鍵詞:白名單網(wǎng)卡衛(wèi)士

任軍鋒,楊立源

(上海工業(yè)自動化儀表研究院有限公司,上海 200233)

0 引言

隨著“中國制造2025”行動綱領的推出和近年工業(yè)互聯(lián)網(wǎng)的迅速發(fā)展,全球各地爆發(fā)的工業(yè)互聯(lián)網(wǎng)安全事故讓越來越多的人意識到,工業(yè)生產(chǎn)環(huán)境不再是信息孤島,工業(yè)生產(chǎn)環(huán)境的系統(tǒng)安全防護已經(jīng)迫在眉睫。工業(yè)生產(chǎn)環(huán)境一旦遭到攻擊,造成的損失往往是巨大的。伊朗核電站遭受的震網(wǎng)病毒和富士康工廠遭受的勒索病毒,都是很好的例證。在整個工業(yè)互聯(lián)網(wǎng)安全防御中,主機的安全防護是工業(yè)互聯(lián)網(wǎng)的最后一道防線。

工業(yè)生產(chǎn)環(huán)境的主機系統(tǒng)中,運行軟件和運行環(huán)境相對固定,但是未知軟件程序的威脅卻是不可預知的。因此,工業(yè)現(xiàn)場的主機不適用黑名單規(guī)則,而適用白名單規(guī)則[1]。以當前安全的基礎軟件環(huán)境為基準點,分別按照可執(zhí)行的控制文件(包含COM、EXE、OCX、DLL文件)、網(wǎng)卡設備和U盤設備生成多組白名單規(guī)則。采用國密SM3算法生成各條白名單規(guī)則的指紋信息。主機衛(wèi)士軟件將實時監(jiān)控本機系統(tǒng)運行情況,根據(jù)配置的白名單規(guī)則,實時對運行過程中產(chǎn)生的進程事件、U盤插拔事件、網(wǎng)卡啟用/禁用事件進行行為審計,并對不在白名單內(nèi)的行為事件生成實時告警信息。同時,主機衛(wèi)士支持切換審計和保護兩種模式。審計模式下,系統(tǒng)對白名單規(guī)則外的事件只生成告警信息,而不會阻斷該行為。保護模式下,系統(tǒng)對白名單規(guī)則外的事件既阻斷該事件行為,又生成阻斷的告警信息。

1 需求分析和技術選擇

1.1 需求分析

工業(yè)主機衛(wèi)士的主要功能是基于白名單規(guī)則對可執(zhí)行文件、U盤和網(wǎng)卡等進行實時監(jiān)控。該產(chǎn)品支持審計和保護兩種模式。用戶可以通過Web頁面對指定的、已安裝主機衛(wèi)士的主機設置白名單規(guī)則;通過切換主機衛(wèi)士模式,可在Web頁面查看到實時的告警事件和阻斷事件信息。該需求需要分六步實現(xiàn)。①主機衛(wèi)士與管理平臺通信接口服務:選擇性能健壯,耦合度低,簡潔易用。②瀏覽器/服務器(browser/server,B/S)分布式架構設計的擴展性:采用Web層、中間件層、主機層三層架構。③白名單規(guī)則的設計。④消息應用程序編程接口(application programming interface,API)結構流程設計:消息收發(fā)必須經(jīng)過確認,設置快、慢消息隊列,以防止消息擁堵。⑤阻斷進程和U盤網(wǎng)卡外設的技術方式:選擇Windows API Hook技術,開發(fā)便捷,易于擴展,且能在真正運行前阻斷。⑥數(shù)據(jù)存儲:選擇輕量、便捷存儲的數(shù)據(jù)庫,以節(jié)約主機資源。

1.2 技術選擇

與其他緩存產(chǎn)品相比,Redis消息中間件有以下特點:①支持數(shù)據(jù)持久化;②支持key-value、列表、集合結構的存儲;③支持數(shù)據(jù)備份及主從模式部署。主機衛(wèi)士軟件系統(tǒng)和管理平臺可以自由設計消息結構,通過該Redis消息中間件傳遞數(shù)據(jù),降低了系統(tǒng)和平臺的端耦合度。主機衛(wèi)士軟件系統(tǒng)和管理平臺的接口開發(fā)都不受平臺和開發(fā)語言的影響,提高了程序的兼容性和可用性[2]。

1.2.1 國密SM3加密算法

SM3加密算法是我國自主設計的密碼雜湊算法,適用于商用密碼中數(shù)字簽名和驗證消息認證碼的生成與驗證,以及隨機數(shù)的生成,可滿足多種密碼應用的安全需求[3]。在白名單規(guī)則的指紋信息生成部分,主機衛(wèi)士采用了SM3算法,安全性優(yōu)于MD5和SHA-1算法。

SQLite數(shù)據(jù)庫是一個進程內(nèi)的庫,實現(xiàn)了自給自足的、無服務器的、零配置的、事務性的結構化查詢語言(structured query language,SQL)數(shù)據(jù)庫引擎。它具有不依賴服務、無需安裝、跨平臺、支持標準SQL語句等特點,是輕量級數(shù)據(jù)庫。主機衛(wèi)士軟件中主要存儲白名單規(guī)則信息和模式配置信息。SQLite數(shù)據(jù)庫完全能滿足需求且使用便捷[4]。

1.2.2 Windows API Hook技術

Hook技術是對Windows 的 API 進行攔截的技術,可以截獲系統(tǒng)中的消息流,如鍵盤和鼠標輸入等。根據(jù)處理消息范圍的不同,攔截技術可分為Local Hook和Remote Hook。①Local Hook僅能阻斷屬于自身進程的事件,使用范圍有限[5]。②Remote Hook不僅可以阻斷自身進程事件,還可以阻斷其他進程事件。根據(jù)主機衛(wèi)士白名單外進程事件阻斷的需求,Remote Hook更適用[6]。遠線程插入技術可以通過動態(tài)庫的方式實現(xiàn)。Windows系統(tǒng)中新進程的創(chuàng)建都會調(diào)用CreateProces()函數(shù),通過寫一個新的函數(shù)CreateProcessNew()注入進程,替換原來調(diào)用的CreateProcess()函數(shù)在進程內(nèi)存中的位置。如果可執(zhí)行文件在白名單內(nèi),則CreateProcessNew()函數(shù)正常調(diào)用CreateProcess()函數(shù);反之,則阻止調(diào)用Create Process()函數(shù),以達到阻斷創(chuàng)建新進程的目的[7]。

2 軟件架構設計與實現(xiàn)

2.1 系統(tǒng)架構圖

系統(tǒng)架構如圖1所示。整個系統(tǒng)分為Web業(yè)務層、中間件服務層和主機群層。Web服務器通過Redis通道將控制指令和規(guī)則策略下發(fā)到指定的主機節(jié)點。主機節(jié)點在收到指令和規(guī)則策略后,配置主機安全策略,更新本地主機數(shù)據(jù)庫信息。主機實時監(jiān)控本機運行過中的風險事件和行為,上傳消息至Redis消息中間件。Web業(yè)務層從中間件服務層獲取相關數(shù)據(jù)信息后,實時存入主機衛(wèi)士管理平臺數(shù)據(jù)庫(data base,DB)。用戶可以通過終端Web瀏覽器實時查看各主機節(jié)點的安全事件詳情。

圖1 系統(tǒng)架構圖Fig.1 System structure diagram

以上架構的層次設計可以保證程序有較好的擴展性和跨平臺兼容性。當主機節(jié)點數(shù)據(jù)量增加時,只需增加相應的Web服務器即可滿足一般的擴展需求。中間件服務層的設計也讓系統(tǒng)具備跨平臺兼容性。例如:主機衛(wèi)士管理平臺可以支持Linux和Windows這兩種操作系統(tǒng),但是主機衛(wèi)士軟件系統(tǒng)不需要因為管理平臺操作系統(tǒng)的不一樣而去開發(fā)、維護多套程序。軟件系統(tǒng)與管理平臺的通信只與Redis消息中間件接口相關,節(jié)約了開發(fā)和維護成本。

2.2 通信接口流程圖

通信接口流程如圖2所示。由圖2可知,主機衛(wèi)士中有獨立的線程處理數(shù)據(jù)上傳和數(shù)據(jù)接收。對于不同的業(yè)務數(shù)據(jù),處理線程和隊列分為快、慢兩種。這樣既可以保證配置規(guī)則及時下發(fā)、及時響應需要快速響應的消息,又可以保證大批量實時告警信息的正常上傳。多線程和隊列的配合使用,大大提高了程序各環(huán)節(jié)處理數(shù)據(jù)的并發(fā)能力,優(yōu)化了程序性能。

圖2 通信接口流程圖Fig.2 Flowchart of communication interface

2.3 技術要點分析

2.3.1 接口通信設計

接口通信設計滿足消息中轉(zhuǎn)傳輸功能要求,同時接口不依賴平臺和開發(fā)語言,具有持久化特點。例如:主機衛(wèi)士軟件系統(tǒng)和管理平臺的通信接口部分,主要使用Redis消息中間件,上傳數(shù)據(jù)告警信息,下發(fā)管理平臺配置信息。確定接口后,主機衛(wèi)士軟件系統(tǒng)和管理平臺可以并行開發(fā)。主機衛(wèi)士軟件系統(tǒng)和管理平臺可以各自專注于自身業(yè)務功能,而無需關注通信層問題。而且Redis具有持久化特點,即使管理平臺臨時發(fā)生故障,軟件系統(tǒng)上傳的數(shù)據(jù)也不會丟失,從而保證了數(shù)據(jù)的完整性。

2.3.2 B/S分布式架構

設計系統(tǒng)時要考慮實際使用場景和后期可擴展性。傳統(tǒng)的主機衛(wèi)士是單機版的裝機軟件。對于主機分散的工廠生產(chǎn)環(huán)境,沒有統(tǒng)一的管理平臺,只能靠用戶查看來獲取每臺主機的告警信息,工作效率極低。采用B/S架構模式,一個Web服務器可以同時管理多臺主機衛(wèi)士節(jié)點。一次部署完成后,只要通過管理平臺就能進行統(tǒng)一監(jiān)控,節(jié)約了人力成本。B/S分布式架構采用Web層、中間件層、主機三級架構。當主機數(shù)量增多、出現(xiàn)性能瓶頸時,只需增加服務器設備,部署中間件和Web服務器,就能快速解決性能瓶頸。

2.3.3 白名單規(guī)則的設計

基于白名單規(guī)則控制主機安全,就必須保證生成的白名單指紋具有唯一性和安全性。對于可執(zhí)行文件,不能依賴于文件名和路徑,而需要根據(jù)文件內(nèi)容生成白名單。SM3算法滿足此需求。文件內(nèi)容、U盤的系列號、網(wǎng)卡的媒體訪問控制(media access control,MAC)地址都可以作為SM3算法的自變量來生成指紋信息。

2.3.4 消息API結構和流程設計

通過Redis傳輸?shù)南⒔Y構設計要具有統(tǒng)一的格式和規(guī)范。所有的請求消息必須有響應,確認消息已送達。在消息結構中要區(qū)分快發(fā)送的消息和慢發(fā)送的消息。告警信息數(shù)據(jù)量大,時效性要求略低。因此,可將該類數(shù)據(jù)加入慢發(fā)送隊列。主機上傳的狀態(tài)數(shù)據(jù)、響應消息和管理平臺下發(fā)的白名單規(guī)則數(shù)據(jù),時效性要求高,由Web頁面實時等待反饋。因此,將這些數(shù)據(jù)加入快發(fā)送隊列???、慢兩種發(fā)送方式的協(xié)作,可保證系統(tǒng)穩(wěn)定、流暢地運行。

2.3.5 阻斷進程和U盤網(wǎng)卡外設的技術方式

對于阻斷可執(zhí)行文件白名單外的進程,需要在進程啟動前就終止進程。Windows API Hook的遠程動態(tài)鏈接庫(dynamic link library,DLL)注入方式可以滿足該功能。創(chuàng)建參數(shù)與CreateProcess()函數(shù)相同的新函數(shù)CreateProcessNew(),生成待注入的阻斷DLL文件。針對32位進程和64位進程注入,需要分別生成32位和64位阻斷DLL。

調(diào)用Windows API 函數(shù)HANDLE WINAPI CreateRemoteThread(),將動態(tài)庫遠程注入指定進程,例如explorer.exe、taskmgr.exe等。

EnumProcessModules()函數(shù)則可以列出啟動該進程所依賴的DLL、OCX文件,阻斷不在白名單內(nèi)的DLL、OCX文件的調(diào)用和運行[7]。

USB阻斷API函數(shù)為BOOL WINAPI DeviceloControl()。網(wǎng)卡阻斷API函數(shù)為INetConnection類的virtual HRESULT STDMETHODCALLTYPE Disconnect(void)=0[8]。

2.4 消息接口設計

Redis消息接口請求內(nèi)容:

request =

{

"message_id":"99882121",

#消息ID

"strategy":

{

"strategy_type":1,

#策略類型:1文件,2 USB,3網(wǎng)卡

"strategy_id":554,

#策略編號

"c_tag":"2",

#動作類型:2新建,3模式切換

"content":["C:\dest"],

#策略內(nèi)容,與策略類型相關

"sourceip":"192.168.2.108",

#接收策略的主機衛(wèi)士IP

"event":2

#事件類型

}

}

Redis消息接口響應內(nèi)容:

response =

{

"message_id":"99882121",

#消息ID

"sourceip":"192.168.2.108",

#響應的主機衛(wèi)士IP

"status":1,

#收到請求:0否,1是

"result":{}

#響應結果

}

2.5 部署測試

按照以上的系統(tǒng)架構設計軟件,在編碼開發(fā)完成后,需要對整個軟件需求的功能進行部署測試。建議至少準備三臺主機設備:一臺Linux服務器和兩臺Windows系統(tǒng)計算機。Linux服務器部署主機衛(wèi)士管理平臺、Windows系統(tǒng)計算機,并安裝主機衛(wèi)士軟件。部署測試主要包含四個部分。

①生成白名單規(guī)則功能測試:該功能是本系統(tǒng)軟件的基本功能。用戶可以通過指定IP設備和路徑自動生成主機衛(wèi)士的可執(zhí)行文件白名單,通過推薦U盤和網(wǎng)卡的指紋信息生成外設USB和網(wǎng)卡的白名單規(guī)則,簡單易用。

②主機衛(wèi)士審計模式測試:使用管理平臺將主機衛(wèi)士界面切換到審計模式下,使系統(tǒng)可以實時生成白名單外的進程和USB、網(wǎng)卡的告警信息。同時,白名單規(guī)則內(nèi)的程序和外設可以正常運行、加載。

③主機衛(wèi)士保護模式測試:管理平臺將主機衛(wèi)士界面切換到保護模式下,系統(tǒng)可以實時生成白名單外的進程和USB、網(wǎng)卡的告警信息,同時阻斷白名單規(guī)則內(nèi)的程序和外設的運行和加載。

④系統(tǒng)可靠性、健壯性測試:該測試是指主機衛(wèi)士需要對主機設備進行7×24 h的實時告警和防護,保證主機衛(wèi)士軟件的正常工作。

3 結論

工業(yè)互聯(lián)網(wǎng)是新一代信息技術 (information technology,IT)與傳統(tǒng)工業(yè)操作技術(operation technology,OT)全方位深度融合所形成的產(chǎn)業(yè)和應用生態(tài)。為了管理和控制的一體化,實現(xiàn)生產(chǎn)和管理的高效率、高效益,工業(yè)企業(yè)深度融合IT/OT,在拓展了工業(yè)控制系統(tǒng)發(fā)展空間的同時,也帶來了一系列的工業(yè)網(wǎng)絡安全問題[9]。

本文基于B/S架構的工業(yè)主機衛(wèi)士軟件設計,為解決工業(yè)場景下的主機安全問題提供了有效的解決思路。通過詳細的需求調(diào)研、分析數(shù)據(jù)、設計開發(fā)、部署測試,很好地滿足了工業(yè)場景下主機防護的基本需求,是主機類產(chǎn)品研發(fā)的全新的實例。下一步還可以對主機的EventID等事件進行審計分析。本文所提出的軟件設計方法,對實際問題的解決有一定參考價值。

猜你喜歡
白名單網(wǎng)卡衛(wèi)士
鐵道小衛(wèi)士
風中小衛(wèi)士
我是環(huán)保小衛(wèi)士
核電廠儀控系統(tǒng)安全防護策略研究及應用
UAC提示太煩 教你做個白名單
部署Linux虛擬機出現(xiàn)的網(wǎng)絡故障
2019年“移動互聯(lián)網(wǎng)應用自律白名單”出爐
Server 2016網(wǎng)卡組合模式
移動互聯(lián)網(wǎng)白名單認證向中小企業(yè)開放
挑戰(zhàn)Killer網(wǎng)卡Realtek網(wǎng)游專用Dragon網(wǎng)卡
镇宁| 原阳县| 加查县| 江孜县| 定陶县| 嘉善县| 威信县| 清流县| 奇台县| 大同市| 古丈县| 轮台县| 江源县| 濮阳县| 镇坪县| 东乡族自治县| 明溪县| 广东省| 云梦县| 宁都县| 长春市| 康保县| 抚宁县| 拉萨市| 汝南县| 乌拉特后旗| 亳州市| 遵化市| 名山县| 黑河市| 瓮安县| 来安县| 象州县| 巨鹿县| 东兰县| 山东| 盖州市| 铁岭市| 裕民县| 沧源| 德令哈市|