如何检查 Linux 中 AppArmor 配置文件是否激活

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何检查 Linux 系统上 AppArmor 配置文件的状态。AppArmor 是一个安全模块,它使用配置文件来限制应用程序的操作,从而增强系统安全性。你将探索三种方法来确定 AppArmor 配置文件是否处于活动状态以及它们是如何配置的。

具体来说,你将使用 aa-status 命令列出已加载的配置文件及其模式(强制或警告),检查 /etc/apparmor.d 目录的内容以查看可用的配置文件,并检查 /sys/kernel/security 文件系统内的 AppArmor 状态。这些步骤将让你全面了解如何验证 AppArmor 的运行状态。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux(("Linux")) -.-> linux/VersionControlandTextEditorsGroup(["Version Control and Text Editors"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/UserandGroupManagementGroup -.-> linux/sudo("Privilege Granting") linux/VersionControlandTextEditorsGroup -.-> linux/nano("Simple Text Editing") subgraph Lab Skills linux/ls -.-> lab-558778{{"如何检查 Linux 中 AppArmor 配置文件是否激活"}} linux/cat -.-> lab-558778{{"如何检查 Linux 中 AppArmor 配置文件是否激活"}} linux/sudo -.-> lab-558778{{"如何检查 Linux 中 AppArmor 配置文件是否激活"}} linux/nano -.-> lab-558778{{"如何检查 Linux 中 AppArmor 配置文件是否激活"}} end

使用 aa-status 列出 AppArmor 配置文件

在这一步中,你将学习如何使用 aa-status 命令列出系统上的活动 AppArmor 配置文件。AppArmor 是一个安全模块,它通过将程序限制在一组有限的资源内来提供强制访问控制(MAC,Mandatory Access Control)。

你可以将 AppArmor 配置文件视为特定应用程序的安全策略。它们定义了应用程序被允许访问的文件、网络资源和其他系统功能。这有助于防止恶意软件或受攻击的应用程序造成广泛的破坏。

要查看当前已加载和强制执行的配置文件,请打开终端并输入以下命令:

sudo aa-status

你需要使用 sudo,因为检查 AppArmor 的状态需要管理员权限。

运行该命令后,你将看到类似以下的输出:

apparmor module is loaded.
...
profiles are loaded.
...
profiles are in enforce mode.
...
profiles are in complain mode.
...
processes are unconfined.
...

该输出提供了 AppArmor 状态的摘要:

  • apparmor module is loaded:表示 AppArmor 内核模块已激活。
  • profiles are loaded:显示已加载到内核中的 AppArmor 配置文件的总数。
  • profiles are in enforce mode:列出正在积极限制相关应用程序行为的配置文件。如果应用程序尝试执行其强制配置文件不允许的操作,该操作将被阻止,并生成一条日志消息。
  • profiles are in complain mode:列出正在监控相关应用程序行为但不强制执行限制的配置文件。如果应用程序尝试执行其警告配置文件不允许的操作,该操作将被允许,但会生成一条日志消息。此模式对于开发和测试配置文件很有用。
  • processes are unconfined:显示当前未由 AppArmor 配置文件管理的正在运行的进程数量。

理解 aa-status 的输出是管理 AppArmor 和了解系统安全状况的第一步。

点击 继续 进入下一步。

检查 /etc/apparmor.d 中的配置文件

在上一步中,你使用 aa-status 命令查看了已加载的 AppArmor 配置文件列表。现在,让我们来探究这些配置文件在文件系统中的存储位置。

AppArmor 配置文件通常位于 /etc/apparmor.d/ 目录中。该目录包含配置文件,这些文件是纯文本文件,用于定义每个受限制应用程序的规则。

要列出该目录的内容,请使用 ls 命令:

ls /etc/apparmor.d/

你将看到一个文件和目录列表。该目录中的每个文件(不在 abstractionstunables 等子目录中)通常代表一个应用程序的特定 AppArmor 配置文件。

示例输出:

bootchartd             usr.sbin.tcpdump
...

这些文件名通常对应于它们旨在限制的可执行文件的路径。例如,usr.sbin.tcpdump/usr/sbin/tcpdump 命令的配置文件。

你可以使用像 nano 这样的文本编辑器查看配置文件的内容。让我们查看 usr.sbin.tcpdump 的配置文件。输入以下命令:

nano /etc/apparmor.d/usr.sbin.tcpdump

这将在 nano 编辑器中打开配置文件。你将看到定义文件访问规则、网络权限和其他限制的行。现在不必担心理解每一行;目标只是了解配置文件的结构。

要退出 nano,请按 Ctrl + X。如果你进行了任何更改,它会询问你是否要保存。按 N 表示否,然后按 Enter 确认。

探索 /etc/apparmor.d/ 中的文件能让你深入了解应用于系统中不同应用程序的特定安全策略。

点击 继续 以继续。

检查 /sys/kernel/security 中的 AppArmor 状态

除了 aa-status 命令外,你还可以通过 /sys 文件系统直接检查 AppArmor 的状态。/sys 文件系统提供了一个访问内核数据结构的接口,其中包含了像 AppArmor 这样的安全模块的相关信息。

/sys 中与 AppArmor 状态相关的目录是 /sys/kernel/security/apparmor/

让我们列出这个目录的内容,看看有哪些可用信息:

ls /sys/kernel/security/apparmor/

你会看到一些文件和目录,它们提供了关于 AppArmor 状态的详细信息,比如已加载的配置文件、策略规则和强制状态等。

示例输出:

features  profiles  policy  revision  ...

其中一个特别有用的文件是 profiles。你可以使用 cat 命令查看其内容:

cat /sys/kernel/security/apparmor/profiles

这个文件列出了当前已加载的 AppArmor 配置文件及其状态(例如 enforcecomplainunconfined)。输出与你使用 aa-status 命令看到的配置文件列表类似,但这是对内核状态的直接查看。

示例输出:

/usr/sbin/tcpdump (enforce)
...

检查 /sys/kernel/security/apparmor/ 目录及其文件,为你提供了一种更底层的方式来了解 AppArmor 的状态,这对于调试或高级分析很有帮助。

你现在已经学习了三种不同的方法来检查 Linux 系统上 AppArmor 配置文件的状态和存在情况。

点击 继续 完成实验。

总结

在本次实验中,你学习了如何检查 Linux 系统中 AppArmor 配置文件是否处于激活状态。你首先使用 sudo 权限运行 aa-status 命令,列出已加载的 AppArmor 配置文件并了解它们的状态,包括是处于强制(enforce)模式还是警告(complain)模式。该命令能快速让你了解 AppArmor 模块的状态以及正在管理进程的配置文件数量。

本次实验还介绍了如何检查 /etc/apparmor.d 目录,以查看可用的 AppArmor 配置文件,这些文件代表了不同应用程序的安全策略。最后,你学习了如何检查 /sys/kernel/security 路径,以确认 AppArmor 内核模块在系统安全框架中的存在和状态。