Apparmor - 如何“允许一切”规则,然后收紧?

信息安全 linux 服装
2021-08-27 18:44:41

作为 apparmor 的新手,只想从对程序设置一些简单的 1 行限制开始。其他一切保持原样。此外,由于其他原因,我无法轻松地分析这个特定的可执行文件。它是窗口管理器的一部分,在用户登录期间由 GDM / gnome 会话启动/关闭。

希望实现一些像这样的东西:

# Last Modified: Fri Dec 28 09:20:30 2018
#include <tunables/global>

/usr/bin/budgie-panel {

  #include <abstractions/base>

  # allow all rules first
  allow *,

  # Then deny 1 specific dbus bind access
  deny dbus bind name=org.freedesktop.Notifications,

}

但是allow *,,在我的 apparmor 配置文件中,“允许一切”的正确语法是什么?找不到明确的文档来解释这一点。

2个回答

这不是正确的做法。

一般来说,黑名单对于安全策略来说是一个糟糕的基础——它应该基于白名单——而 AppArmor 的语法就是以此为基础的。为此,您应该从配置文件中的任何细节开始,但将配置文件操作设置为抱怨而不是强制执行。您可以在配置文件 ( flags=(complain)) 中或使用 aa-complain 命令进行设置。然后,允许操作的特定指令变得多余。

我相信权威文档是SuSE 发布的但是,简而言之,对于文件访问,配置格式是:

<object> <permissions>,

请注意,对象中的通配符(如果它是路径)与您在命令行中可能熟悉的内容略有不同。这里有更多特定于 dbus 的东西

但是allow *,“允许一切”的正确语法是

允许一切的正确语法如下所示:

profile DAC /path/to/exec {
  # Allow all rules
  capability,
  network,
  mount,
  remount,
  umount,
  pivot_root,
  ptrace,
  signal,
  dbus,
  unix,
  file,
}

其实还有两条规则:

  1. rlimit (AppArmor 可以设置和控制与配置文件关联的资源限制)
  2. change_profile (控制受限任务可以转换到哪些配置文件的权限)

但在这种特殊情况下它没有任何意义。