Ubuntu Apparmor 简介以及如何配置 Apparmor 配置文件

举报
Tiamo_T 发表于 2022/08/24 16:52:05 2022/08/24
【摘要】 AppArmor 是一个强制访问控制或 MAC 系统。

AppArmor 是一个强制访问控制或 MAC 系统。

它使用 Linux 安全模块来限制程序。AppArmor 设置了一组默认应用程序配置文件来保护 Linux 服务。

您还可以通过自己创建配置文件来保护系统上运行的任何其他应用程序。

在 Ubuntu 中,默认情况下会安装并启用 AppArmor。系统启动时会加载 apparmor 配置文件。

AppArmor 在以下两种类型的配置文件模式下运行:

  1. 强制 - 在强制模式下,系统开始强制执行规则并在 syslog 或 auditd 中报告违规尝试(仅当安装了 auditd 时)并且不允许操作。
  2. 投诉 - 在投诉模式下,系统不执行任何规则。它只会记录违规尝试。

其他配置文件可以在 apparmor-profiles 包中找到。

查看 Apparmor 状态

您可以查看 apparmor 的当前状态以及加载的所有配置文件,如下所示:

$ sudo apparmor_status
apparmor module is loaded.
5 profiles are loaded.
5 profiles are in enforce mode.
   /sbin/dhclient
   /usr/lib/NetworkManager/nm-dhcp-client.action
   /usr/lib/connman/scripts/dhclient-script
   /usr/sbin/mysqld
   /usr/sbin/tcpdump
0 profiles are in complain mode.
2 processes have profiles defined.
2 processes are in enforce mode.
   /sbin/dhclient (585)
   /usr/sbin/mysqld (799)
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.

如果我们检查上面的输出,我们可以看到 5 个配置文件处于强制模式。

这也表明两个进程当前正在强制模式下运行(因为配置文件)。例如,PID 为 585 的 /sbin/dhclient 正在强制模式下运行。

更改配置文件模式

要在抱怨模式下设置配置文件,如果尚未安装 apparmor-utils 包,请先安装它。

apt-get install apparmor-utils

使用 aa-complain 命令将配置文件设置为抱怨模式。例如,执行以下操作为 mysqld 启用抱怨模式。

$ sudo aa-complain /usr/sbin/mysqld
Setting /usr/sbin/mysqld to complain mode.

现在,当您执行 apparmor_status 时,您将看到 mysqld 处于抱怨模式。

$ sudo apparmor_status
apparmor module is loaded.
5 profiles are loaded.
4 profiles are in enforce mode.
   /sbin/dhclient
   /usr/lib/NetworkManager/nm-dhcp-client.action
   /usr/lib/connman/scripts/dhclient-script
   /usr/sbin/tcpdump
1 profiles are in complain mode.
   /usr/sbin/mysqld
2 processes have profiles defined.
1 processes are in enforce mode.
   /sbin/dhclient (585)
1 processes are in complain mode.
   /usr/sbin/mysqld (799)
0 processes are unconfined but have a profile defined.

您可以使用 aa-enforce 命令将配置文件更改回强制模式,如下所示。

$ sudo aa-enforce /usr/sbin/mysqld
Setting /usr/sbin/mysqld to enforce mode.

AppArmor 配置文件

AppArmor 配置文件是位于 /etc/apparmor.d/ 目录下的文本文件。

这些文件以它们分析的可执行文件的完整路径命名,但将“/”替换为“.”。

例如,ping 命令位于 /bin/ping。等效的 AppArmor 配置文件将命名为 bin.ping

以下是 usr.sbin.mysqld 的 Apparmor 配置文件。/usr/sbin/mysqld 是应用此配置文件的二进制文件的绝对路径。

# cat usr.sbin.mysqld
# vim:syntax=apparmor
# Last Modified: Tue Jun 19 17:37:30 2007
#include <tunables/global>
/usr/sbin/mysqld {
  #include <abstractions/base>
  #include <abstractions/nameservice>
  #include <abstractions/user-tmp>
  #include <abstractions/mysql>
  #include <abstractions/winbind>
  capability dac_override,
  capability sys_resource,
  capability setgid,
  capability setuid,
  network tcp,
  /etc/hosts.allow r,
  /etc/hosts.deny r,
  /etc/mysql/*.pem r,
  /etc/mysql/conf.d/ r,
  /etc/mysql/conf.d/* r,
  /etc/mysql/*.cnf r,
  /usr/lib/mysql/plugin/ r,
  /usr/lib/mysql/plugin/*.so* mr,
  /usr/sbin/mysqld mr,
  /usr/share/mysql/** r,
  /var/log/mysql.log rw,
  /var/log/mysql.err rw,
  /var/lib/mysql/ r,
  /var/lib/mysql/** rwk,
  /var/log/mysql/ r,
  /var/log/mysql/* rw,
  /var/run/mysqld/mysqld.pid rw,
  /var/run/mysqld/mysqld.sock w,
  /run/mysqld/mysqld.pid rw,
  /run/mysqld/mysqld.sock w,
  /sys/devices/system/cpu/ r,
  # Site-specific additions and overrides. See local/README for details.
  #include <local/usr.sbin.mysqld>
}

在配置文件中,注释总是以# 号开头。#include 行加载文件。

以下是配置文件中使用的不同类型的规则。

  1. 路径条目:这包含有关允许应用程序访问哪些文件的信息。
  2. 能力条目:确定一个受限进程被允许使用的权限。
  3. 网络条目:确定连接类型。例如:tcp。对于数据包分析器网络可以是原始的或数据包等。

在花括号 {} 中,我们还有其他包含语句,还包括访问权限/模式 [read(r)/write (w)/execute (x) (k) 锁(需要 r 或 w,AppArmor 2.1 及更高版本)]各种文件和目录,包括正则表达式,用花括号 {} 对 include 语句进行通配有助于加载 Novell AppArmor 配置文件的组件。

禁用 AppArmor

如果某些进程按预期工作,并且如果您想调试 apparmor 配置文件是否是其原因,您可能需要暂时禁用 apparmor 进行调试。

# /etc/init.d/apparmor stop
 * Clearing AppArmor profiles cache  [OK]

执行上述命令只会清除配置文件缓存。为了卸载配置文件运行以下命令。

# /etc/init.d/apparmor teardown
 * Unloading AppArmor profiles [OK]
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。