没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:莫成敏|2019-10-14 15:06:20.790|阅读 397 次
概述:本教程提供了一个解决方案,使用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@evget.com
使用Aspose.BarCode for Java在 Java 中生成 PDF417 条形码对许多行业至关重要。这种条形码格式广泛应用于库存管理、运输和文档跟踪等应用。
本指南将向您展示如何借助Aspose.PDF,仅用几行代码删除不需要的页面。让我们深入了解如何使用 Java 从 PDF 文档中删除页面。
PDF文件因其高度的跨平台兼容性和安全稳定的格式特点,广泛应用于企业文档管理和电子资料传输中。本文将详细讲解如何使用 Spire.PDF for .NET 库在C# 中实现多种PDF拆分功能,包含按每页拆分、按页码范围拆分、按关键字拆分及提取指定页面等场景的完整示例代码,帮助开发者轻松掌握高效的PDF分割技巧,优化文档管理流程。
本文主要介绍如何使用DevExpress WPF Grid控件获取节点,欢迎下载最新版组件体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号