1 个不稳定版本
0.1.0 | 2024年1月31日 |
---|
#1595 在 命令行工具
50KB
895 代码行
archlinux-userland-fs-cmp
用于读取挂载的Arch Linux驱动器上所有已安装软件包并比较文件系统与可信源的取证工具。这利用了https://archive.archlinux.org,所有非这些软件包提供的文件都将被标记为调查对象。
功能
- 并非整个软件包都从存档中检索,一旦收到
.MTREE
,下载就会终止。这目前依赖于https进行安全(这对于它的用途来说是可接受的),但为了增加安全性,可以指向一个预先计算/验证的ipfs文件夹。 - 使用线程池对挂载的文件系统进行哈希处理。
- 扫描需要
CAP_DAC_READ_SEARCH
,这通常需要root权限,但在访问挂载的文件系统之前,所有不必要的内核能力(如CAP_SYS_ADMIN
、CAP_SETUID
、CAP_DAC_OVERRIDE
、...)都被移除,并且进程随后被阻止重新获取它们。 - 挂载的文件系统被视为不可信,可能包含恶意更改,解析器是用内存安全的语言编写的,并且文件只被读取,但永远不会被执行。
- 调查的实时介质可以是任何Linux,如Debian或NixOS。
使用方法
archlinux-userland-fs-cmp /mnt -x /home -o ~/report.txt
这期望Arch Linux安装已挂载在 /mnt
上,并且将排除 /mnt/home
从扫描中。
开发测试
对于开发,您可能会发现这个命令很有用
cargo watch -- cargo run --release -- / -x /home -x /dev -x /proc -x /sys -x /run -x /var/cache -x /var/tmp # -x /var/lib/archbuild -x /nix -x /var/lib/repro ...
为了扫描更小的系统并生成更短的输出,请尝试
podman run -it --rm -v "$PWD/target/x86_64-unknown-linux-musl/release/archlinux-userland-fs-cmp:/cmp:ro" archlinux /cmp / -x /sys -x /proc -x /dev -x /var/lib/pacman/local -x /etc/ca-certificates/extracted
为什么不使用paccheck?
pacman可以使用以下方式执行自己的完整性检查
paccheck --sha256sum --quiet
然而,Arch Linux维基百科上写道
注意:在怀疑有恶意更改的情况下,**不应**直接使用此功能!在这种情况下,建议采取安全预防措施,如使用实时介质和独立的哈希总和源。
archlinux-userland-fs-cmp相应地实现了这一点(当然,仍然建议使用实时介质)。
依赖关系
~15–30MB
~493K SLoC