检查我的 SQL Server 日志时,我看到如下几个条目:
Date: 08-11-2011 11:40:42
Source: Logon
Message: Login failed for user 'sa'. Reason: Password did not match for the login provided. [CLIENT: 56.60.156.50]
Date: 08-11-2011 11:40:42
Source: Logon
Message: Error: 18456. Severity: 14. State: 8.
Date: 08-11-2011 11:40:41
Source: Logon
Message: Login failed for user 'sa'. Reason: Password did not match for the login provided. [CLIENT: 56.60.156.50]
Date: 08-11-2011 11:40:41
Source: Logon
Message: Error: 18456. Severity: 14. State: 8.
等等...这可能是中国人对我的 SQL Server 的攻击吗???!我在 ip-lookup.net 上查了 IP 地址,上面说是中国人的。
那该怎么办? - 在防火墙中阻止 IP 地址? - 删除用户 sa?
我该如何最好地保护我的网络服务器?!:)
提前致谢!
答案1
这看起来像是一次廉价的暴力攻击。
整个互联网都可能试图对您的 SQL Server 进行身份验证,这可能是一个巨大的问题。除非您有特殊原因,否则对 SQL 的访问应仅限于那些需要访问该资源的服务器。
另外,不要去封锁特定的 IP 地址,否则你永远无法停止。封锁一切除了授权位置。除非您确定不再需要用户帐户,否则请不要删除它们。
答案2
你能更好地解释一下你的布局吗?
您是否允许来自互联网的 SQL 登录,或任何类型的 SQL 流量?如果是,为什么?
您应该严格限制与您的 SQL 服务器之间的任何类型的连接,无论是本地网络还是特定的外部 IP(尽管如果您有这种需要,我建议使用更安全的连接)。
我的解决方案是让您查看防火墙并将其锁定,以便允许提供服务所需的最低限度的访问权限。
答案3
对于那些正在寻找可以创建 IPSEC 策略、过滤器等并自动扫描事件日志并将 IP 添加到阻止列表的程序的人,我已经编写了一个可以做到这一点的小程序。
作为 Web 托管提供商,我的客户需要对我的 SQL Server 实例进行外部访问。我也遇到过这样的问题:我的事件日志中会充满数千条条目,这些条目都是黑客试图使用“sa”登录名登录我的 MSSQL 实例。经过大量搜索,我决定编写自己的程序,让它创建必要的 IPSEC 项目,然后每 60 秒扫描一次事件日志,以查找来自新 IP 地址的攻击。然后,它将 IP 地址添加到 IPSEC 过滤器,并阻止往返于该 IP 的所有流量。我只在 Windows Server 2008 上测试过这个,但相信它也可以在其他版本上运行。顺便说一句,您可能需要以管理员权限运行它,以便它具有访问事件日志和创建 IPSec 策略和过滤器的正确权限。
请使用下面的链接下载该程序。使用任务管理器图标右键菜单中的链接进行捐赠总是受欢迎的。
http://www.cgdesign.net/programs/AutoBlockIp.zip
请注意,这仅适用于使用“sa”登录的 SQL 登录尝试,但我可以对其进行修改以使其也适用于其他日志事件。此外,您可以查看已被阻止的 IP,但由于该程序每 60 秒仅运行一次,因此您将继续在事件日志中看到一些项目。这是因为无法删除单个事件日志条目,而且我认为删除整个日志不是一个好主意。因此,您有时需要手动清除日志。如果需要,我确实有一个版本,可以在 5,000 个条目后存档日志文件,然后将其清除。我发现这有助于提高 CPU 利用率,因为应用程序不必在每次运行时继续处理相同的事件日志条目。
免责声明- 下载并安装上述程序,即表示您同意免除我方因使用该软件而造成的任何损害、数据丢失、损坏或任何其他功能问题的责任。我已尽我所能测试了该程序,目前已在 2 台服务器上运行,但您已被告知使用时需自行承担风险。
答案4
使用 SQL Profiler 查看对 SQL 服务器的登录请求。您可能会发现它是一个内部 IP 地址和尝试访问 SQL 服务器的应用程序的名称。
如果它是外部 IP 地址,那么为什么!?!为什么您要将 SQL 服务器直接暴露给公共互联网流量。如果您不知道,那么您就必须找出答案!
还要确保 sa 密码确实非常强。在我的 SQL Server 上,sa 密码实际上是一个很长的垃圾密码,随机创建,使用一次即可丢弃。