我遇到了一个问题,但不知道该如何处理。我在 Windows 2008 R2 服务器上有一个 SQL Server。此 SQL Server 2005 用于接收来自 Internet 上其他位置的另一个 SQL Server 的数据库订阅。我已通过防火墙打开 SQL Server 端口,但在范围中,我输入了另一个 SQL Server 的 IP。这样做我希望通过该端口的连接请求不会到达 SQL Server,除非这些请求来自另一个 SQL Server(其 IP 在防火墙规则的范围中列出)。但是,当我看到日志时,有数百个“登录失败用户 sa”条目(并且它们每秒都在出现)。似乎有些黑客正在尝试暴力破解以猜测用户 sa 的密码。但问题是,为什么 Windows 允许这些请求到达 SQL Server,即使它们不是来自防火墙范围中列出的 IP 地址?保护此 SQL Server 的正确方法是什么。除了其他 SQL Server 的 IP 之外,没有其他 IP 需要连接到此 SQL Server。
编辑-更多信息:
我从不同的机器运行了 sql server 端口上的 telnet。除了从防火墙范围内特别提到的机器运行 Telnet 外,Telnet 都会失败。因此,看来防火墙很好地阻止了 sql server 端口。但是,为什么我在 SQL Server 日志中看到来自不同 IP 地址的用户“sa”的登录请求失败了呢?黑客有可能通过端口 80 进入机器,然后以某种方式尝试连接到 sql server 吗?端口 80 和 443 对所有人开放。除 sql server 端口(仅对一个特定 IP 开放)外,所有其他端口都已关闭。端口 80 上的 Web 服务器没有运行任何可能将访问者引导到 SQL server 的东西。事实上,Web 服务器中只有一个 index.html(纯 HTML,与 SQL 无关)文件。这只是为将来使用而设置的测试服务器。SQL Server 中只有测试数据。
编辑:
我打开了防火墙跟踪,包括断开连接和成功连接。现在它正在跟踪所有内容。然后我转到 SQL Server 日志,在那里我看到了来自中国不同 IP 地址的这些失败的登录尝试。但防火墙日志中没有这些 IP 地址的条目。这怎么可能?他们可以完全绕过防火墙进入 SQL Server 吗?如果假设某个防火墙端口是开放的,他们可以通过它进入,防火墙日志应该会显示该 IP 地址的条目。我完全不知所措。
答案1
听起来你的防火墙配置不正确。这是第一步。
通常我不会推销自己写的书,但这次我破例了。这本书叫保护 SQL Server这将为你提供一个良好的开端。
答案2
简而言之 - 你不需要。我不会使用防火墙等 - SQL 服务器无权连接到互联网。只有非常非常少的例外。
为了进行复制,请设置适当的 VPN。
答案3
除了正确配置防火墙之外,这里还有一些常规建议,可以保护 SQL Server 免受暴力攻击:
禁用“sa”帐户。知道确切的登录名将使攻击变得更容易
ALTER LOGIN sa DISABLE
另一个选择是将“sa”帐户重命名为不太显眼的名称
ALTER LOGIN sa WITH NAME = SimonXZY
- 使用 Windows 身份验证而不是混合模式身份验证。Windows 身份验证强制执行 Windows 密码策略,并在连续登录尝试失败的情况下锁定登录
- 审核失败的登录。最简单的方法是将服务器属性中的“安全”选项卡中的“登录审核”选项设置为“仅失败的登录”或“失败和成功的登录”。这不会帮助您防范暴力攻击,但可以帮助您意识到攻击
更多有用的建议在这里: 防止暴力破解或字典攻击:如何防止暴力破解者窃取你的战利品