Ubuntu Apparmor 简介以及如何配置 Apparmor 配置文件
AppArmor 是一个强制访问控制或 MAC 系统。
它使用 Linux 安全模块来限制程序。AppArmor 设置了一组默认应用程序配置文件来保护 Linux 服务。
您还可以通过自己创建配置文件来保护系统上运行的任何其他应用程序。
在 Ubuntu 中,默认情况下会安装并启用 AppArmor。系统启动时会加载 apparmor 配置文件。
AppArmor 在以下两种类型的配置文件模式下运行:
- 强制 - 在强制模式下,系统开始强制执行规则并在 syslog 或 auditd 中报告违规尝试(仅当安装了 auditd 时)并且不允许操作。
- 投诉 - 在投诉模式下,系统不执行任何规则。它只会记录违规尝试。
其他配置文件可以在 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 行加载文件。
以下是配置文件中使用的不同类型的规则。
- 路径条目:这包含有关允许应用程序访问哪些文件的信息。
- 能力条目:确定一个受限进程被允许使用的权限。
- 网络条目:确定连接类型。例如: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]
- 点赞
- 收藏
- 关注作者
评论(0)