接入证据盘前的零写入要求
分析证据盘的前提是源盘不被写入任何一个字节。硬件上靠写阻断器接在盘与主机之间,把写请求整段拦掉;软件上靠只读标志与挂载控制,但只读挂载挡不住内核在设备枚举时自动挂载文件系统并写日志。因此规范做法是硬件阻断优先、软件措施兜底,并且在接入后先核对只读状态,确认无误再开始任何操作。
基本信息
| 硬件措施 | 写阻断器接在证据盘与主机之间,物理层面阻断写请求 |
|---|---|
| 软件措施 | blockdev --setro 设置只读、mount -o ro 只读挂载 |
| 检查命令 | lsblk -o NAME,RO,SIZE,MOUNTPOINT、blockdev --getro(返回 1 表示只读) |
| 自动挂载 | udisks/udev 会在设备接入时自动挂载,需提前关闭或忽略该设备 |
| 持久性 | blockdev 设置重启后失效,需在每次接入后重新确认 |
| 容器与虚拟化 | 直通设备要在宿主层面完成只读设置,容器内的设置在宿主自动挂载面前无效 |
典型使用场景
- 接入扣押硬盘前确认写保护生效
- 在取证工作站上确认设备未被自动挂载
- 只读挂载文件系统以浏览目录结构,同时避免写日志
- 检查移动存储是否被系统自动写入索引或缩略图数据
- 为采集记录留存只读状态的核对输出
- 对虚拟磁盘做只读挂载以避免修改快照链
只读核对
只读核对
# 查看设备只读标志与挂载点:MOUNTPOINT 列应为空
lsblk -o NAME,RO,SIZE,FSTYPE,MOUNTPOINT /dev/sdb
# 读取设备只读属性:输出 1 表示只读
sudo blockdev --getro /dev/sdb
# 设置只读(重启后失效,每次接入都要重做)
sudo blockdev --setro /dev/sdb
# 需要浏览时使用只读挂载
sudo mount -o ro,noload /dev/sdb1 /mnt/evidence
# 确认挂载选项里带 ro
findmnt -o TARGET,SOURCE,OPTIONS /mnt/evidence核对项与风险
| 核对项 | 期望结果 | 异常时的风险 |
|---|---|---|
| RO 标志 | lsblk 显示 1 | 设备可写,任何操作都可能改动源盘 |
| MOUNTPOINT | 为空(未挂载) | 被自动挂载后系统会写日志与元数据 |
| 挂载选项 | 带 ro(必要时加 noload) | 未指定 ro 时写入会直接反映到源盘 |
| udev 规则 | 已配置忽略该设备 | 插入瞬间被 udisks 自动挂载 |
| 核对记录 | 带时间与命令输出 | 无法证明接入期间始终保持只读 |
软件只读挡不住内核自动挂载写日志,物理阻断器与 udev 规则要一起用。接口层面(USB、SATA)能硬件阻断时,优先使用硬件方案。
blockdev 的只读设置重启后失效,换机器或重新接入都要重新核对。若分析过程需要多次插拔,每次接入都记录一次只读状态输出。