![何时适合从应用程序中删除 setuid/setgid 权限?](https://linux22.com/image/549806/%E4%BD%95%E6%97%B6%E9%80%82%E5%90%88%E4%BB%8E%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E4%B8%AD%E5%88%A0%E9%99%A4%20setuid%2Fsetgid%20%E6%9D%83%E9%99%90%EF%BC%9F.png)
我一直在浏览NSA 建议用于强化 Mac OS X 和 Linux,并注意到以下小信息:
Setuid 程序以文件所有者(通常是 root)的权限运行,无论哪个用户执行它们。这些程序中的错误可能会导致权限提升攻击。要查找 setuid 和 setgid 程序,请使用以下命令:
查找 /-perm -04000-ls 查找 /-perm -02000-ls
识别 setuid 和 setgid 二进制文件后,禁用系统或任务操作不需要的 setuid 和 setgid 位(使用 chmod ug-s programname)。
我的问题是,如何确定哪些应用程序可以禁用其 setuid/setgid 位?例如,我假设某些应用程序,如 su、sudo 和 login必须有 setuid。另一方面,像 write 这样的程序可能不需要 setuid。有没有一个好的方法可以找出应用程序是否真的需要嗎?
答案1
这是个好问题。
通常,需要 setuid 和 setgid 位的应用程序是需要由非 root 用户执行管理任务的应用程序。
以 passwd 程序为例。它用于更改密码。密码存储在 /etc/shadow 文件中,该文件只有 root 可以读取,因此使用 setuid 位。
一般来说,在流行的 Linux 发行版中,这些应用程序是可以安全的使用,因为它们都经过测试并且没有错误。
我不知道您如何才能知道应用程序是否需要这些位,但您可以安装像 snort 或 AIDE 这样的应用程序来检查文件的完整性,并在某些文件发生更改时提醒您 - 特别是那些启用了 setuid 和 setgid 位的文件。