首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当通过sudo运行时,不允许“binaries”、“run”安装setuid二进制文件

当通过sudo运行时,不允许“binaries”、“run”安装setuid二进制文件
EN

Unix & Linux用户
提问于 2015-05-31 12:21:01
回答 2查看 435关注 0票数 1

假设您可以在系统上安装某些东西,因为您有这样做的sudo权限,但只有安装程序的sudo权限。在这种情况下,很容易创建一个包,该包安装在安装过程中设置了塞图德钻头的根用户拥有的二进制文件,并让该二进制文件执行您提供给它的任何命令,作为根。这使得允许任何给定用户对可以任意更改权限的包进行有限的sudo访问是不安全的。另一个明显的(IMO)安全漏洞是,包可以更新/etc/sudoers文件并授予用户所有附加权限。

据我所知,apt-getyum都有一个选项,您可以设置或检查它们是如何被调用的,这会导致在正常的、默认的位置安装什么,但是以有限的方式安装(例如,不覆盖已经可用的文件,或者不设置setuid位)。

我是否错过了什么,是否有这样的限制安装?它在其他安装程序中可用吗?或者,还有其他已知的解决办法会使这些限制无效(并实施这些限制是浪费时间)?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2015-05-31 22:08:38

这在SELinux策略中可能是可行的(如果没有SELinux或其他可以限制根的安全模块,则可能无法做到这一点),但这是毫无意义的。

正如您注意到的,包可以声明它安装了/etc/sudoers。即使您制定了一项特殊规则来防止这种情况,包也可以在/etc/sudoers.d中删除一个文件。或者,它可以在/etc/profile.d中删除一个文件,以便在任何用户下次登录时读取。或者它可以添加一个在引导时由root启动的服务。这个列表还在继续;它是不可管理的,即使您发现了这些有问题的情况,您也会阻止安装这么多软件包,所以您最好不要麻烦(例如,该工具不允许大多数安全更新)。包可以做的另一件事是安装一个稍后会被欺骗使用的程序(例如,如果您完全禁止对/bin的写访问,它可以安装/usr/local/bin/ls),并且在下次调用该程序时通过您的帐户注入一个后门。要防止包安装出现潜在的安全漏洞,您需要将安装限制在受信任的包上,或者确保永远不使用已安装的包。

基本上,如果您不信任一个用户,那么您就不能让他们在您的系统上安装任意的包。如果他们需要发行版中没有的东西,让他们在自己的主目录中安装软件。

如果您想让不受信任的用户能够安装更多的包(来自您批准为安全的源的预定义列表)或升级主系统上的现有软件包,这是安全的,但您需要采取预防措施,特别是在安装期间禁用交互。有关对于我的ssh用户来说,获得无密码sudo安全吗?apt-get updateapt-get upgrade的一些想法,请参阅apt-get upgrade

在最近的Linux版本(内核启动用户名称空间 3.8)中,任何用户都可以在用户ID为0的情况下使用≥。这基本上允许用户在自己的目录中安装自己的发行版。

票数 1
EN

Unix & Linux用户

发布于 2015-05-31 18:20:05

如果用户可以创建任何包并将其上传到安装程序信任的存储库中,我不知道有什么方法可以以您所寻找的方式保护系统(至少在apt-get中是如此)。包中的维护脚本以root的形式运行(无论是在aptyum还是dnf类型系统上),因此安装包可以使包的作者root访问该系统。

也许有了SELinux之类的东西,您可以想出一种策略,让用户能够在某些地方安装软件包,但不会造成任何损坏(例如,不碰/etc/sudoers/sbin/usr/sbin等,当然还有包管理器的配置),但我怀疑您是否能够捕捉到一切。(我对SELinux还不太了解,无法确定。)

如果您能够控制存储库中的内容,那么您就没事了。如果有人可以将任何东西上传到存储库中,那么要求签名实际上不会对您有多大帮助,至少在apt-get中是这样的:不匹配的签名只会导致警告和提示,而这些提示可以被覆盖,而且我认为没有配置apt-get的方法,因此它不允许覆盖。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/206633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档