我正在将 和 的用户添加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```