32 入门 #
请仔细考虑以下事项,以便为在系统上成功部署 AppArmor 做好准备:
确定要构建配置文件的应用程序。有关详细信息,请参见第 32.3 节 “选择要构建配置文件的应用程序”。
根据第 32.4 节 “构建和修改配置文件”中的简要说明构建需要的配置文件。检查结果并在必要时调整配置文件。
每当环境发生变化或者您需要对 AppArmor 的报告工具记录的安全事件作出反应时,请更新您的配置文件。有关详细信息,请参见 第 32.5 节 “更新您的配置文件”.
32.1 安装 AppArmor #
在任何安装的 SUSE® Linux Enterprise Server 上,无论安装了哪些软件集,默认都会安装并运行 AppArmor。AppArmor 的完整功能实例需要下面列出的软件包:
apparmor-docs
apparmor-parser
apparmor-profiles
apparmor-utils
audit
libapparmor1
perl-libapparmor
yast2-apparmor
如果您的系统上未安装 AppArmor,请安装 apparmor
软件集以安装完整的 AppArmor。请使用 YaST 软件管理模块进行安装,或者在命令行上使用 Zypper:
>
sudo
zypper in -t pattern apparmor
32.2 启用和禁用 AppArmor #
在任何全新安装的 SUSE Linux Enterprise Server 上,默认都会将 AppArmor 配置为运行状态。可以通过两种方式切换 AppArmor 的状态:
- 使用 YaST 服务管理器
通过在系统引导时所执行的脚本序列中去除或添加引导脚本来禁用或启用 AppArmor。重引导时将应用状态更改。
- 使用 AppArmor 配置窗口
可以使用 YaST AppArmor 控制面板关闭或打开 AppArmor,以在运行中的系统上切换其状态。在控制面板中所执行的更改将即时应用。控制面板会触发 AppArmor 停止或启动事件,并在系统引导序列中去除或添加它的引导脚本。
要通过从系统引导时所执行的脚本序列中去除 AppArmor 永久将其禁用,请执行以下操作:
启动 YaST。
选择
› 。在服务列表中单击
apparmor
所在的行将其选中,然后在窗口的下半部分单击 。在apparmor
行中检查 是否已更改为 。单击
进行确认。
AppArmor 在重引导时不会初始化,并会保持非活动状态,直到您重新将其启用。使用 YaST 工具重新启用服务的操作与禁用服务类似。
使用“AppArmor 配置”窗口在运行中的系统上切换 AppArmor 的状态。应用这些更改并重引导系统后,这些更改将生效。要切换 AppArmor 的状态,请执行以下操作:
启动 YaST,选择
,然后在主窗口中单击 。选中AppArmor,或取消选中该选项以禁用 AppArmor。
以启用单击
窗口中的 。
32.3 选择要构建配置文件的应用程序 #
您只需保护在您的特定设置中会受到攻击的程序,因此只需为运行的程序使用配置文件。使用以下列表来确定候选程序:
网络代理 |
Web 应用程序 |
Cron 作业 |
要了解哪些进程当前以开放网络端口运行并且可能需要配置文件来进行限制,请以 root
身份运行 aa-unconfined
。
aa-unconfined
的输出 #19848 /usr/sbin/cupsd not confined 19887 /usr/sbin/sshd not confined 19947 /usr/lib/postfix/master not confined 1328 /usr/sbin/smbd confined by '/usr/sbin/smbd (enforce)'
上例中标有 not
confined
的每个进程都可能需要定制的配置文件来进行限制。标有 confined by
的进程已受 AppArmor 保护。
有关如何选择要构建配置文件的正确应用程序的详细信息,请参见第 33.2 节 “确定要使其免疫的程序”。
32.4 构建和修改配置文件 #
SUSE Linux Enterprise Server 上的 AppArmor 随附了预配置的配置文件集,用于最重要的应用程序。此外,您也可使用 AppArmor 来为所需的任何应用程序创建您自己的配置文件。
管理配置文件有两种方式。一种是使用 YaST AppArmor 模块提供的图形前端,另一种是使用 AppArmor 套件自身提供的命令行工具。主要差别是,YaST 仅支持 AppArmor 配置文件的基本功能,而命令行工具可让您以更细微的方式更新/调整配置文件。
对每个应用程序执行以下步骤以创建配置文件:
以
root
身份运行aa-genprof
PROGRAM_NAME,让 AppArmor 创建应用程序配置文件的大致轮廓。或
通过运行
› › › 并指定要构建配置文件的应用程序的完整路径,来创建基本配置文件的轮廓。系统会创建新的基本配置文件的轮廓并将其置于学习模式,这意味着,它会记录您正在执行的程序的每个活动,但目前还不会对程序进行限制。
运行应用程序的所有操作,让 AppArmor 完全了解程序的每个活动。
在 aa-genprof 中键入 S,以便让 AppArmor 分析在步骤 2 中生成的日志文件。
AppArmor 扫描在程序运行期间记录的日志,然后请求您为每个记录的事件设置访问权限。请对每个文件进行设置或使用通配。
依据应用程序的复杂性,可能必须重复步骤 2和步骤 3。限制应用程序,在限制条件下执行应用程序并处理任何新的日志事件。要准确限制应用程序功能的完整范围,您可能必须经常重复此过程。
完成
aa-genprof
后,您的配置文件即设置为强制模式。系统会应用该配置文件,而 AppArmor 将根据该配置文件限制应用程序。如果某应用程序的现有配置文件处于控诉模式,对此应用程序启动
aa-genprof
时,此配置文件在退出此学习周期后仍会处于学习模式。有关更改配置文件模式的更多信息,请参见第 37.7.3.2 节 “aa-complain — 进入控诉或学习模式”和第 37.7.3.6 节 “aa-enforce — 进入强制模式”。
使用您限制的应用程序执行所需的每一项任务,以测试您的配置文件设置。正常情况下,受限制的应用程序会顺利运行,您完全不会察觉到 AppArmor 活动。但是,如果您注意到应用程序的某些行为异常,请检查系统日志以查看 AppArmor 对应用程序的限制是否过于严格。根据系统上所使用的日志机制,可从以下几个位置查找 AppArmor 日志项:
/var/log/audit/audit.log
|
命令 journalctl | grep -i apparmor
|
命令 dmesg -T
|
要调整配置文件,可按第 37.7.3.9 节 “aa-logprof — 扫描系统日志”所述再次分析与此应用程序相关的日志消息。发出提示时,请确定访问权限或限制。
有关配置文件构建和修改的更多信息,请参见第 34 章 “配置文件组件和语法”、第 36 章 “使用 YaST 构建和管理配置文件”和第 37 章 “从命令行构建配置文件”。
32.5 更新您的配置文件 #
软件和系统配置会随着时间的流逝而更改。因此,可能需要不定期对 AppArmor 的配置文件设置进行一定的微调。AppArmor 会检查系统日志以查找策略违例或其他 AppArmor 事件,并使您能够相应地调整配置文件。不在任何配置文件定义范围内的任何应用程序行为均可通过 aa-logprof
解决。有关详细信息,请参见第 37.7.3.9 节 “aa-logprof — 扫描系统日志”。