我问自己,当我生成安全策略(即sudoers
包含一个或多个Cmnd_Alias
枚举定义的文件)时,系统安全性是否会大幅提高全部等目录下以 SHA-2 校验和为前缀的可执行文件/usr/bin
。/usr/sbin
使用来自可信来源的软件包更新系统后,我将重新生成安全策略。
有什么见解这是好主意还是坏主意吗?
答案1
听起来对我来说是一个巨大的痛苦。我也不认为你实际上在安全方面获得了任何好处,因为那些 (a) 只能以 root 身份编写,所以如果有人可以写信给他们,游戏很可能就结束了; (b) 可能会加载一堆未检查的共享库。
sudoers 联机帮助页表示,该选项“在调用 sudo 的用户对命令或其父目录具有写访问权限的情况下可能很有用”。我不确定谁认为该设置是一个好主意,或者就此而言,sudo
执行 w/oa 竞争条件之前的校验和如何。
我建议改用基于主机的 IDS(例如,samhain、tripwire...)。这些将尝试快速检测并报告对系统二进制文件(包括共享库)的任何篡改,无论是否有人尝试 sudo。
答案2
如果您允许使用任意参数运行系统二进制目录中的几乎任何二进制文件,那么您几乎肯定已经允许任意访问。除此之外,如果您允许运行具有任意参数的编辑器,或mv
,或类似的 shell bash
,或类似的包管理器,或任何支持将数据写入文件的程序,那么有人可以轻松地使用它来成为您允许的dpkg
用户sudo
。黑名单命令也不起作用;有太多不同的方法可以将命令的执行转变为权限升级。
使用 sudo,您应该允许一组非常特定的有限命令(带有特定参数),或者允许所有命令。
如果您想检测对系统文件的修改,您应该使用另一种机制。如果某人有足够的访问权限来修改系统二进制文件,他们也可能有足够的访问权限来更改 sudoers 文件。
答案3
另一个答案涵盖了麻烦,我只是想指出,保护 sudoers 文件内容还需要考虑校验和无法防止的内容......
假设您的 sudoers 文件中有以下内容,并且您只希望低权限用户使用 apache 二进制文件(我没有提供 sha-2 校验和示例,因为它会使我想要表达的观点变得复杂)
Cmnd_Alias HTTPD = /etc/sbin/httpd
low_priv_user ALL=(ALL) NOPASSWD: HTTPD
如果低权限用户尝试过,请查看错误日志
sudo /etc/sbin/httpd -t /etc/shadow
因此,是的,如果做得好,二进制文件上的索引校验和以及管理方法理论上可以提高安全性,尽管我怀疑命令可用性(安全的三个基础之一)会面临更大的风险。您仍然需要保护/强化主机的其他区域。
我想这完全取决于您所保护的资产的价值与管理开销以及校验和二进制文件带来的风险降低程度相比。