是否有一种永久的、安全的(如完整性方面的)方法使VPS (虚拟专用服务器)的整个Ubuntu系统对所有用户(包括根用户)都是只读的?
发布于 2018-10-21 02:32:35
是的,使用强制访问控制。不过,这将是一项非常艰巨的工作。
强制访问控制系统允许您对操作施加限制,即使是由根用户执行的操作,并且能够对进程进行细粒度操作(例如,以根用户身份运行的dhcpcd可以编辑/etc/解析式. can,但以根用户身份运行的vi不能)。
可能不可能有一个运行的Ubuntu系统,它是完全只读的。各种操作系统进程都希望能够写入文件(例如,/bin/login希望更新utmp、btmp、wtmp;很多事情都需要日志记录)。当然,如果您能够找到所有这些文件,您可以允许必要的访问,但这样做是相当繁重的。
最常见的MAC系统是SELinux。引用维基百科的话,
SELinux可以通过非常精确的规范,潜在地控制系统允许每个用户、进程和守护进程进行哪些活动。它用于限制具有明确定义的数据访问和活动权限的数据库引擎或web服务器等守护进程。这将限制来自受限守护进程的潜在危害,使其受到损害。
它与您在评论中声明的目标相匹配:
创建一个在缓冲区溢出的情况下为只读的环境(这将作为一个挑战)。
MAC系统通常需要“特殊的东西”才能关闭它们,例如重新启动到特殊模式,远程攻击者无法访问该模式。(显然,如果root可以轻松地“关闭它”,那么它就不会保护它不受根保护。)
请允许我重复一遍:做这件事是一项非常艰巨的工作。像SELinux这样的系统很难正确配置;一般来说,您会发现它们在有限的、有针对性的保护配置文件中工作(例如,“不要让web服务器获取东西”),并且在经过测试的操作系统供应商的受控配置中进行分发(例如,Red这样做)。如果你想用它来锁定一切,你有很多工作要做。
就其价值而言,AppArmor的卖点之一是它比SELinux容易,所以你在Ubuntu上的事实可能会给你带来更多的好处。
https://security.stackexchange.com/questions/196061
复制相似问题