BitLocker VHD 网络共享方案

BitLocker VHD 网络共享方案 | IT 技术文档

REV 2025.05
Windows Server · Storage · Security

BitLocker VHD 网络共享方案

在 Windows Server 上构建加密虚拟磁盘,通过网络共享实现多客户端安全访问的完整技术方案

Windows Server 2019/2022
AES-256 加密
需要管理员权限
01

方案概述与架构

本方案通过在 Windows Server 上创建 VHD(Virtual Hard Disk)虚拟磁盘文件,使用 BitLocker 对其进行全盘 AES-256 加密,挂载后通过 SMB 网络共享协议提供给局域网内的客户端机器访问。

这一架构的核心优势在于:数据以加密形式静止存储在磁盘上,即便服务器硬盘被物理拔走,数据也无法被读取。同时,通过 Windows 权限体系控制哪些用户/计算机可以访问共享目录。

客户端 PC-A
──
客户端 PC-B
──
客户端 PC-C
│           │           │
SMB / 445 端口 (局域网)
└────────────┬────────────┘
Windows Server \\server\SecureShare
VHD 已挂载 → Drive E:\
🔒 BitLocker 加密层 (AES-256-XTS)
encrypted.vhd → 物理磁盘
02

环境要求

组件要求说明
服务器 OSWin Server 2019+需要 BitLocker 功能组件
客户端 OSWin 10/11 Pro+Home 版无法访问域账户共享
TPM可选用于无密码自动解锁
网络局域网 / VPNSMB 445 端口需通畅
磁盘空间VHD 大小 + 20%建议预留宿主磁盘余量
管理员权限必须服务器端操作全程需要
// 前置操作

在服务器上安装 BitLocker 功能:服务器管理器 → 添加角色和功能 → 功能 → BitLocker 驱动器加密,安装完成后重启服务器。

03

创建 VHD 虚拟磁盘

使用 PowerShell 或 Disk Management 创建 VHD 文件。推荐使用 PowerShell 以便脚本化管理。

1

以管理员身份打开 PowerShell,创建 VHD 文件

PowerShell
# 创建一个固定大小 50GB 的 VHD(Fixed 类型加密效果更好)
New-VHD -Path "D:\SecureStorage\encrypted.vhd" `
         -SizeBytes 50GB `
         -Fixed

# 挂载 VHD
Mount-VHD -Path "D:\SecureStorage\encrypted.vhd"
2

初始化磁盘并格式化

PowerShell
# 获取新挂载磁盘的编号(通常是最大编号)
$disk = Get-Disk | Where-Object {$_.OperationalStatus -eq 'Offline'}

# 初始化为 GPT 分区表
$disk | Initialize-Disk -PartitionStyle GPT

# 创建新分区并格式化为 NTFS,分配盘符 E:
$disk | New-Partition -AssignDriveLetter -UseMaximumSize |
         Format-Volume -FileSystem NTFS -NewFileSystemLabel "SecureVHD"
// Tip

選択 Fixed(固定大小)而非 Dynamic(动态扩展),这样 BitLocker 加密扫描范围明确,不会因动态扩展产生未加密的零填充块。

04

启用 BitLocker 加密

对 VHD 分区(假设盘符为 E:)启用 BitLocker。可以选择密码保护TPM 保护两种方式。

1

启用 BitLocker(密码模式)

