在 SQL Server 中禁用 sa 并根据需要授予特定用户特定的管理员权限与在 Linux 和类似系统下根据root需要禁用和分发管理员权限的建议基本相同。sudo如果出现任何问题,您始终可以在直接连接到具有足够权限的机器后重新启用sa,并且您最终会放弃用户操作(并解决问题)所需的所有权限,就像您可以设计对 Linux 的 root 访问一样如果您对盒子有物理访问权限,那么禁用该帐户并不是灵丹妙药(但是一旦攻击者可以物理访问您的计算机,或者通过 RDC 或 SSH 进行完全管理访问,那么无论如何,所有的赌注都没有了)。
在 SQL Server 上使用 Windows 身份验证时,它是否强制使用相同的密码策略(如果设置为 5 次后帐户锁定)?
当使用 Windows 集成身份验证时,SQL 服务器无法控制帐户锁定等 - 它只是将 Windows 用户映射到 SQL 用户,并要求操作系统保证用户提供了适当的凭据这一事实。对于交互式人类用户,这意味着任何锁定都会在用户尝试使用 Windows 进行身份验证时发生,而不是在他们登录到 SQL Server 时发生。
SQL Server 中使用了两种身份验证模式:Windows 身份验证和混合模式(同时启用 Windows 身份验证和 SQL Server 身份验证)
第一种模式不太容易受到暴力攻击,因为攻击者可能会在有限次数的攻击尝试后陷入登录锁定(帐户锁定策略功能)。每个生产环境,如果使用 Windows 身份验证模式,都应该使用锁定策略功能,因为它使暴力攻击变得不可能
当涉及到 SQL Server 身份验证暴力攻击漏洞时,情况就不是那么有利了。SQL Server 身份验证没有允许检测系统何时受到暴力攻击的功能。此外,在验证 SQL Server 身份验证凭据时,SQL Server 响应速度非常快。它可以轻松处理重复的、激进的、蛮力登录尝试,而不会出现可能表明此类攻击的负面整体性能。这意味着 SQL Server 身份验证是通过暴力攻击破解密码的完美目标
具有已知名称的“上帝”用户帐户通常被认为比名称不太知名的上帝用户更糟糕。它使蛮力攻击更容易一些,因为攻击者只需要猜测密码而不是用户名和密码。
无论如何,拥有上帝用户也是危险的。通常,您最好让特定用户对他们需要做的事情拥有特定的权限。这种基于特权的安全性从头开始实施比以后在您的环境中进行改造更容易。
在 SQL Server 中禁用 sa 并根据需要授予特定用户特定的管理员权限与在 Linux 和类似系统下根据
root
需要禁用和分发管理员权限的建议基本相同。sudo
如果出现任何问题,您始终可以在直接连接到具有足够权限的机器后重新启用sa
,并且您最终会放弃用户操作(并解决问题)所需的所有权限,就像您可以设计对 Linux 的 root 访问一样如果您对盒子有物理访问权限,那么禁用该帐户并不是灵丹妙药(但是一旦攻击者可以物理访问您的计算机,或者通过 RDC 或 SSH 进行完全管理访问,那么无论如何,所有的赌注都没有了)。当使用 Windows 集成身份验证时,SQL 服务器无法控制帐户锁定等 - 它只是将 Windows 用户映射到 SQL 用户,并要求操作系统保证用户提供了适当的凭据这一事实。对于交互式人类用户,这意味着任何锁定都会在用户尝试使用 Windows 进行身份验证时发生,而不是在他们登录到 SQL Server 时发生。
使默认管理员用户(admin/root/postgres/sa/etc)实际上不存在于您的系统中并不是一个坏主意。您始终可以使用不同的名称创建特权帐户。
如果不出意外,试图利用您的系统的人不会像盲人一样轻松地工作(例如,没有一些交互式 shell 也无法看到命令的直接输出的 sql 注入)
至于帐户锁定——如果有人设法达到足够远甚至能够尝试登录您的机器,除非您特别允许用户直接登录,否则您已经输掉了这场战斗。就个人而言,我大部分情况下都不赞成锁定,因为如果他们设法获得任何用户的名称,它使某人能够创建拒绝服务。(并让他们锁定超级用户?不好玩)。
我建议查看CIS Benchmarks ......他们没有为每个数据库提供它们,但他们对 Oracle、MS SQL、DB2 和 MySQL 有建议。如果您正在运行其他东西,仍然值得查看他们推荐的一般类型的东西。
我没有看到其他人提到这个,所以我会添加它。使用 SQL Server 2005+,如果您的服务器是域的一部分并且该域具有密码策略,您可以启用密码策略以在 SQL 登录时强制执行。这包括密码复杂性要求和在登录时强制更改密码的能力。
请注意,这有时可能会导致某些尚未更新为使用 SQL 2005+ 的软件安装程序出现问题,并使用不安全的密码创建 SQL 登录。
SQL Server 中使用了两种身份验证模式:Windows 身份验证和混合模式(同时启用 Windows 身份验证和 SQL Server 身份验证)
第一种模式不太容易受到暴力攻击,因为攻击者可能会在有限次数的攻击尝试后陷入登录锁定(帐户锁定策略功能)。每个生产环境,如果使用 Windows 身份验证模式,都应该使用锁定策略功能,因为它使暴力攻击变得不可能
当涉及到 SQL Server 身份验证暴力攻击漏洞时,情况就不是那么有利了。SQL Server 身份验证没有允许检测系统何时受到暴力攻击的功能。此外,在验证 SQL Server 身份验证凭据时,SQL Server 响应速度非常快。它可以轻松处理重复的、激进的、蛮力登录尝试,而不会出现可能表明此类攻击的负面整体性能。这意味着 SQL Server 身份验证是通过暴力攻击破解密码的完美目标
此外,蛮力方法随着每种新引入的加密和密码复杂性方法而不断发展。例如,使用彩虹表(用于反转每个可能的字符组合的加密哈希值的预计算表)的攻击者可以轻松快速地破解任何哈希密码
为了保护您的 SQL Server 免受暴力攻击,您应该考虑以下事项:
sa 帐户在启用后可以在 SQL Server 上执行任何操作。如果攻击者要进入此帐户,他们可以在 SQL Server 实例(可能还有主机操作系统)上执行他们想要的任何操作。
SA(和其他众所周知的帐户名称)是黑客可以攻击的众所周知的点。一些 Oracle 的文档记录很差,因此默认密码并不总是更改。一旦你控制了 SQL Server 中的 SA 帐户,你就可以控制它运行的服务器,并且可以运行任何代码或安装任何你想要的东西。在我更多的牛仔时代,我记得不允许(它需要我不会填写的文书工作)在同时托管 SQL Server 的网络服务器上安装 ActiveX 控件 - 所以我使用 xp_cmdshell 复制和安装控件.