![如何防止对我的 SQL Server 安装的攻击?](https://linux22.com/image/527876/%E5%A6%82%E4%BD%95%E9%98%B2%E6%AD%A2%E5%AF%B9%E6%88%91%E7%9A%84%20SQL%20Server%20%E5%AE%89%E8%A3%85%E7%9A%84%E6%94%BB%E5%87%BB%EF%BC%9F.png)
在过去的一个月中,我注意到 SQL Server 上的事件查看器中有很多失败审核。这似乎是来自中国 IP 的暴力攻击,试图登录我已禁用的 sa 帐户。我已在网络防火墙上阻止了它,但一周后,我又从另一个同样位于中国的 IP 受到了同样的攻击。到目前为止,我已经阻止了 6 个 IP。我能做些什么来防止这种攻击,还是继续阻止 IP?
该服务器确实需要面向互联网,因为我有外部开发人员访问它。我会查看防火墙设置。我正在使用 cisco asa。
答案1
除非有充分的理由,否则不要将 SQL 服务器置于网络边缘。
我知道您认为您需要在互联网上使用 SQL,因为开发人员需要访问权限。这并不是将 SQL 提供给互联网的好理由。您有许多选项可以让开发人员访问服务器,而无需使 SQL 服务器可访问。他们可以通过 SSH 连接到服务器并通过命令行运行 SQL 命令。他们可以使用 VPN 连接到服务器并运行任何应用程序。您甚至可以锁定防火墙以仅允许开发人员访问。您可以使用许多更安全的选项。
仅供参考,我最喜欢的是使用密钥进行身份验证的 SSH 访问。这为您提供了更多安全选项,并且您的开发人员可以在必要时使用 SSH 隧道连接到服务器,在不需要时使用命令行访问。您可以使用 chroot、jail 或只是普通的旧权限来保护服务器免受开发人员的攻击
答案2
答案是不要将您的 SQL 服务器直接暴露到互联网上。
另一个类似的答案,我赞成,说“除非你必须这样做”,但我不同意这个答案的这一部分:如果你认为你必须将 SQL 服务器直接放在网络上,那么重新设计你的应用程序,直到你不再需要这样做。作为绝对最低限度,如果你只有一台服务器,并且它运行所有东西,那么就用防火墙隔离相关的设备,不要将 SQL 服务器端口(或任何你绝对不需要的东西)暴露给外界。
这不仅仅是 SQL 服务器的事情、Microsoft 的事情或 Web 应用程序的事情,而是基本的安全常识;保护系统安全首先要做的事情之一就是尽量减少黑客可以“看到”的“攻击面”。
答案3
您不应该让 SQL 服务器之类的东西直接在公共网络上访问。如果外部用户需要访问,则仍可阻止 SQL 服务器访问公共网络,但允许开发人员通过某种 VPN 设置进行访问(例如,OpenVPN 设置或通过 SSH 隧道连接) - 这样,您就不会受到恶意人员/代码的暴力连接尝试,并且您还获得了额外的优势,即他们与您的服务器之间的所有通信都是加密的(并且,使用正确的 SSH 或 VPN 选项,压缩可能会产生很大的不同)。
答案4
如果您必须使 SQL 服务器可见,请告诉防火墙阻止重复的失败尝试。我不知道您使用的是哪种防火墙,但任何可靠的防火墙软件包都允许您进行类似的配置。