windows日志的保護(hù)與偽造

字號:

日志對于系統(tǒng)安全的作用是顯而易見的,無論是網(wǎng)絡(luò)管理員還是黑客都非常重視日志,一個有經(jīng)驗的管理員往往能夠迅速通過日志了解到系統(tǒng)的安全性能,而一個聰明的黑客往往會在入侵成功后迅速清除掉對自己不利的日志。下面我們就來討論一下日志的安全和創(chuàng)建問題。
    一:概述:
     Windows2000的系統(tǒng)日志文件有應(yīng)用程序日志,安全日志、系統(tǒng)日志、DNS服務(wù)器日志等等,應(yīng)用程序日志、安全日志、系統(tǒng)日志、DNS日志默認(rèn)位置:%systemroot%\system32\config,默認(rèn)文件大小512KB。
     安全日志文件:%systemroot%\system32\config\SecEvent.EVT
     系統(tǒng)日志文件:%systemroot%\system32\config\SysEvent.EVT
     應(yīng)用程序日志文件:%systemroot%\system32\config\AppEvent.EVT
     這些LOG文件在注冊表中的:
     HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Eventlog
     有的管理員很可能將這些日志重定位。其中EVENTLOG下面有很多的子表,里面可查到以上日志的定位目錄。
    二:作為網(wǎng)絡(luò)管理員:
     1.日志的安全配置:
     默認(rèn)的條件下,日志的大小為512KB大小,如果超出則會報錯,并且不會再記錄任何日志。所以首要任務(wù)是更改默認(rèn)大小,具體方法:注冊表中HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Eventlog對應(yīng)的每個日志如系統(tǒng),安全,應(yīng)用程序等均有一個maxsize子鍵,修改即可。
     下面給出一個來自微軟站點的一個腳本,利用VMI來設(shè)定日志25MB,并允許日志自行覆蓋14天前的日志:
     該腳本利用的是WMI對象, WMI(Windows Management Instrumentation)技術(shù)是微軟提供的Windows下的系統(tǒng)管理工具。通過該工具可以在本地或者管理客戶端系統(tǒng)中幾乎一切的信息。很多專業(yè)的網(wǎng)絡(luò)管理工具都是基于WMI開發(fā)的。該工具在Win2000以及WinNT下是標(biāo)準(zhǔn)工具,在Win9X下是擴(kuò)展安裝選項。所以以下的代碼在2000以上均可運行成功。
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
     & "{impersonationLevel=impersonate,(Security)}!\\" & _
     strComputer & "\root\cimv2") '獲得VMI對象
    Set colLogFiles = objWMIService.ExecQuery _
     ("Select * from Win32_NTEventLogFile")
    For each objLogfile in colLogFiles
     strLogFileName = objLogfile.Name
     Set wmiSWbemObject = GetObject _
     ("winmgmts:{impersonationLevel=Impersonate}!\\.\root\cimv2:" _
     & "Win32_NTEventlogFile.Name='" & strLogFileName & "'")
     wmiSWbemObject.MaxFileSize = 2500000000
     wmiSWbemObject.OverwriteOutdated = 14
     wmiSWbemObject.Put_
    Next
     將上述腳本用記事本存盤為vbs為后綴的即可使用。
     另外需要說明的是代碼中的strComputer="."在windows腳本中的含義相當(dāng)于localhost,如果要在遠(yuǎn)程主機(jī)上執(zhí)行代碼,只需要把"."改動為主機(jī)名,當(dāng)然首先得擁有對方主機(jī)的管理員權(quán)限并建立IPC連接.本文中的代碼所出現(xiàn)的strComputer均可作如此改動.
     2.日志的查詢與備份:
     一個優(yōu)秀的管理員是應(yīng)該養(yǎng)成備份日志的習(xí)慣,如果有條件的話還應(yīng)該把日志轉(zhuǎn)存到備份機(jī)器上或直接轉(zhuǎn)儲到打印機(jī)上,筆者還有一篇文章《利用腳本編程格式化輸出系統(tǒng)日志》,詳細(xì)的講述了利用windows腳本把日志轉(zhuǎn)儲并輸出成html頁已便于查詢,有興趣的可以查看,在這里推薦微軟的resourceKit工具箱中的dumpel.exe,他的常用方法:
    dumpel -f filename -s \\server -l log
    -f filename 輸出日志的位置和文件名
    -s \\server 輸出遠(yuǎn)程計算機(jī)日志
    -l log log 可選的為system,security,application,可能還有別的如DNS等
     如要把目標(biāo)服務(wù)器server上的系統(tǒng)日志轉(zhuǎn)存為backupsystem.log可以用以下格式:
    dumpel \\server -l system -f backupsystem.log
     再利用計劃任務(wù)可以實現(xiàn)定期備份系統(tǒng)日志。
     另外利用腳本編程的VMI對象也可以輕而易舉的實現(xiàn)日志備份:
     下面給出備份application日志的代碼:
    backuplog.vbs
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
     & "{impersonationLevel=impersonate,(Backup)}!\\" & _
     strComputer & "\root\cimv2") '獲得 VMI對象
    Set colLogFiles = objWMIService.ExecQuery _
     ("Select * from Win32_NTEventLogFile where LogFileName='Application'") '獲取日志對象中的應(yīng)用程序日志
    For Each objLogfile in colLogFiles
     errBackupLog = objLogFile.BackupEventLog("f:\application.evt") '將日志備份為f:\application.evt
     If errBackupLog <> 0 Then
     Wscript.Echo "The Application event log could not be backed up."
     else Wscript.Echo "success backup log"
     End If
    Next
     程序說明:如果備份成功將窗口提示:"success backup log" 否則提示:"The Application event log could not be backed up",此處備份的日志為application 備份位置為f:\application.evt,可以自行修改,此處備份的格式為evt的原始格式,用記事本打開則為亂碼,這一點他不如dumpel用得方便。