AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 411
Accepted
Sevki
Sevki
Asked: 2011-01-08 15:11:22 +0800 CST2011-01-08 15:11:22 +0800 CST 2011-01-08 15:11:22 +0800 CST

SA 帐户和其他已知帐户名称对安全构成了哪些安全威胁?

  • 772

像 sa 这样的已知帐户名称是否会对数据库造成安全威胁?在 SQL Server 上使用 Windows 身份验证时,它是否强制使用相同的密码策略(如果设置为 5 次后帐户锁定)?

sql-server security
  • 6 6 个回答
  • 3840 Views

6 个回答

  • Voted
  1. Best Answer
    David Spillett
    2011-01-09T07:32:00+08:002011-01-09T07:32:00+08:00

    像 sa 这样的已知帐户名称是否会对数据库造成安全威胁?

    具有已知名称的“上帝”用户帐户通常被认为比名称不太知名的上帝用户更糟糕。它使蛮力攻击更容易一些,因为攻击者只需要猜测密码而不是用户名和密码。

    无论如何,拥有上帝用户也是危险的。通常,您最好让特定用户对他们需要做的事情拥有特定的权限。这种基于特权的安全性从头开始实施比以后在您的环境中进行改造更容易。

    在 SQL Server 中禁用 sa 并根据需要授予特定用户特定的管理员权限与在 Linux 和类似系统下根据root需要禁用和分发管理员权限的建议基本相同。sudo如果出现任何问题,您始终可以在直接连接到具有足够权限的机器后重新启用sa,并且您最终会放弃用户操作(并解决问题)所需的所有权限,就像您可以设计对 Linux 的 root 访问一样如果您对盒子有物理访问权限,那么禁用该帐户并不是灵丹妙药(但是一旦攻击者可以物理访问您的计算机,或者通过 RDC 或 SSH 进行完全管理访问,那么无论如何,所有的赌注都没有了)。

    在 SQL Server 上使用 Windows 身份验证时,它是否强制使用相同的密码策略(如果设置为 5 次后帐户锁定)?

    当使用 Windows 集成身份验证时,SQL 服务器无法控制帐户锁定等 - 它只是将 Windows 用户映射到 SQL 用户,并要求操作系统保证用户提供了适当的凭据这一事实。对于交互式人类用户,这意味着任何锁定都会在用户尝试使用 Windows 进行身份验证时发生,而不是在他们登录到 SQL Server 时发生。

    • 11
  2. Joe
    2011-01-08T19:45:42+08:002011-01-08T19:45:42+08:00

    使默认管理员用户(admin/root/postgres/sa/etc)实际上不存在于您的系统中并不是一个坏主意。您始终可以使用不同的名称创建特权帐户。

    如果不出意外,试图利用您的系统的人不会像盲人一样轻松地工作(例如,没有一些交互式 shell 也无法看到命令的直接输出的 sql 注入)

    至于帐户锁定——如果有人设法达到足够远甚至能够尝试登录您的机器,除非您特别允许用户直接登录,否则您已经输掉了这场战斗。就个人而言,我大部分情况下都不赞成锁定,因为如果他们设法获得任何用户的名称,它使某人能够创建拒绝服务。(并让他们锁定超级用户?不好玩)。

    我建议查看CIS Benchmarks ......他们没有为每个数据库提供它们,但他们对 Oracle、MS SQL、DB2 和 MySQL 有建议。如果您正在运行其他东西,仍然值得查看他们推荐的一般类型的东西。

    • 4
  3. AndrewSQL
    2011-01-18T19:31:06+08:002011-01-18T19:31:06+08:00

    我没有看到其他人提到这个,所以我会添加它。使用 SQL Server 2005+,如果您的服务器是域的一部分并且该域具有密码策略,您可以启用密码策略以在 SQL 登录时强制执行。这包括密码复杂性要求和在登录时强制更改密码的能力。

    请注意,这有时可能会导致某些尚未更新为使用 SQL 2005+ 的软件安装程序出现问题,并使用不安全的密码创建 SQL 登录。

    • 4
  4. Ivan Stankovic
    2014-01-18T06:16:53+08:002014-01-18T06:16:53+08:00

    SQL Server 中使用了两种身份验证模式:Windows 身份验证和混合模式(同时启用 Windows 身份验证和 SQL Server 身份验证)

    第一种模式不太容易受到暴力攻击,因为攻击者可能会在有限次数的攻击尝试后陷入登录锁定(帐户锁定策略功能)。每个生产环境,如果使用 Windows 身份验证模式,都应该使用锁定策略功能,因为它使暴力攻击变得不可能

    当涉及到 SQL Server 身份验证暴力攻击漏洞时,情况就不是那么有利了。SQL Server 身份验证没有允许检测系统何时受到暴力攻击的功能。此外,在验证 SQL Server 身份验证凭据时,SQL Server 响应速度非常快。它可以轻松处理重复的、激进的、蛮力登录尝试,而不会出现可能表明此类攻击的负面整体性能。这意味着 SQL Server 身份验证是通过暴力攻击破解密码的完美目标

    此外,蛮力方法随着每种新引入的加密和密码复杂性方法而不断发展。例如,使用彩虹表(用于反转每个可能的字符组合的加密哈希值的预计算表)的攻击者可以轻松快速地破解任何哈希密码

    为了保护您的 SQL Server 免受暴力攻击,您应该考虑以下事项:

    • 不要使用 SQL Server 身份验证模式 - 强制攻击者通过 Windows 身份验证来锁定登录
    • 如果您需要使用 SQL Server 身份验证模式,请禁用或删除 SA 登录 - 这样攻击者必须猜测并配对用户名和密码
    • 3
  5. mrdenny
    2011-01-08T16:37:00+08:002011-01-08T16:37:00+08:00

    sa 帐户在启用后可以在 SQL Server 上执行任何操作。如果攻击者要进入此帐户,他们可以在 SQL Server 实例(可能还有主机操作系统)上执行他们想要的任何操作。

    • 1
  6. Tangurena
    2011-01-09T08:13:21+08:002011-01-09T08:13:21+08:00

    SA(和其他众所周知的帐户名称)是黑客可以攻击的众所周知的点。一些 Oracle 的文档记录很差,因此默认密码并不总是更改。一旦你控制了 SQL Server 中的 SA 帐户,你就可以控制它运行的服务器,并且可以运行任何代码或安装任何你想要的东西。在我更多的牛仔时代,我记得不允许(它需要我不会填写的文书工作)在同时托管 SQL Server 的网络服务器上安装 ActiveX 控件 - 所以我使用 xp_cmdshell 复制和安装控件.

    • 1

相关问题

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 存储过程可以防止 SQL 注入吗?

  • 死锁的主要原因是什么,可以预防吗?

  • 保护数据库密码

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    您如何显示在 Oracle 数据库上执行的 SQL?

    • 2 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    我可以查看在 SQL Server 数据库上运行的历史查询吗?

    • 6 个回答
  • Marko Smith

    如何在 PostgreSQL 中使用 currval() 来获取最后插入的 id?

    • 10 个回答
  • Marko Smith

    如何在 Mac OS X 上运行 psql?

    • 11 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Marko Smith

    将数组参数传递给存储过程

    • 12 个回答
  • Martin Hope
    Manuel Leduc PostgreSQL 多列唯一约束和 NULL 值 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler 什么时候应该将主键声明为非聚集的? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    BrunoLM Guid vs INT - 哪个更好作为主键? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick 如何优化大型数据库的 mysqldump? 2011-01-04 13:13:48 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve