正常情況下,產品每半年乙個版本,比如13年上半年是13.1r1,下半年是13.2r1,到了14年就是14.1r1和14.2r1。但特殊情況下也會為了某些重要的客戶增加幾個例外版本,比如13.3r1,13.3r2等等。
從2023年6月份至今,為了滿足國外某大客戶的安全性需求,開始在版本中增加安全加固的**,其中絕大部分是修改linux作業系統及安裝軟體如mysql的配置檔案,增刪改一些配置條目。本來以為乙個版本就會完成相關需求,但是客戶在後續陸陸續續又提過來很多相關問題,同時還有一些前面改過後來又發現的相同問題。下面僅從公升級指令碼的設計規劃角度分析一下存在的問題及可能的改進方法。
目前公升級指令碼是這樣設計的,
系統全新安裝時,不論哪個版本,都會執行到本版本為止的所有安全加固指令碼(就是圖中的securityconfigchang*.sh),比如安裝13.3版本(圖中綠線),那麼securityconfigchange131.sh,securityconfigchange132.sh和securityconfigchange133.sh都會被執行;公升級時,由於版本是鏈式公升級的,比如從13.1公升級到13.3,那實際公升級路徑是13.1->13.2->13.3(圖中黃線),會執行的安全加固指令碼是securityconfigchange132.sh和securityconfigchange133.sh,securityconfigchange131.sh不會被執行,因為當前版本是13.1,已經包含本版本的安全加固內容了。每乙個指令碼裡面都散布著各種安全加固設定,比如某配置檔案的,系統引數的,等等。
從目前看,不論全新安裝還是公升級都沒什麼問題,所有該執行的都執行了。但是在實際中卻發現了一些回歸問題,比如問題a在13.1已經解決了,但是公升級到13.3就又出現了,而全新安裝的沒有問題,這是怎麼回事呢?
經過分析,因為在版本公升級過程中我們也會公升級軟體的rpm包,這樣就導致有些系統設定被重置!比如服務的自啟動狀態及預設配置,公升完級後安全加固的配置就沒有了。
問題就是這樣,如何解決呢?僅是理論性分析,未經驗證
類似於面向切面的程式設計,如果從另外乙個角度規劃公升級指令碼,將每一類的問題作為乙個檔案,比如,系統的sysctl配置,file permission設定,服務自啟動狀態設定,以及各重要服務自己的配置檔案,比如apache httpd,mysql等,從每一類問題的角度來劃分指令碼。
這種劃分方式要注意的一點是要保證指令碼可重入性,也就是保證指令碼多次被執行不會發生錯誤,也就需要判斷當前狀態來進行設定。比如從13.1公升級到13.3,需要執行兩次安全加固指令碼,但第二次執行的內部可能包含第一次的,也就是第一次的配置相當於被執行了兩遍。
這種方式最大的好處是解決了公升級過程的配置遺漏,保證從每乙個「切面」上的安全指令碼都被執行過。但是不適合耗時費資源的內容,因為會被執行多次。
是否存在其他問題呢?歡迎補充
補充:經過最近幾天的討論,組裡面其他同學也基本都認識到這個問題,對方案有了進一步的優化:
對於像httpd, mysql等有相關配置檔案的公升級,可以每個版本在配置庫中儲存乙份完整的配置檔案模板,也就是所有安全性配置都已經在裡面了,每次全新安裝或者公升級直接將這個檔案覆蓋安裝後的配置檔案,然後進行必要的變數替換,比如換一下ip位址,主機名之類的。這樣又進一步簡化了配置過程,而且不容易出錯。
反爬蟲的一些心得
本帖持續更新 記錄了你的ip訪問頻率,針對ip彈出驗證碼 記錄了你的cookies訪問頻率,針對此賬號彈出驗證碼 雙管齊下,同時限制你的ip和賬號的訪問 這種好像是谷歌的驗證碼生成庫生成的中文驗證碼。拋開大量樣本的深度學習不說,這種驗證碼的難點在於 干擾線粗,幾乎和字元差不多,佔面積大,難以使用一般...
labview一些元件
在controls 即控制項選板 modern 即現代 decorations 即裝飾 horizontal smooth box,然後設為最底層就好顏色盒,將輸入數值型控制項,右鍵替換為顏色盒,位置在前面板 新式 數值 帶邊框顏色盒 程式框圖 程式設計 對話方塊與使用者介面 顏色盒常量 或者程式設...
一些優化方案
今天和大牛聊天,又討教了一下優化方案。接下來會具體實施。1.場景貼圖合併 規範 2.特效貼圖合併 不採用alpha通道 直接用rgb就可以 用etc壓縮 3.shader.warmupallshaders 預處理shader 4.場景部分物體可以採用lod處理 兩級 看得見 看不見 5.攝像機裁剪處...