诸如sa之类的已知帐户名称是否会对数据库造成安全威胁?在SQL Server上使用Windows身份验证时,它是否采用相同的密码策略(如果设置为5次后表示帐户锁定)?
诸如sa之类的已知帐户名称是否会对数据库造成安全威胁?在SQL Server上使用Windows身份验证时,它是否采用相同的密码策略(如果设置为5次后表示帐户锁定)?
Answers:
诸如sa之类的已知帐户名称是否会对数据库造成安全威胁?
具有已知名称的“上帝”用户帐户通常被认为比具有较低名称的“上帝”用户更糟糕。它使暴力攻击变得容易一些,因为攻击者只需猜测密码,而不必猜测用户名和密码。
无论如何,拥有上帝用户也是很危险的。通常,最好让特定用户拥有他们需要执行的特定权限。这种基于特权的安全性比从头开始在环境中进行重新安装要容易地实现。
基本上,与在Linux和类似操作系统下根据root
需要禁用和分发管理员权限一样,禁用sa并根据SQL Server的需要向特定用户授予特定的管理员权限sudo
。sa
一旦出了什么问题,您始终可以以足够的特权直接连接到计算机,然后重新启用它,而最终您放弃了用户操作(并解决问题)所需的所有权限,就像可以对Linux进行root访问一样如果您可以对该框进行物理访问,则禁用该帐户并不是万能的选择(但是,一旦攻击者可以对您的计算机进行物理访问,或者通过RDC或SSH进行完全的管理访问,则无论如何都无法使用)。
在SQL Server上使用Windows身份验证时,它是否采用相同的密码策略(如果设置为5次后表示帐户锁定)?
使用Windows集成身份验证时,SQL Server无法控制帐户锁定等,它仅将Windows用户映射到SQL用户,并要求OS担保用户已提供了适当的凭据。对于交互式人类用户,这意味着任何锁定都将在用户尝试通过Windows进行身份验证时发生,而不是在用户登录SQL Server时发生。
做到这一点并不是一个坏主意,这样默认的admin用户(admin / root / postgres / sa / etc)实际上就不会出现在您的系统中。您始终可以使用其他名称创建特权帐户。
如果没有别的,尝试利用您的系统的人就不会像盲目工作一样容易(例如,SQL注入没有一些交互式shell,也无法从命令中看到直接输出)
至于帐户锁定-如果某人设法设法甚至可以尝试登录到您的计算机,除非您明确允许用户直接登录,否则您就已经输了。就个人而言,我在很大程度上不赞成使用锁定,因为如果某人设法获得您任何用户的姓名,它就会使某人能够创建拒绝服务。(让他们锁定超级用户?不好玩)。
我建议您查看CIS基准测试 ...并非每个数据库都有这些基准测试,但是它们对Oracle,MS SQL,DB2和MySQL都有建议。如果您要执行其他操作,则仍然值得查看他们推荐的一般内容。
SQL Server中使用两种身份验证模式:Windows身份验证和混合模式(同时启用Windows身份验证和SQL Server身份验证)
第一种模式不太容易受到暴力攻击,因为攻击者在进行了有限次数的攻击尝试后很可能会遇到登录锁定(帐户锁定策略功能)。如果使用Windows身份验证模式,则每个生产环境都应使用锁定策略功能,因为它使暴力攻击无法进行
当涉及到SQL Server身份验证暴力破解漏洞时,情况就不太理想了。SQL Server身份验证没有允许检测系统何时受到暴力攻击的功能。而且,SQL Server在验证SQL Server身份验证凭据时反应非常快。它可以轻松处理重复,激进,强力的登录尝试,而不会降低可能表明此类攻击的总体性能。这意味着SQL Server身份验证是通过蛮力攻击破解密码的理想目标
而且,蛮力方法随着每个新引入的加密和密码复杂性方法而发展。例如,使用彩虹表(用于对每个可能的字符组合反转密码哈希值的预先计算的表)的攻击者可以轻松快速地破解任何哈希密码
为了保护您的SQL Server免受暴力攻击,应考虑以下事项: