等保2.0测评深入理解 — SQL Server 数据库

admin 2023年12月6日14:47:49评论56 views字数 1908阅读6分21秒阅读模式

学习知识宝库在此藏,一键关注获宝藏

当SQL Server改变了远程连接端口,在使用 Microsoft SQL Server Management Studio 工具进行连接时,通过在服务器名称后加上逗号和端口号的形式来指定连接的IP地址和端口号。

具体格式如下:<服务器IP>,<端口>

等保2.0测评深入理解 — SQL Server 数据库
登录后查看系统版本:select @@version;
等保2.0测评深入理解 — SQL Server 数据库

一、身份鉴别

a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换

1. 身份鉴别和标识

1.1 Windows 身份认证

当使用Microsoft SQL Server Management Studio 连接数据库时,选择Windows身份认证,Microsoft SQL Server Management Studio会自动读取当前的操作系统账户,如果SQL Server数据库中的登录名添加了该操作系统账户,且没有被禁用,则无需口令即可登录。也就是借用了Windows的身份验证机制。

对象资源管理器 → 安全性 → 登录名 → 右键属性 → 常规

等保2.0测评深入理解 — SQL Server 数据库

若不想使用这种方式,则可以禁用Windows操作系统账户。

等保2.0测评深入理解 — SQL Server 数据库

此时该用户会有一个向下的箭头代表禁用

等保2.0测评深入理解 — SQL Server 数据库

1.2 SQL Server和Windows身份验证模式

查看用户是否勾选SQL Server身份认证,这个好像没法改

对象资源管理器 → 安全性 → 登录名 → 右键属性 → 常规

等保2.0测评深入理解 — SQL Server 数据库

该方式通过登录名+口令的方式进行身份验证

等保2.0测评深入理解 — SQL Server 数据库

2. 身份标识具有唯一性

SQL Server无法创建相同登录名账户,默认符合

等保2.0测评深入理解 — SQL Server 数据库

3. 鉴别信息具有复杂度要求并定期更换

3.1 用户当前口令复杂度情况和更换情况

第一点,就是先确定用户实际口令是否具有一定的复杂度,要求口令长度至少8位,由大写字母、小写字母、数字、特殊字符中的三种组成,且不包含简单排列规律,如admin!@123之类的弱口令。
第二点,确认是否有空口令账户存在。
使用如下sql语句:
select name,password_hash from sys.sql_logins where pwdcompare('', password_hash) = 1;
有反馈的则为空口令账户。
等保2.0测评深入理解 — SQL Server 数据库
第三点,确定用户实际口令更换周期。
使用如下sql语句:
SELECT name, LOGINPROPERTY([name], 'PasswordLastSetTime') AS 'PasswordChanged' FROM sys.sql_logins;

等保2.0测评深入理解 — SQL Server 数据库

3.2 强制的口令复杂度策略和口令最长使用期限

SQL Server数据库和Windows系统的耦合比较深,SQL Server自身没有口令复杂度校验功能,它是通过NetValidatePasswordPolicy API,使用Windows操作熊系统的校验函数来校验SQL Server数据库中账户的口令复杂度。也就是引用Windows组策略中的密码策略:
等保2.0测评深入理解 — SQL Server 数据库
同时SQL Server本身的登录名设置也决定了是否去引用Windows本地安全策略中的密码策略中,在每个登录名属性中设置:
等保2.0测评深入理解 — SQL Server 数据库
在口令过期功能引用了Windows本地安全策略中的密码最长使用期限设置:
等保2.0测评深入理解 — SQL Server 数据库
同时也需SQL Server登录名中勾选了强制密码过期

等保2.0测评深入理解 — SQL Server 数据库

● 扩展学习

1. 识别SQL Server中空口令或弱口令的登录名

可以使用pwdcompare 安全性函数来找出弱口令或空口令账户,其基本是对密码进行哈希处理,然后将hash值与master数据库中sys.sql_logins表中的现有密码进行比较。
通过传入两个参数“text_password”和password_hash来执行这个函数,如果text_password的哈希与password_hash参数匹配,则返回1,否则返回0。
SQL Server中访问视图sys.sql_logins时,把这个函数放到where中,可以检查是否存在空口令账户。
1.1 查找常用口令
在公司测试环境中,我们将获得所有具有通用密码的登录名。由于密码为“Jhay@123”,因此我们会将密码传递给PWDCOMPARE函数以获取均具有此密码的用户信息。
select * from sys.sql_logins where pwdcompare('Jhay@123' , password_hash)=1;
在下图中,显示了4个登录名,sa、text、zfy、zfy2均具有相同的密码,也就是SQL Server实例上的密码。

等保2.0测评深入理解 — SQL Server 数据库

1.2 查找空口令
我们设置几个空口令账户,在搜索这些登录名时,我们将不传递任何信息到PWDCOMPARE函数中。

原文始发于微信公众号(等保不好做啊):等保2.0测评深入理解 — SQL Server 数据库

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月6日14:47:49
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   等保2.0测评深入理解 — SQL Server 数据库http://cn-sec.com/archives/2272387.html

发表评论

匿名网友 填写信息