呂榮峰 陳軍
(中國聯合網絡通信有限公司重慶市分公司信息安全部,重慶 400042)
在互聯網中,黑客為獲取非法利益,采用自動化攻擊和滲透工具[1],攻擊數據庫以竊取重要信息[2]、篡改或破壞其中數據?,F實威脅需要加強數據庫網絡安全防護[3],而數據庫賬號的密碼安全是數據庫安全的重要基礎[4]。與主機帳號密碼修改[5]不同,數據庫賬號密碼絕大部分工作是將這些賬號相關聯的業(yè)務進程配置文件中的老密碼替換成新密碼,如果替換不全或出現錯誤,將會對系統(tǒng)業(yè)務造成影響,嚴重時將直接導致業(yè)務中斷。
某精細化系統(tǒng)有4臺數據庫服務器,有2個oracle數據庫,3個實例、1個mysql數據庫;14臺包含精細化應用、數據接口、數據處理、用戶數據統(tǒng)計、導航門戶、短彩信發(fā)送等業(yè)務應用服務器,10臺數據采集和預處理服務器。數據庫密碼修改步驟文件達16頁,需要修改的業(yè)務進程配置文件很多,配置文件中需要替換的地方最多的有8處。且業(yè)務進程配置文件中保存的是密碼的密文;配置文件修改前首先要將密碼加密為密文,然后再使用新密碼的密文替換老密碼的密文;此外,部分配置文件保存的是“賬號+密碼”組合再加密的密文。手工修改配置文件步驟多且并不一致,工作量很大,也容易出錯。
根據其它業(yè)務系統(tǒng)數據庫帳號密碼修改的經驗估計,該系統(tǒng)數據庫帳號密碼手工修改至少需要16小時,實施難度很大。而按照網絡安全要求,系統(tǒng)數據庫賬號的密碼每90天至少修改一次。手工修改密碼基本不可能,必須開發(fā)快速修改工具(以下簡稱工具)來完成該精細化系統(tǒng)數據庫帳號密碼修改和業(yè)務服務器進程配置文件修改、進程重啟相關工作。
工具在客戶端以Windows操作系統(tǒng)和SecureCRT為運行環(huán)境,使用bat、vbs和SecureCRT script語言和相關正則表達式[6]編寫腳本代碼;自動完成參數讀取、分解、賦值、設備登錄、接收服務器反饋,發(fā)送各種linux操作系統(tǒng)命令和數據庫帳號密碼修改命令,實現客戶端操作的自動化。在服務器端,工具自動接收客戶端命令、調用shell腳本程序并完成環(huán)境變量設置、帳號切換、數據庫帳號密碼修改、工作目錄切換、密碼字符串替換、業(yè)務進程重啟以完成數據庫帳號密碼修改、業(yè)務服務器相關配置文件修改、業(yè)務進程重啟等工作,從而實現服務器端的自動化。密碼修改整個過程的時間基本取決于客戶端和服務器端代碼處理時間、代碼設置的等待時間和數據的傳輸時間,從而達到減少密碼修改時間、降低密碼修改勞動強度和難度的目的。為監(jiān)控密碼修改過程,工具可以進行全過程日志記錄。
工具的綜合流程如下圖1所示:工具首先完成環(huán)境設置、時間變量設置、正則表達式設置等初始化,然后讀取配置文件的各個設備登陸密碼、超級賬號密碼、各個數據庫新老密碼等參數并完成參數的分解并去除前后空格,將這些參數賦值到各個主程序變量。
為保證參數的正確,工具在開始執(zhí)行數據庫密碼修改之前以彈窗的形式顯示各個參數以供確認,如果參數有問題,可以終止密碼修改進程。
工具首先判斷數據庫新密碼和老密碼是否有空值,如有空值,就警告新老密碼中有空值并終止工具的執(zhí)行。如無空值,工具將自動使用指定設備的賬號和密碼進行登陸,開啟日志記錄功能以記錄密碼修改整個過程。隨后切換到數據庫賬號環(huán)境下修改數據庫賬號的密碼:oracle數據庫修改sys、system和業(yè)務賬號密碼,mysql修改root和業(yè)務賬號密碼。
完成數據庫帳號密碼修改后,工具彈出是否進行相關業(yè)務服務器配置文件修改的彈窗,如果數據庫密碼修改有問題,點擊“no”按鈕終止工具運行;否則,點擊“yes”按鈕,開始業(yè)務服務器配置文件密碼字符串替換流程。完成替換后,對業(yè)務服務器的進程進行重啟以重置業(yè)務服務器和數據庫的鏈接,使業(yè)務服務器相關進程采用新密碼連接數據庫,隨后檢查指定業(yè)務賬號的業(yè)務進程和業(yè)務服務器和數據庫的鏈接情況。
在工具運行終端,使用函數調用的方式通過Secure CRT和業(yè)務服務器進行自動交互,完成業(yè)務進程配置文件備份、設備登錄、環(huán)境變量設置、配置文件修改shell腳本調用及執(zhí)行、業(yè)務進程檢查、業(yè)務服務器和數據庫服務器鏈接檢查等工作;在服務器端,通過shell腳本完成業(yè)務進程配置文件密碼字符串替換、替換效果檢查和業(yè)務進程重啟。
在工具中,設置帳號密碼修改的參數確認、配置文件開始修改確認、關鍵參數空值檢查,服務器IP顯示,防止參數設置錯誤帶來的不良后果,保證了工具運行的安全性和可靠性。
業(yè)務服務器配置修改流程如圖2所示:函數首先提示本函數用于完成那些IP地址和那個數據庫賬號的密碼字符串的替換。然后完成運行環(huán)境設置、變量設置、實時時間數據變量獲取、常數設置等初始化。初始化完成后,函數自動讀取工具的配置文件相關行,完成業(yè)務服務器密碼字符串修改所需要的各個設備登陸賬號與密碼、超級賬號密碼、各個數據庫新老密碼的讀取,參數的分解與變量賦值,并去除各個變量的前后空格。
圖1 工具綜合流程Fig.1 Tool integration process
圖2 業(yè)務服務器配置文件修改流程圖Fig.2 Business server configuration file modification flowchart
圖3 業(yè)務服務器配置文件密碼字符串替換shell腳本流程圖Fig.3 Business server configuration file password string replacement shell script flowchart
函數在開始替換業(yè)務服務器配置文件密碼字符串前,判斷數據庫新密碼和老密碼是否存在空值,如存在空值,函數將用彈窗警告數據庫新老密碼中有空值并終止函數的執(zhí)行。如果無空值,函數將自動使用當前設備的賬號和密碼登陸該設備,開啟日志記錄以全過程記錄業(yè)務進程配置文件密碼字符串替換。隨后切換到指定業(yè)務賬號環(huán)境下,設置環(huán)境變量、把工作目錄切換到進行密碼字符串替換的配置文件目錄下、備份配置文件并給備份文件名稱加上年月日時分字符串。這些工作完成后,切換到完成配置文件密碼字符串替換shell腳本所在的目錄,然后將指定數據庫賬號的新老密碼字符串作為實參賦予shell腳本,執(zhí)行腳本以完成密碼字符串的替換、業(yè)務進程重啟工作。此后函數向服務器發(fā)送指令,查看業(yè)務服務器指定業(yè)務賬號的進程情況以及服務器與數據庫實時鏈接情況。
業(yè)務服務器配置文件密碼密文替換shell腳本流程如圖3所示;首先顯示接收參數及相關初始化;然后將工作目錄切換到字符串加密程序所在的目錄,再次顯示指定數據庫賬號的新密碼,加密新密碼,將其密文作為環(huán)境變量輸出。加密老密碼,將其密文作為環(huán)境變量輸出。將工作目錄依次切換到需要替換密碼密文的業(yè)務進程配置文件的目錄下,使用正則表達式匹配配置文件中需要替換得密文行的關鍵字、使用新密碼密文精確替換老密碼密文,顯示替換后的效果。在此過程中,若配置文件需要對“帳號+密碼”組合進行加密密文的替換,shell腳本程序發(fā)送的實參為“賬號+密碼”,shell腳本程序以此進行相關處理。最后是重啟業(yè)務進程,使業(yè)務進程使用新密碼連接指定數據庫實例。
簡單的業(yè)務進程重啟,是在啟停業(yè)務進程程序所在的目錄下,執(zhí)行重啟業(yè)務進程的程序。而針對比較難的業(yè)務進程重啟,編寫業(yè)務進程重啟腳本。腳本首先是初始化,然后將工作目錄切換到業(yè)務進程啟動目錄,先執(zhí)行業(yè)務進程停止命令,然后判定指定賬號是否還有進程存在,如果沒有,就執(zhí)行進程啟動命令;如果還有指定賬號的進程,就找出這些進程號使用kill-9強行殺除這些進程,等待2s后再執(zhí)行進程啟動命令。
連續(xù)10多次成功使用工具完成某精細化系統(tǒng)數據庫帳號密碼修改、業(yè)務服務器配置文件修改、業(yè)務進程重啟及進程檢查、業(yè)務服務器和數據庫鏈接檢查等整個數據庫帳號密碼修改過程、所花時間均在35分鐘以內,不到預估時間的二十分之一。工具運行期間、僅需人工進行必要的確認并監(jiān)控工具的執(zhí)行。從而解決了手工修改密碼存在的效率低、時間長、操作繁瑣、勞動強度高、精力損耗大、容易出現配置文件錯改或漏改等問題;大大降低數據庫帳號密碼修改實施難度,從而可以保證密數據庫帳號的密碼強度及其修改的頻度。
使用和工具相同方法開發(fā)的某web業(yè)務系統(tǒng)數據庫賬號密碼修改工具,使該web系統(tǒng)數據庫密碼修改時間從150多分鐘下降到不到15分鐘,證明了該工具的相關方法在實際應用中具有較好的普適性。
工具通過secureCRT和linux設備自動執(zhí)行各種交互,自動完成數據庫帳號密碼修改、業(yè)務服務器配置文件修改、業(yè)務進程重啟等工作。在實際的應用中,工具體現出了很高的效率,大大縮短了密碼修改的時間,避免了手工操作繁瑣、精力損耗大、容易出現配置文件漏改和改錯等問題,大大降低了數據庫密碼修改的實施難度;在實際應用中體現了非常好的實用價值。工具開發(fā)方法在其它系統(tǒng)的成功實現和應用說明了該方法的普適性,為安全和自動化運維[7]提供一個良好的方法模版。