shell實現對Windows伺服器的安全基線檢查
1. 需求及功能
目前對伺服器的管理,始終離不開安全這個話題。如果要對一臺windows伺服器的安全基線進行一個檢查,你認為需要多長的時間呢?
我們的檢查內容主要包括:當前伺服器效能檢查(CPU使用率\記憶體使用率\磁碟使用率)、安全組策略加固設定檢查、登錄檔加固設定檢查、系統服務加固設定檢查等等。要求記錄現有設定,並且通過與我們要求的設定進行對比,判斷檢查結果是否符合安全規範。
如果通過傳統的方式,一個熟練的windows管理員要檢查上述內容,保守估計用時每臺15分鐘,如果檢查10臺就是2個多小時了。有沒有效率一點方法?
答案是肯定的。工作原因,用過某些廠商基線檢查工具,對windows來說,檢查內容都差不多,自己也可以寫一個類似的東西,想檢查什麼都可以自己來定義,介面也簡潔點。反正檢查時只需敲下命令,然後喝茶,坐等1分鐘左右完成檢查,檢視結果就行了。對需要週期性進行安全基線檢查的朋友來說,絕對能大大節約時間。算上前期部署時間也不超過3分鐘,部署後一勞永逸,以後安全基線檢查只需要敲個命令就行。檢查
2. 實現原理及展示
2.1原理
原理是利用Python中的paramiko模組,通過ssh協議驗證windows的登入資訊,然後
呼叫windows的PowerShell來實現對window檢查命令的執行,然後取得結果,通過shell進行判斷,輸出結果(包括htm格式的結果)。目前測試過windows server2008R2和 2012R2 伺服器,可以正常執行。當然寫指令碼過程中會遇到一些問題,但是都有解決的思路,對指令碼有興趣的話可以討論下。
2.2展示例子
執行指令碼後,輸入需要檢查的windows伺服器資訊即可
檢查結果自動輸出,並進行判斷,紅色為不符合規範,綠色為符合規範
還有HTM格式結果,會通過腳本里的sz命令自動下載到你的secureCRT儲存路徑裡
檢查內容主要包括檢查專案符合率、伺服器效能檢查(CPU使用率\記憶體使用率\磁碟使用率)、安全組策略加固設定檢查、登錄檔加固設定檢查、系統服務加固設定檢查、是否安裝最新補丁、高危埠檢查等
3. 準備
3.1 一臺Centos系統: 我使用的虛擬機器centos6.6 (centos7上執行可能會報錯)用來執行指令碼,然後執行windows命令。需要有python(一般已經安裝了)
3.2 軟體:freesshd 官網上下載即可,主要是在被管理的windows伺服器上安裝
4. 實現步驟
4.1各windows伺服器安裝freesshd:freesshd的安裝直接預設下一步即可
freesshd安裝完成後需要稍作設定,如圖:
第一次執行freesshd如圖
然後點選右下角的freesshd圖示進行相關設定,SSH選項卡中,將Command shell設定成C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe如圖:
Users選項卡中點選“Add…”
在彈出的視窗加入windows伺服器的管理員賬號,然後將Shell打上√ 如圖:
最後可選擇是否在Automatic updates裡面關閉自動更新,我一般選擇關閉
設定完成後,在開始-執行 裡面鍵入”services.msc”將freesshd服務重啟一下
Sshd在windows伺服器上設定完成。
4.2安全設定(可選):各windows伺服器上配置ipsec只允許我們的centos伺服器連線sshd的22埠,這樣就避免了其他未授權的ssh連線,建議設定。
如果啟用了防火牆的話,還需要在防火牆裡面設定允許freesshd程式通過防火牆,設定完成後可以在centos伺服器上telnet X.X.X.X(windows伺服器IP) 22 的方式來測試連線是否OK,如圖測試正常:
4.3指令碼準備
1)在本文後面下載shell指令碼
2)在centos伺服器中上傳指令碼,命令rz然後選擇指令碼上傳即可
4.4執行指令碼開始檢查
後續:指令碼編寫思路
明確要檢查的內容-收集檢查結果-從檢查結果裡面取需要的資料-對資料進行判斷-生成結果