黃 躍
(紅河學院信息技術中心,云南蒙自 661199)
居于網(wǎng)絡安全事件多發(fā)的現(xiàn)狀,在對關鍵信息系統(tǒng)做好安全防護的同時,也要注重完善應急處置預案和對有違法信息網(wǎng)站的“一鍵關停”機制。特別是在關鍵時間節(jié)點發(fā)生網(wǎng)絡安全事件時,為避免產(chǎn)生較大負面影響,對關鍵信息系統(tǒng)能用最快最簡便的方式進行關停顯得尤為重要。本文從關停操作系統(tǒng)角度,設計并實現(xiàn)了一種簡便快捷的遠程關機系統(tǒng)。
網(wǎng)絡安全事件發(fā)生時,通常關停操作需要在業(yè)務內(nèi)網(wǎng)的防火墻、DNS或者出口路由器等設備上完成。由于受時間、地點限制和操作復雜等因素,往往導致不能在規(guī)定時間內(nèi)完全切斷重要信息系統(tǒng)訪問,造成了難以預計的負面社會影響。雖然目前也出現(xiàn)了利用設備廠商提供的微信公眾號“關?!眱?nèi)網(wǎng)系統(tǒng)的方式,但該種方式也需要在用戶內(nèi)網(wǎng)部署特定設備,已到達阻斷信息系統(tǒng)網(wǎng)絡訪問的目的。首先這種方式受到用戶內(nèi)網(wǎng)運行狀態(tài)限制,一旦網(wǎng)絡堵塞阻斷指令難以及時下達,其次不能從操作系統(tǒng)層面進行處置,造成關停不徹底的情況。
本文從實際出發(fā),確定了如下幾方面的需求:
(1)使用手機進行遠程服務器的監(jiān)控和下發(fā)關停指令。
(2)在接到關停通知時,能在3分鐘內(nèi)完成關鍵信息系統(tǒng)的關停操作。
(3)具備同時處理多臺、多種操作系統(tǒng)關停的能力。
(4)關停系統(tǒng)使用獨立于業(yè)務網(wǎng)絡的運營商4G通訊線路。
(5)系統(tǒng)部署簡便、使用成本較低。
首先對業(yè)務網(wǎng)絡進行綜合環(huán)境分析,充分了解業(yè)務內(nèi)網(wǎng)當前的網(wǎng)絡環(huán)境、服務器配置和信息系統(tǒng)部署情況,建立資產(chǎn)清單。
其次,在數(shù)據(jù)通信模塊中,使用基于TCP/IP協(xié)議的Socket通信技術開發(fā)服務器控制端和客戶端,以適應多個信息系統(tǒng)和多種操作系統(tǒng)的混合部署模式??紤]到客戶端和控制端并發(fā)通信處理的高效穩(wěn)定,在控制端中采用I/O多路復用技術實時響應客戶端的連接請求和指令下發(fā)。數(shù)據(jù)傳輸時采用非對稱加密技術[1],確保數(shù)據(jù)的安全性,系統(tǒng)技術路線如圖1所示。
在遠程控制部分,操作員使用專用Android程序通過身份驗證后,選擇對應信息系統(tǒng)服務器進行關機指令下達。整個操作過程利用獨立于內(nèi)網(wǎng)環(huán)境的運營商4G網(wǎng)絡進行數(shù)據(jù)交互。通訊方式如圖2所示。
圖2 系統(tǒng)通信方式圖
系統(tǒng)由6個部分組成:監(jiān)控服務端,關停客戶端、系統(tǒng)管理前端,Web服務接口,Android操控端[2],數(shù)據(jù)庫服務。系統(tǒng)核心部分框架如圖3所示。
圖3 系統(tǒng)框架圖
(1)系統(tǒng)管理前端:為服務器和相關信息系統(tǒng)管理提供統(tǒng)一的Web管理界面。主要對關停客戶端和所承載信息系統(tǒng)管理,包含服務器IP地址、操作系統(tǒng)類型、信息系統(tǒng)描述、數(shù)據(jù)庫信息、用戶信息等。
(2)監(jiān)控服務端:為系統(tǒng)核心服務中間件。從數(shù)據(jù)庫中取得在線服務器列表進行實時監(jiān)聽,等待關??蛻舳说倪B接請求,一旦收到連接請求驗證其身份后,開始接收心跳數(shù)據(jù),保持相互通信連接。如果接收到Android操控端的關機指令時,轉發(fā)關機命令到指定服務器由關??蛻舳送瓿申P機,并把關機記錄寫入數(shù)據(jù)庫。
(3)關??蛻舳耍悍謩e部署到每一臺關停服務器,針對不同的操作系統(tǒng)可實現(xiàn)快速關機操作。關??蛻舳诉B接到監(jiān)控服務端后運行期間不斷發(fā)送心跳數(shù)據(jù)并保持連接。接收到下發(fā)的關機指令后,強制關閉當前操作系統(tǒng)。
(4)Web服務接口:承接了監(jiān)控服務端與外部Android操控端的服務接口。使用Web Service的方式提供遠程用戶身份驗證,轉接關機指令,操作日志查詢等接口。
(5)Android操控端:操作人員在手機上使用專用APP通過運營商4G網(wǎng)絡遠程獲取Web Service接口服務,實現(xiàn)遠程監(jiān)控和關機操作。
每個模塊下的主要功能,如圖4所示。
圖4 功能結構圖
其中,監(jiān)控服務端,關??蛻舳?、系統(tǒng)管理前端使用Python 3.8.4語言開發(fā),開發(fā)工具為PyCharm Professional Edition;Web服務接口使用C#語言開發(fā),開發(fā)工具為 Visual Studio 2019,F(xiàn)ramework 4.7.2;Android操控端使用Java語言開發(fā),開發(fā)工具為Android Studio 4.0,minSdk Level 26;數(shù)據(jù)庫系統(tǒng)采用Mysql 8.0。
數(shù)據(jù)源存儲了用戶信息、系統(tǒng)信息、服務器信息、關停服務狀態(tài)、心跳數(shù)據(jù)、操作日志等,其中主要數(shù)據(jù)關系如圖5所示。
圖5 主要數(shù)據(jù)關系圖
(1)xtba_xtxx:存儲相應服務器中承載的信息系統(tǒng)信息,字段描述如表1所示。
表1 系統(tǒng)信息表
(2)ywzt_fwqxx:存儲服務器信息,字段描述如表2所示。
表2 服務器信息表
(3)ywzt_zxxx:存儲關??蛻舳伺c監(jiān)控服務端之間通信心跳數(shù)據(jù),字段描述如表3所示。
表3 在線信息表
該功能模塊使用基于Python語言的Django框架進行開發(fā)。首先建立信息系統(tǒng)、服務器信息和用戶數(shù)據(jù)模型,在視圖文件中分別編寫數(shù)據(jù)處理邏輯,再適配對應的模板文件進行頁面渲染,最后配置頁面的路由實現(xiàn)瀏覽器的正確訪問,其中服務器信息處理界面截圖如圖6所示。
圖6 服務器管理界面截圖
讀取配置文件config.ini,獲取監(jiān)聽參數(shù)后啟動監(jiān)聽服務,等待關停客戶端的連接請求。監(jiān)聽服務采用I/O多路復用技術,使用操作系統(tǒng)級的select函數(shù),異步獲取連接套接字的狀態(tài)變化。收到連接請求后,立即執(zhí)行注冊處理函數(shù),避免了傳統(tǒng)I/O模型中的阻塞問題,同時實現(xiàn)了在同一個線程內(nèi)并發(fā)處理多個I/O請求的目的,提高了運行效率。
當有連接請求出現(xiàn)時,首先到數(shù)據(jù)庫中校驗連接客戶端是否是支持一鍵關機的服務器,如果校驗成功則接受連接請求并存儲客戶端上線信息,否則拒絕連接請求。在保持連接期間服務端不斷接收來自多個客戶端的心跳數(shù)據(jù),其數(shù)據(jù)格式為(IP地址,端口,服務器ID,狀態(tài)值,發(fā)送時間)。通過心跳數(shù)據(jù)獲取關??蛻舳说倪\行狀態(tài),確保下發(fā)關機指令時客戶端能及時接收和執(zhí)行,詳細流程如圖7所示。
圖7 監(jiān)控服務流程圖
另外,管理員可在服務端使用控制臺輸入和執(zhí)行其他命令,命令包括:
(1)list:可以讓管理員實時查看當前連接服務的關??蛻舳嗽敿毿畔?,如服務器名稱、IP地址、在線狀態(tài)等;
(2)clear:清除歷史心跳數(shù)據(jù);
(3)shutdown:在業(yè)務內(nèi)網(wǎng)中測試關機執(zhí)行情況;
(4)quit:通知關??蛻舳岁P閉連接,退出監(jiān)聽服務。
關??蛻舳诉B接監(jiān)控服務端后每隔一段時間就向服務端發(fā)送狀態(tài)信息,并實時接收服務端下發(fā)的指令。接收到關機指令后,根據(jù)所在操作系統(tǒng)類型立即執(zhí)行關停指令,其中Windows類執(zhí)行“shutdown-s-t 0”,Linux類執(zhí)行“sudo init 0”。
該接口以WebService的方式提供外部Android操控端和內(nèi)部監(jiān)控服務端之間的調(diào)用服務,主要類結構如圖8所示:
圖8 Web服務主要類圖
功能實現(xiàn)細節(jié)大致如下:
(1)Login接口中對操作員進行用戶名和密碼驗證。用戶輸入的密碼采用pbkdf2_sha256算法進行180000次的隨機salted計算,其計算結果和存儲在數(shù)據(jù)庫中密碼字段的hash值進行等值比較得出驗證結果。
(2)從GetServiceState接口可以獲取到當前監(jiān)控服務的實時運行狀態(tài),也可以查詢某個時間段監(jiān)控服務狀態(tài)的變化情況來判斷系統(tǒng)運行的穩(wěn)定性和有效性。
(3)通過GetServerList接口可實時獲取當前關停客戶端的在線信息,包括服務器名稱、IP地址、業(yè)務名稱、操作系統(tǒng)類型、在線狀態(tài)等。
(4)GetOperateRecordList接口提供對每一個關??蛻舳说牟僮饔涗洸樵?。
(5)使用RunShutdown接口下發(fā)關停指定服務器的指令。
為了實現(xiàn)服務接口訪問不受業(yè)務內(nèi)網(wǎng)出口限制,在服務接口處部署了帶內(nèi)網(wǎng)穿透功能的4G路由器,把服務接口服務器和特定域名進行映射綁定。使用獨立于業(yè)務網(wǎng)絡的運營商4G網(wǎng)絡,Android操控端通過訪問特定域名下的服務接口,實現(xiàn)了兩端的數(shù)據(jù)互通。
在獲取遠程接口服務返回數(shù)據(jù)時,使用了繼承異步任務AsyncTask類的方式來實現(xiàn)。在異步類的doInBackground方法中使用ksoap2 API實現(xiàn)了WebService的訪問。得到返回結果后在onPostExecute方法中對操作界面進行數(shù)據(jù)更新,避免了Android程序中UI操作線程不安全和Android 4.0后禁止在UI線程中執(zhí)行網(wǎng)絡操作的問題。
本文主要介紹了基于4G網(wǎng)絡的遠程一鍵關機系統(tǒng)的設計與實現(xiàn)。沒有攻不破的網(wǎng)絡,沒有絕對的信息安全,針對應急處置要求,傳統(tǒng)的關停機制不僅部署復雜、售價高昂,而且受自身網(wǎng)絡運行狀態(tài)的影響很難保證關停的及時性和有效性。本系統(tǒng)既不受業(yè)務網(wǎng)絡狀態(tài)的影響,操作又簡單快捷,具有很強的實用性。下一步將對遠程操控端進行功能擴充,增加批量操作能力和針對蘋果系統(tǒng)的操控端。