扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
查找 SUID/SGID 程序
寻求 root 访问权的恶意用户总是会在系统上寻找设置了 SUID 或 SGID 位的程序。就象我们在 LPI 101 系列第 3 部分中讨论的那样,这些位使程序始终作为拥有该文件的用户或组运行。有时这是程序正确运行所必需的。问题是任何程序都可能包含允许用户在不正确地使用程序时获得特权的错误。
应该仔细考虑每个程序以确定是否需要将其 SUID 或 SGID 位打开。系统上有些 SUID/SGID 程序可能是根本不需要的。
要搜索具有这样性质的程序,可使用 find 命令。例如,可以在 /usr 目录中启动对 SUID/SGID 程序的搜索:
|
在这个清单中,我已经发现了需要更仔细检查的侯选对象:lppasswd 是 CUPS 打印软件分发版的一部分。因为没有在系统上提供打印服务,所以我会考虑除去 CUPS,那也会除去 lppasswd 程序。lppasswd 中可能没有危及安全性的错误,但为什么要在不使用的程序上冒险呢?同样地,应该关闭所有不使用的服务。您总是可以在需要时再启用它们。
用 ulimit 设置用户限制
bash 中的 ulimit 命令提供了限制特定用户的资源使用情况的方法。一旦限制降低,则在进程的生命期内无法提高该限制。此外,该限制会被所有子进程继承。结果是:可以在 /etc/profile 中调用 ulimit,而限制将以不能撤消的方式应用于所有用户(假设用户正在运行 bash 或另一个 shell,该 shell 在登录时运行 /etc/profile)。
要检索当前限制,可使用 ulimit -a:
|
以一种能实际提高系统安全性而不会对合法用户造成麻烦的方式设置这些限制是相当复杂的,所以调整这些设置时要小心。
用 ulimit 设置 CPU 时间限制
作为 ulimit 的一个示例,我们尝试将一个进程的 CPU 时间设置为 1 秒钟,然后用一个忙循环使它超时。一定要确保启动新的 bash 进程(象我们在下面做的那样),以在其中进行尝试;否则将被注销!
|
在上面的示例中,“user”时间加上“sys”时间等于该进程所用的全部 CPU 时间。当 bash 进程到达 2 秒标记时,Linux 断定它超过 1 秒的限制,因此该进程被杀掉。酷吧?
注:一秒钟只是示例而已。不要对您的用户这样做!即使几小时也是不对的,因为 X 真地很消耗时间(我当前的会话已用掉了 69+ 小时的 CPU 时间)。在实际的实现中,您可能要对某些项而不是 CPU 时间执行 ulimit。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者