首页/安全/取证与溯源速查/写阻断器与只读状态检查
证据与报告57 条

写阻断器与只读状态检查

接入证据盘前用写阻断器或只读挂载确保零写入;接入后先核对设备只读标志再开始任何操作。

取证与溯源速查安全更新于 2026-10-13

接入证据盘前的零写入要求

分析证据盘的前提是源盘不被写入任何一个字节。硬件上靠写阻断器接在盘与主机之间,把写请求整段拦掉;软件上靠只读标志与挂载控制,但只读挂载挡不住内核在设备枚举时自动挂载文件系统并写日志。因此规范做法是硬件阻断优先、软件措施兜底,并且在接入后先核对只读状态,确认无误再开始任何操作。

基本信息

硬件措施写阻断器接在证据盘与主机之间,物理层面阻断写请求
软件措施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 的只读设置重启后失效,换机器或重新接入都要重新核对。若分析过程需要多次插拔,每次接入都记录一次只读状态输出。

易错点

  • 只依赖 blockdev 设置而设备已被自动挂载,系统仍在向源盘写日志
  • 只读设置重启或换机后失效未重新确认,后续操作以可写状态进行
  • 挂载时忘记加 ro 参数,浏览目录时就已修改了源盘元数据
  • 在虚拟化环境中只设置客户机侧只读,宿主侧仍可写入虚拟磁盘
  • 不记录只读状态核对输出,无法证明接入期间未发生写入

数据来源与参考

  • Linux util-linux(blockdev/lsblk 手册)
  • NIST SP 800-86(写保护)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