Microsoft SQL Server是如何加密口令的

Microsoft SQL Server是如何加密口令的?如何自制未公开的加密函数?

  如果对MSSQL的用户信息有兴趣的,可能会发现master.dbo.sysxlogins里面存放着用户的口令,可是呢,password字段如果不是null就是一堆看不懂的binary,这个口令是怎么加密的呢?

  其实只要仔细看看master.dbo.sp_addlogin就知道了,MSSQL的sp都可以看到代码,真是不错。


  让我们来看看它是怎么做的,注意这一行select @passwd = pwdencrypt(@passwd),这个时后@passwd就被加密了,让我们也来试一下
DECLARE @ClearPWD varchar(255)
DECLARE @EncryptedPWD varbinary(255)
SELECT @ClearPWD = 'test'
SELECT @EncryptedPWD = CONVERT(varbinary(255), pwdencrypt(@ClearPWD))
SELECT @EncryptedPWD

  看上去不错,确实被加密了,可是我怎么还原呢?

  呵呵,这就没戏了,口令加密都是单向的,用加密后的密文来比较就可以了。

  继续看看其它用户相关的sp,可以发现master.dbo.sp_password里面有口令比较的内容。
pwdcompare(@old, password, (CASE WHEN xstatus&2048 = 2048 THEN 1 ELSE 0 END))

  不用去理会xstatus,这是一个状态掩码,一般我们用的时候就直接用0就可以了
DECLARE @ClearPWD varchar(255)
DECLARE @EncryptedPWD varbinary(255)
SELECT @ClearPWD = 'test'
SELECT @EncryptedPWD = CONVERT(varbinary(255), pwdencrypt(@ClearPWD))
SELECT pwdcompare(@ClearPWD, @EncryptedPWD, 0)
SELECT pwdcompare('ErrorPassword', @EncryptedPWD, 0)

<think>嗯,用户想了解SQL Server数据库的等保测评相关内容。用户之前提到三个站内引用,都围绕SQL Server在等保测评中的安全评估、加固建议和具体命令。 首先需要明确等保测评的基本框架。根据引用[1]和[2],等保测评的核心是围绕五个安全层面展开:物理安全、网络安全、主机安全、应用安全和数据安全。SQL Server作为数据库属于数据安全范畴,但也会涉及主机和应用层面的交叉要求。 用户引用的资料中有几个关键点值得提取: 引用[1]提到安全评估步骤,包括身份鉴别、访问控制和安全审计。引用[3]给出具体技术命令,比如检查空口令SQL语句`pwdcompare`,以及查看密码修改时间的命令。引用[2]则侧重加固建议,比如强制加密和审计配置。这些正好对应等保的技术要求项。 用户可能更关注技术实施细节而非理论框架,所以考虑重点整理技术测评项。比如身份鉴别部分,引用[3]提到的口令策略检查命令很有实操价值,可以具体说明执行命令`select name,password_hash from sys.sql_logins where pwdcompare('', password_hash)=1`的作用是检测空密码账户。访问控制部分需要包含权限分配和远程连接的配置路径,这些在引用[3]的"服务器属性-连接"和"登录名属性"里都有体现。 加固建议需要结合引用[2]的内容,比如强制加密的配置路径在SQL Server Configuration Manager,以及C2审核的启用位置。同时想到补充引用未提及但重要的项目,比如数据备份和恢复策略,这属于等保的数据备份要求。 用户可能是企业的信息安全人员或数据库管理员,真实需求应该是准备等保测评。可以考虑在相关问题里加入"如何准备迎检材料"这类实用问题,帮助用户应对实际测评场景。 </think>以下是SQL Server数据库在等保测评中的核心内容及操作指南,结合等保2.0标准要求整理: --- ### **一、等保测评核心控制点** #### 1. **身份鉴别(等保要求项)** - **空口令检测** ```sql SELECT name, password_hash FROM sys.sql_logins WHERE PWDCOMPARE('', password_hash) = 1; ``` - **口令更换周期** ```sql SELECT name, LOGINPROPERTY(name, 'PasswordLastSetTime') AS 'Password Changed' FROM sys.sql_logins; ``` - **密码策略** 需启用操作系统密码策略(服务器属性 → 安全性 → 启用密码策略)[^3] #### 2. **访问控制(等保要求项)** - **权限最小化** ```sql -- 检查高权限账号 SELECT name, type_desc FROM sys.server_principals WHERE IS_SRVROLEMEMBER('sysadmin', name) = 1; ``` - **远程连接控制** 路径:`服务器属性 → 连接 → 允许远程连接` (仅必要启用)[^3] #### 3. **安全审计(等保要求项)** - **启用C2审核** 路径:`服务器属性 → 安全性 → 启用C2审核跟踪`[^3] - **配置数据库审核** 路径:`数据库 → master → 安全性 → 数据库审核规范` 需记录:登录失败、权限变更、敏感数据访问[^1] #### 4. **数据加密(等保要求项)** - **传输加密** 路径:`SQL Server配置管理器 → 网络配置 → 协议属性 → 强制加密`[^3] - **透明数据加密(TDE)** ```sql -- 启用TDE步骤 USE master; CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE; ALTER DATABASE [DBName] SET ENCRYPTION ON; ``` #### 5. **入侵防范** - **补丁管理** 定期更新SQL Server补丁(通过SSMS检查版本:`SELECT @@VERSION`) - **服务端口变更** 默认1433端口修改(配置管理器 → TCP/IP属性) --- ### **二、加固建议** 1. **账号管理** - 删除默认`sa`账号或重命名 - 禁用无关登录账号(`ALTER LOGIN [用户名] DISABLE;`) 2. **日志审计增强** ```sql -- 启用登录审计 EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'AuditLevel', REG_DWORD, 3; ``` 3. **备份与恢复** - 每日完整备份 + 日志备份(等保要求异地备份) - 测试恢复流程(引用[2]建议) 4. **协议安全** - 禁用`Named Pipes`和`VIA协议`(配置管理器) - 限制IP白名单访问(防火墙规则) --- ### **三、测评常见风险点** | 风险项 | 整改方案 | |-------------------------|-----------------------------------| | 存在空口令账户 | 执行复杂口令策略(字母+数字+特殊字符) | | 未启用登录失败锁定 | 配置`登录属性 → 状态 → 登录锁定` | | 审计日志存储不足90天 | 扩展日志存储空间并设置自动归档 | | 未启用传输加密 | 强制SSL加密并部署CA证书 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值