PowerShell
# 使用密码保护启用 BitLocker(AES-256-XTS)
Enable-BitLocker -MountPoint "E:" `
                 -EncryptionMethod XtsAes256 `
                 -PasswordProtector `
                 -Password (Read-Host -AsSecureString "输入 BitLocker 密码")

# 同时添加恢复密钥保护(强烈推荐)
Add-BitLockerKeyProtector -MountPoint "E:" -RecoveryPasswordProtector
2

确认加密状态并保存恢复密钥

PowerShell
# 查看 BitLocker 状态
Get-BitLockerVolume -MountPoint "E:"

# 导出恢复密钥到安全位置(务必离线备份!)
$blv = Get-BitLockerVolume -MountPoint "E:"
$blv.KeyProtector | Where-Object {$_.KeyProtectorType -eq 'RecoveryPassword'} |
    Select-Object RecoveryPassword |
    Out-File "C:\BitLocker-RecoveryKey.txt"
// 警告

恢复密钥是唯一的灾难恢复手段。请将 RecoveryKey.txt 打印或存入 U 盘,离线保存在安全地点。丢失密钥 + 丢失密码 = 数据永久不可恢复。

05

配置网络共享(SMB)

BitLocker 加密在文件系统层以下工作,对上层的 SMB 共享完全透明。挂载并解锁 VHD 后,直接共享其中的文件夹即可。

1

创建共享文件夹并设置 SMB 共享

PowerShell
# 在 VHD 内创建共享目录
New-Item -Path "E:\SharedData" -ItemType Directory

# 创建 SMB 共享(仅局域网内可见)
New-SmbShare -Name "SecureShare" `
              -Path "E:\SharedData" `
              -Description "加密存储共享" `
              -FullAccess "DOMAIN\IT-Admins" `
              -ReadAccess "DOMAIN\Staff"
2

设置 NTFS 权限(与 SMB 权限双重保障)

PowerShell
# 获取现有 ACL
$acl = Get-Acl "E:\SharedData"

# 添加 Staff 组只读权限
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule(
    "DOMAIN\Staff", "ReadAndExecute", "ContainerInherit,ObjectInherit",
    "None", "Allow")
$acl.AddAccessRule($rule)
Set-Acl "E:\SharedData" $acl
// 注意

SMB 权限和 NTFS 权限共同生效,取较严格者。建议 SMB 层设为 Full Control,细粒度控制放在 NTFS 权限层,避免混乱。

06

客户端访问配置

客户端无需安装任何额外软件,BitLocker 的加解密对客户端完全透明。

1

手动映射网络驱动器

CMD / PowerShell
# 映射为 Z: 盘,使用域账户
net use Z: \\SERVER-NAME\SecureShare /user:DOMAIN\username /persistent:yes
2

通过组策略自动映射(批量部署)

在 AD 域环境中,通过 GPO(组策略)为特定 OU 内的计算机自动推送驱动器映射:

GPO 路径
用户配置 → 首选项 → Windows 设置 → 驱动器映射
→ 新建 → 操作: 创建  路径: \\SERVER-NAME\SecureShare  驱动器号: Z
3

非域环境(工作组)客户端连接

PowerShell
# 指定服务器本地账户连接(工作组环境)
New-PSDrive -Name "Z" -PSProvider FileSystem `
             -Root "\\SERVER-NAME\SecureShare" `
             -Credential (Get-Credential) -Persist
07

服务器重启后自动解锁与挂载

服务器重启后,VHD 不会自动挂载,BitLocker 也不会自动解锁。需要配置启动脚本实现自动化。

// 安全权衡

自动解锁意味着密码需要存储在服务器本地(受 DPAPI 保护)。在物理安全有保障的机房环境下可以接受;若服务器存在被盗风险,应保持手动解锁以维持最高安全性。

1

启用 BitLocker 自动解锁(仅适用于数据盘)

PowerShell
# 在 VHD 已解锁状态下执行,绑定到当前系统(DPAPI 保护)
Enable-BitLockerAutoUnlock -MountPoint "E:"
2

创建计划任务:开机自动挂载 VHD

PowerShell
# 创建开机自动挂载脚本
$script = @'
Mount-VHD -Path "D:\SecureStorage\encrypted.vhd" -NoDriveLetter:$false
Start-Sleep -Seconds 3
# 自动解锁已由 Enable-BitLockerAutoUnlock 处理
'@
$script | Out-File "C:\Scripts\MountSecureVHD.ps1"

# 注册为系统启动计划任务(SYSTEM 账户运行)
$action  = New-ScheduledTaskAction -Execute "powershell.exe" `
             -Argument "-NonInteractive -File C:\Scripts\MountSecureVHD.ps1"
$trigger = New-ScheduledTaskTrigger -AtStartup
$settings= New-ScheduledTaskSettingsSet -StartWhenAvailable
Register-ScheduledTask -TaskName "MountSecureVHD" `
    -Action $action -Trigger $trigger -Settings $settings `
    -RunLevel Highest -User "SYSTEM"
08

安全注意事项

风险点建议措施优先级
恢复密钥丢失 打印后存入上锁的文件柜,同时保存到离线 U 盘 极高
BitLocker 密码泄露 定期更换密码,使用 16 位以上随机密码
SMB 协议漏洞 禁用 SMBv1,保持系统更新,防火墙限制 445 端口
VHD 文件被复制 即使 .vhd 文件被复制走,没有密钥也无法解锁 已缓解
客户端密码缓存 通过组策略禁止客户端保存网络凭据
日志与审计 开启 SMB 访问日志,定期审查异常访问
// 最佳实践

定期验证恢复密钥的有效性:在测试环境中模拟”忘记密码”的恢复流程,确保备份的恢复密钥真实可用。未经测试的备份等于没有备份。


// 文档下载
bitlocker-vhd-network-share.html

HTML · 完整技术文档 · 含代码示例 · 可离线查看

下载文档

总结

BitLocker VHD 网络共享方案以较低的实施成本,实现了静止数据(Data at Rest)的强加密保护,同时对局域网用户保持透明的访问体验。其核心价值在于:即使物理存储介质丢失或被盗,数据依然受到 AES-256 级别的保护。

该方案特别适合中小型企业 IT 环境,无需采购专用 NAS 或加密存储设备,充分利用现有 Windows Server 基础设施即可落地。

上部へスクロール