学习知识宝库在此藏,一键关注获宝藏
当SQL Server改变了远程连接端口,在使用 Microsoft SQL Server Management Studio 工具进行连接时,通过在服务器名称后加上逗号和端口号的形式来指定连接的IP地址和端口号。
具体格式如下:<服务器IP>,<端口>
登录后查看系统版本:select @@version;
一、身份鉴别
a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换
1. 身份鉴别和标识
1.1 Windows 身份认证
当使用Microsoft SQL Server Management Studio 连接数据库时,选择Windows身份认证,Microsoft SQL Server Management Studio会自动读取当前的操作系统账户,如果SQL Server数据库中的登录名添加了该操作系统账户,且没有被禁用,则无需口令即可登录。也就是借用了Windows的身份验证机制。
对象资源管理器 → 安全性 → 登录名 → 右键属性 → 常规
![等保2.0测评深入理解 — SQL Server 数据库 等保2.0测评深入理解 — SQL Server 数据库]()
若不想使用这种方式,则可以禁用Windows操作系统账户。
![等保2.0测评深入理解 — SQL Server 数据库 等保2.0测评深入理解 — SQL Server 数据库]()
![等保2.0测评深入理解 — SQL Server 数据库 等保2.0测评深入理解 — SQL Server 数据库]()
1.2 SQL Server和Windows身份验证模式
查看用户是否勾选SQL Server身份认证,这个好像没法改
对象资源管理器 → 安全性 → 登录名 → 右键属性 → 常规
![等保2.0测评深入理解 — SQL Server 数据库 等保2.0测评深入理解 — SQL Server 数据库]()
![等保2.0测评深入理解 — SQL Server 数据库 等保2.0测评深入理解 — SQL Server 数据库]()
2. 身份标识具有唯一性
SQL Server无法创建相同登录名账户,默认符合
![等保2.0测评深入理解 — SQL Server 数据库 等保2.0测评深入理解 — SQL Server 数据库]()
3. 鉴别信息具有复杂度要求并定期更换
3.1 用户当前口令复杂度情况和更换情况
第一点,就是先确定用户实际口令是否具有一定的复杂度,要求口令长度至少8位,由大写字母、小写字母、数字、特殊字符中的三种组成,且不包含简单排列规律,如admin!@123之类的弱口令。
select name,password_hash from sys.sql_logins where pwdcompare('', password_hash) = 1;
SELECT name, LOGINPROPERTY([name], 'PasswordLastSetTime') AS 'PasswordChanged' FROM sys.sql_logins;
![等保2.0测评深入理解 — SQL Server 数据库 等保2.0测评深入理解 — SQL Server 数据库]()
3.2 强制的口令复杂度策略和口令最长使用期限
SQL Server数据库和Windows系统的耦合比较深,SQL Server自身没有口令复杂度校验功能,它是通过NetValidatePasswordPolicy API,使用Windows操作熊系统的校验函数来校验SQL Server数据库中账户的口令复杂度。也就是引用Windows组策略中的密码策略:
同时SQL Server本身的登录名设置也决定了是否去引用Windows本地安全策略中的密码策略中,在每个登录名属性中设置:
在口令过期功能引用了Windows本地安全策略中的密码最长使用期限设置:
同时也需SQL Server登录名中勾选了强制密码过期
![等保2.0测评深入理解 — 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 数据库 等保2.0测评深入理解 — SQL Server 数据库]()
1.2 查找空口令
我们设置几个空口令账户,在搜索这些登录名时,我们将不传递任何信息到PWDCOMPARE函数中。
原文始发于微信公众号(等保不好做啊):等保2.0测评深入理解 — SQL Server 数据库
评论