您可能在使用 Ubuntu 时听说过 AppArmor,但由于它不是显示在应用程序菜单中且不以任何图形形式出现的应用程序,因此有些人可能不知道它的作用以及为什么它对您的系统至关重要。 简而言之,AppArmor 是一个安全模块,它将单个程序限制在一组列出的文件和功能中,这样它们就不会对您的系统造成严重破坏。
了解 SELinux 和 AppArmor 之间的区别,以保护您的 Linux 系统。
内容
- 什么是 AppArmor?
- AppArmor 的工作原理
- 检查您的 AppArmor 状态
- 查找禁用的 AppArmor 配置文件
- 启用和禁用 AppArmor 配置文件
- AppArmor 配置文件是什么样的?
- 创建您自己的配置文件以锁定应用程序
- 停止和重新启动 AppArmor
- 经常问的问题
什么是 AppArmor?
AppArmor 是一个强制访问控制 (MAC) 系统,它将程序限制在一组有限的资源中。 它将程序限制为一组文件、属性和功能,以便它不会深入系统并造成严重破坏(除非获得许可)。 与 Windows 的用户帐户控制 (UAC) 模型不同,AppArmor 将访问控制属性绑定到程序本身。
AppArmor 的工作原理
AppArmor 在内核级别工作(如果您正在编译自己的内核,请查看这些提示)并在初始启动期间加载。 AppArmor 通过 Profiles 处理权限:一组确定程序可以做什么和不能做什么的规则。
配置文件可以运行两种模式:强制执行和投诉。 Enforcement 模式是在配置文件中定义的策略的严格执行,并报告策略违反尝试。 投诉模式只会报告违反政策的尝试,不会强制执行政策。 大多数配置文件在强制模式下加载,尽管在投诉模式下也可以加载大量第三方配置文件。
检查您的 AppArmor 状态
如果您使用的是 Ubuntu 7.04 或更高版本,则默认安装 AppArmor 并在您启动计算机时加载。 要检查 AppArmor 状态,请在终端中键入以下命令:
sudo apparmor_status
下图显示了您将看到的内容。
在我的系统中,您可以看到在强制模式下加载了 36 个配置文件。
查找禁用的 AppArmor 配置文件
AppArmor 有几个预加载的配置文件,其中一些默认情况下是禁用的。 您可以在“/etc/apparmor.d/disable”文件夹中查看这些内容。 在最新版本的 AppArmor 中,您可以看到 rsyslogd 配置文件未启用。

默认情况下禁用此配置文件,因为用户经常对 rsyslogd 进行配置更改,使其与 AppArmor 不兼容。
小费:了解怎样使用 Webmin 远程管理 Ubuntu 机器。
启用和禁用 AppArmor 配置文件
虽然您可以在系统上加载多个配置文件,但每个配置文件都可以单独启用或禁用。 例如,您可以启用前面提到的 rsyslogd 配置文件。 请按照以下说明了解怎样操作。
打开终端并输入:
sudo apt install apparmor-utils
这将安装在本教程中运行后续命令所需的工具。 要启用配置文件,请输入:
sudo aa-enforce /etc/apparmor.d/usr.sbin.rsyslogd
要再次禁用它:
sudo ln -s /etc/apparmor.d/usr.sbin.rsyslogd /etc/apparmor.d/disable/ sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.rsyslogd
AppArmor 配置文件是什么样的?
虽然 AppArmor 配置文件听起来像是复杂的软件,但它们实际上是一个简单的文本文件,其中包含说明应用程序可以访问哪些文件夹和目录的文件路径。 您可以轻松地双击“/etc/apparmor.d”文件夹中的任何配置文件以在文本编辑器中打开它。
Rsyslogd 配置文件将如下图所示。

创建您自己的配置文件以锁定应用程序
Ubuntu 在保护您方面已经做得很好,但是如果您想限制不受 Ubuntu 保护的自定义应用程序,您可以创建自己的 AppArmor 配置文件来锁定该应用程序。 这在应用程序可能在后台运行的服务器中特别有用。
笔记:在您创建自己的配置文件之前,最好先查看现有的 AppArmor 配置文件库,以检查您的应用程序的配置文件是否可用。 你也可以安装 apparmor-profiles
获取额外的配置文件列表。
运行以下命令以启动分析:
sudo aa-genprof /path/to/application
/path/to/application
是要分析的应用程序的文件路径。 默认应用程序文件夹是“/usr/bin”,但可能会因应用程序和安装方法而异,例如“/snap/bin”。

让终端保持运行,启动您要配置的应用程序。 为了这 example,我正在使用 Krita。 像往常一样使用该应用程序。
对于您在应用程序上执行的每项操作,请返回终端并按 Shift + S 以使其扫描更改。

从这里,您可以看到应用程序正在访问的路径以及操作的严重性。 选择“允许 (A)”或“拒绝 (D)”该操作。
继续对应用程序上执行的其余操作执行此操作。 为了获得最佳结果,最好在开始分析之前计划好您的操作列表。
最后,完成后,按 Shift + F 完成分析,按 Shift + S 保存配置文件。
创建后,配置文件将保存在“/etc/apparmor.d”文件夹中,并将以强制模式加载。
编辑配置文件
要编辑新创建的配置文件,请使用以下命令:
sudo aa-logprof /etc/apparmor.d/<profile>
在这种情况下, <profile>
应该是您使用 aa-genprof
较早的命令。
AppArmor 将扫描日志条目并允许您更改配置文件。
停止和重新启动 AppArmor
如果由于某种原因,您需要停止 AppArmor,您可以通过以下方式轻松完成:
sudo service apparmor stop
您可以通过使用以下命令检查状态来确认它已停止:
systemctl status apparmor

并再次启动 AppArmor:
sudo service apparmor restart
如果再次检查状态,您将看到绿灯指示 AppArmor 正在运行。

如果您正在运行自己的服务器,请查看这些提示以保护您的 Linux 服务器。
经常问的问题
为什么 AppArmor 默认禁用 rsyslog?
rsyslog 是可配置的软件,用于处理系统日志记录,包括接收、转换和将日志消息传递到不同的目的地。 它的 AppArmor 配置文件“usr.sbin.rsyslogd”被包括在内,但默认情况下是禁用的。
根据 Canonical 工程师 Jamie Strandboge 的说法,发生这种情况是因为 rsyslog 的可配置性非常高,以至于配置文件可能无法始终正常工作。
AppArmor 版本 2 和 3 之间有什么区别?
AppArmor 3.x 是 AppArmor 的最新版本,于 2020 年 10 月 1 日发布,是一次重大扩展。 AppArmor 2.x 已经很老了,大约在 2007 年发布。看来 2.x 系列将不再有任何积极的开发。 最新版本 2.13.6 于 2020 年 12 月发布,AppArmor 2.14 在开发网站上被列为“已取消”。 AppArmor 3.0.7 于 2022 年 8 月 9 日发布。
如果我有 AppArmor,我还需要防病毒软件吗?
是的,即使您运行了 AppArmor,您仍然需要防病毒程序。 两者执行完全不同的操作,相辅相成。 在 Ubuntu 上安装防病毒软件是件好事,尽管 Linux 系统较少受到恶意软件创建者的攻击。
什么是二进制 blob,为什么它们存在安全风险? 了解答案以及 Linux-Libre 怎样为您提供比普通 Linux 更好的保护。
Brandon Li 的所有截图。
订阅我们的新闻!
我们的最新教程直接发送到您的收件箱
注册所有时事通讯。 注册即表示您同意我们的隐私政策并且欧洲用户同意数据传输政策。 我们不会共享您的数据,您可以随时取消订阅。 订阅