如何允许用户仅运行特定的二进制文件

如何允许用户仅运行特定的二进制文件

我正在将 和 的用户添加logviewer/sbin/nologin/我的系统。
我的自定义服务正在运行,例如sudo -u logviewer less --follow-name /var/log/messages

但仍然有方法可以以该用户身份运行其他命令。我只想允许用户logviewer运行特定的二进制文件,例如less tail cat

有可能吗?我不太熟悉 selinux,所以无法使用它。有没有用户
指南restric all和二进制文件?allow specific

答案1

GNU less 是一款精美的分页器。设置环境变量LESSSECURE=1以禁用某些功能,如运行 ! shell 命令。请参阅man less安全部分。

根据规则限制程序的执行并阻止其他内容称为允许列表。允许列表的子集执行预防缓解措施。

应用程序可能被限制在 chroot 或容器中,并且只定义了最少的软件集。但是,这可能不适合您的日志解析程序示例,因为它不是主机上唯一发生的事情。

应用程序阻止的一个自由实现将是fapolicyd例如,Red Hat 已经采用了它。在这种情况下,您可能已经:

allow perm=execute uid=logviewer : path=/usr/bin/less 
allow perm=execute uid=logviewer : path=/usr/bin/tail
allow perm=execute uid=logviewer : path=/usr/bin/cat 
allow perm=execute uid=logviewer : path=/sbin/nologin
deny_audit perm=execute uid=logviewer : all

或者,selinux 作为一种不同的访问控制方法存在,允许自定义策略。

尽管针对此用户的严格执行策略可能只对您有意义,但前提是他们可能运行其他命令。由于安全性较低、服务帐户没有凭据,并且切换用户策略中允许使用命令(sudo、polkit、doas),因此运行任意命令不再是小事。


有多种方法可以避免在主机上使用日志查看器。考虑使用集中式日志记录,使用一些应用程序来解析和显示日志事件。

答案2

作为起点,sudoers 文件也允许限制到特定的命令。

https://linux.die.net/man/5/sudoers

ray     rushmore = NOPASSWD: /bin/kill, PASSWD: /bin/ls, /usr/bin/lprm```

相关内容