下载单独的 `.deb` 包文件进行完整性验证

下载单独的 `.deb` 包文件进行完整性验证

我有系统运行时测量,可以显示系统已执行了哪些软件包文件。我想验证 Linux 内核的完整性管理架构 (IMA) 计算的校验和与来自 ubuntu 存储库的软件包文件的官方校验和。

以下为测量示例:

10 bae6e0fe76b1eb0864410323fc013c83ca626a66 ima-ng sha256:c1b65dd1aae2d422d1c6a3b9ae4c50f9cbf25108b8051c5be280ebfe32981456 /usr/bin/dircolors
10 71e4941190fb8601a55f5bc8b6ab284d40df3be9 ima-ng sha256:00fba26dcaa2f6832987e9421c9aa42d9f4d47652e4a25fdf1b92f935ac81989 /usr/bin/sudo
10 d8eb38a20ee87ddf87f20218642cc9059f74cefa ima-ng sha256:212eabe6f44f9e8b720b105c9dbcb9fc67fcc7be5250e608b88b33e8ac436d5a /usr/bin/su
10 a80c90a7f139cd62a1cb0f40adc6dae4f11e535b ima-ng sha256:b4642f4f56e37a506f758a0fce4054ed91470e6ac35fe940eaf18da4883d2d95 /usr/bin/groups
10 5fa6842bd391b0ea52448754bf78cad87754df73 ima-ng sha256:5ae83908197820124d467db6ecc821402d667dd4617d8fab3f0e30dc5ef5a074 /usr/bin/git
10 76101b9b21175328d4f2df1b3aa8002492c7a7b3 ima-ng sha256:65481459b05f8898299b7ef354138dc2ab674438d74cc4c8bf5aeef09a0331e8 /usr/bin/nano
10 84e18b01843fda8fd130e0a500607e55e3aeb16a ima-ng sha256:c2a2db43da333527632872c629465e0fb3f5cbf87115836a7fcda428877589a5 /usr/bin/python3.11
10 45737dc3d038bac2a5e40d085accdd545a692fbd ima-ng sha256:afd18e93eaf9dbea58ce345a2add190efc1b000558dba084417904415439e875 /usr/bin/tpm2
10 b3e35da87c02c9841d2f991e816feb055874d190 ima-ng sha256:db905ca30da311c0bcd005b3d475d22e6fa395c3205ff5f17cdd9a02d830e1fb /usr/bin/x86_64-linux-gnu-g++-12

在哪里可以找到 Ubnutu 软件包中各个文件的校验和。假设有一个软件包g++-12我可以清楚地看到它提供的 sha1 和 sha256校验和。但是,是否有任何资源也提供所有个别文件软件包?我当然可以下载 .deb 文件并提取内容,然后手动计算,但这对于我的用例来说并不是非常有效的解决方案。

答案1

Debian 软件包系统(dpkg.deb软件包)MD5在安装软件包时会内部生成总和。不幸的是,您的输出仅生成SHA1SHA256总和。要使此功能正常工作,您必须获取测量结果以提供MD5文件的总和。

apt所发生的情况是,当您使用/安装包时dpkg.md5sums会在目录内为该包生成一个文件/var/lib/dpkg/info

这意味着您可以轻松检查MD5软件包安装时所有文件的总和。这可用于确定是否有任何文件已被更改软件包已安装。

来自我自己的系统 (Ubuntu 22.04.2) 的一个示例。如果我运行,cat /var/lib/dpkg/info/sudo.md5sums我会得到以下结果:

e8e2fd5938804db1abb67773f84f5549  usr/bin/cvtsudoers
8176b78ba666fb64e72a3ae6a4851793  usr/bin/sudo
7cd774a8abe0586bdd75fb90c8bcaec7  usr/bin/sudoreplay
3f90917a245d4aafe98bb39a1fb9fa09  usr/include/sudo_plugin.h
9eb3041fcbb7ba1a64664d7a7a13cc15  usr/lib/tmpfiles.d/sudo.conf
8ccb24178b5cef512ac3fef3ad3b44f1  usr/libexec/sudo/audit_json.so
fc97536f5bf479b310cbffd9c5f030ec  usr/libexec/sudo/group_file.so
4410a4f7ce928d5cbc79b5881e26194b  usr/libexec/sudo/libsudo_util.so.0.0.0
c087bda8ff9210f79a94176ca817a4c8  usr/libexec/sudo/sample_approval.so
d8d8ca3f48bda0bb8a3e782379230284  usr/libexec/sudo/sesh
091c0ce05a872050dbe145bf156cea90  usr/libexec/sudo/sudo_intercept.so
d42066a08c1877f738c4c55c570f78e7  usr/libexec/sudo/sudo_noexec.so
4e920ee4b000c0bd9a1659a4368d5fdf  usr/libexec/sudo/sudoers.so
59df52d5f1b4b01740df4abb34294711  usr/libexec/sudo/system_group.so
2f3db27567e8b72955cdccafb8d4750b  usr/sbin/sudo_logsrvd
8f778373024750a98f7412593ac7fa39  usr/sbin/sudo_sendlog
e46edcfbb954c4bd8a599d3d76d53d9a  usr/sbin/visudo

... (33 more lines omitted)

如果您可以获得运行的测量结果来MD5为文件提供总和,则可以根据.md5sums文件中提供的值检查该值。

如果这不可能,那么很遗憾,该dpkg实用程序使用旧的MD5哈希值,而内核无法输出这些哈希值。在这种情况下,可能没有比SHA256直接从.deb文件中计算校验和更好的解决方案了。

相关内容