最近我一直在研究如何加固笔记本电脑的安全。默认情况下,每个程序都能访问一切:文件系统、网络以及其他程序。
首先,我开始研究Firejail。它允许指定程序可访问的路径,以及网络和其他特殊资源。它并不差,我使用了一段时间。
我不喜欢Firejail的地方在于它是setuid程序:它以root身份运行,设置沙箱,然后启动作为参数传入的程序。如果Firejail本身存在问题,它甚至可能扩大攻击影响范围。
后来我了解了Landlock。它是非特权(unprivileged)的,并且也允许限制网络访问。某个时刻,我找到了一个能轻松运行它的命令行工具。Landlock解决了权限问题:它在不具备更高权限的情况下限制进程。
Landlock的问题在于其文件系统限制有些过于粗略:如果一个目录被允许,那么其下的所有内容也都被允许。例如,授予对$HOME的读取权限,也就意味着授予了对chromium配置文件的读取权限。
现在我正在研究bubblewrap。它承诺以最佳方式结合Firejail和Landlock的优点:非特权运行,并且允许分层控制文件系统访问。
我仍在努力将我的点文件配置迁移到bubblewrap,这需要投入一些脑力。但它似乎将是一个很好的下一步。