翻譯|使用教程|編輯:莫成敏|2019-10-14 15:06:20.790|閱讀 418 次
概述:本教程提供了一個解決方案,使用PowerShell和SQL Monitor,可以迅速警告您一系列Windows錯誤、警告和關鍵事件,包括失敗的服務器登錄嘗試,這將伴隨著對承載您的SQL Server實例的Windows Server的強力密碼攻擊。這是后半部分內容——創建SQL Monitor自定義指標。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
SQL Monitor是一個SQL Server監控工具。它可以監控SQL Servers的健康狀況和活動,并通過電子郵件為您發送監測結果和建議。
本教程提供了一個解決方案,使用PowerShell和SQL Monitor,可以迅速警告您一系列Windows錯誤、警告和關鍵事件,包括失敗的服務器登錄嘗試,這將伴隨著對承載您的SQL Server實例的Windows Server的強力密碼攻擊。前面文章已經介紹了一部分內容(點此查看),本文為后半部分內容——創建SQL Monitor自定義指標。
創建SQL Monitor自定義指標
以下SQL僅計算過去10分鐘內寫入事件表的Windows事件數。我們有計劃的PowerShell作業每五分鐘運行一次。
USE ServerEvents SELECT Count(*) FROM events WHERE TimeCreated > DateAdd(MINUTE, -10, GetDate())
或者,您可能想要創建兩個指標,一個指標僅對失敗的登錄次數進行計數,而另一個指標對其他所有事項進行計數。這是僅用于獲取失敗登錄的SQL:
USE ServerEvents SELECT Count(*) FROM events WHERE TimeCreated > DateAdd(MINUTE, -10, GetDate()) AND providername LIKE 'Microsoft-Windows-Security-Auditing'
并且,您可以得到其他類似的事件:
USE ServerEvents SELECT Count(*) FROM events WHERE TimeCreated > DateAdd(MINUTE, -10, GetDate()) AND NOT providername LIKE 'Microsoft-Windows-Security-Auditing'
我只使用了一個度量標準,因為無論出于何種原因無論如何簽入SSMS都非常有用,但是無論您選擇執行哪種操作,現在都可以使用這些查詢在SQL Monitor中創建自定義指標以及相關警報。 顯然,這不是數據庫級別的指標。 您應該指定僅在master上運行。
然后,您可以通過嘗試登錄服務器并運行PowerShell腳本,將錯誤和警告寫入正在監視的各種日志中,以檢查其是否正常運行。
哎呀,有人試圖強行登錄我的一個登錄!呃,沒有。在這種情況下,我只是檢查以確保“水通過所有管道”。您不僅可以檢測到失敗的登錄信息,還可以檢測到更多信息。當所有這些都在運行時,在我用作測試平臺的服務器上進行了系統升級。出了很多問題,現在所有這些都被發現了。
我通常檢查所有日志嗎?是的。現在,我對顯示器的運行狀況有了充分的確認,并且我非常感謝采用帶正括號的數據收集方法,可以獲取整天的數據。
對于像我這樣的SQL Server開發人員而言,將錯誤日志記錄在表中是一個很棒的主意,因為我現在可以將所有數據切成薄片并切成小塊并搜索消息。例如,我可以搜索特定的字符串:
SELECT Message, LogName FROM Events WHERE Message LIKE '%Vlad The Impaler%';
給:
message ------------------------------- An account failed to log on. Subject: Security ID: S-1-0-0 Account Name: - Account Domain: - Logon ID: 0x0 Logon Type: 3 Account For Which Logon Failed: Security ID: S-1-0-0 Account Name: Vlad the Impaler Account Domain: Security (1 row affected)
我可以按嚴重性細分錯誤:
SELECT Convert(CHAR(11), TimeCreated, 113) AS The_date, --Verbose 5,Informational 4,Warning 3,Error 2, Critical 1 LogAlways 0 Sum(CASE WHEN Level = 5 THEN 1 ELSE 0 END) AS Verbose, Sum(CASE WHEN Level = 4 OR Level = 0 THEN 1 ELSE 0 END) AS Informational, Sum(CASE WHEN Level = 3 THEN 1 ELSE 0 END) AS Error, Sum(CASE WHEN Level = 2 THEN 1 ELSE 0 END) AS Critical, Sum(CASE WHEN Level = 1 THEN 1 ELSE 0 END) AS LogAlways, Count(*) AS total FROM Events GROUP BY Convert(CHAR(11), TimeCreated, 113) ORDER BY Min(TimeCreated);
或按提供者,以每天查看提供者的錯誤數量。
DECLARE @variable NVARCHAR(MAX) = 'Select Convert(CHAR(11), TimeCreated, 113),' + ( SELECT String_Agg (Convert (NVARCHAR(MAX), 'sum(Case when Providername like ''' + providername + ''' then 1 else 0 end) as [' + providername + ']' ), ', ' ) FROM (SELECT ProviderName FROM Events GROUP BY ProviderName) AS f(providername) ) + ',count(*) as [total] FROM Events GROUP BY Convert(CHAR(11), TimeCreated, 113) ORDER BY Min(TimeCreated);'; EXECUTE sp_executesql @variable;
我可以解決特定問題,而不必在日志中進行混亂的搜索。另外,由于我可以將數據保留在SQL Server數據庫中,因此可以保留更長的歷史記錄。
擴展解決方案
我寧愿將它留給如何將其擴展到一組服務器。SQL Monitor方面很容易,但是要使其正常工作,Windows事件需要存儲在每個實例上。您需要決定是否從中心位置進行收集,并在收集每個服務器的記錄時為它們編寫副本,或者是否在每個服務器上運行腳本。我認為這取決于SQL Server的大小,但這是一個判斷問題。
中央錯誤收集器的優點在于檢查它。Get-WinEventcmdlet將可以通過網絡收集日志記錄,如果你告訴它的服務器從哪里獲得日志記錄,所以腳本和數據模型并不復雜,但憑據方面可能會導致混亂。
結論
如果一個外星人飛下來問我有關關系數據庫系統的問題,我將很難向它解釋SQL Server安全性。作為數據庫人員,我們會密切注意實例,但很少關注托管它的服務器。當我告訴外星人我無法輕易獲得有關Windows嚴重或錯誤事件的警報時,我幾乎可以看到它的古怪表情。
幸運的是,假設我可以從Ops員工處獲得同意以執行計劃的PowerShell任務,那么當外星人詢問我對數據庫安全性在地球上是如何工作時,我就不會有這種社交尷尬的風險了。希望DevOps合作的精神也可以擴展到允許我以腳本方式收集這些任務,從而使我免遭星際尷尬的困擾。
盡管Azure SQL數據庫位于一個良好的、可管理的繭中,就像一個滿足的昆蟲幼蟲一樣,但對于網絡上托管的數據庫并不一定是如此。許多成功的SQL Server滲透,例如暴力破解密碼攻擊,都依賴于宿主服務器的安全性問題,因此在服務器級別了解安全警報和警告似乎是正確的。實際上,需要注意所有事件。不僅可以破壞Windows Server的惡意入侵者,還可以進行自動升級或電源不足。
至少現在,在SQL Monitor的幫助下,我可以獲得有關失敗的登錄和其他Windows安全事件發生的警報和基線,然后深入研究SQL Server數據庫中的詳細信息。是的,了解在服務器級別發生了什么錯誤、警報和警告以及它們何時發生是非常有用的!
本教程內容到這里就完結了,希望文章內容對您有所幫助~感興趣的朋友可以下載SQL Monitor試用版嘗試一下~
相關內容推薦:
使用監控工具SQL Monitor,檢查失敗的服務器登錄、服務器錯誤和警告(上)
監控工具SQL Monitor:使用SQL Monitor跟蹤數據庫上的活動會話數
使用SQL Server監控工具SQL Monitor,監視Azure SQL數據庫的性能問題(上)
使用SQL Server監控工具SQL Monitor,監視Azure SQL數據庫的性能問題(下)
想要購買SQL Monitor正版授權,或了解更多產品信息請點擊
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn