AppArmor,也称为应用盔甲(Application Armor),是一个 Linux 内核安全模块,可以为 Ubuntu 应用程序提供强制访问控制。它是灵活而强大的安全工具,通过将应用程序限制在系统有限的资源集合中,来预防软件漏洞和恶意攻击。
AppArmor 官方网站
AppArmor 的开发可以追溯到 2000 年初,它被作为替代传统 Unix/Linux 访问控制模型的方案。Linux 作为服务器平台在当时越来越受欢迎,迫切需要更好的安全解决方案,以保护免受恶意软件和未经授权访问等威胁。为此,启动了 AppArmor 项目,并因其易于使用和灵活的配置选项而迅速走红。
现在,AppArmor 仍然作为保护 Ubuntu 应用程序安全的重要工具。它对需要确保敏感数据隐私和安全,防止对敏感系统进行未经授权访问的组织和个人尤其重要。AppArmor 安全模型可以为不同应用程序定义配置文件,为应用程序指定允许访问的权限和资源。这样一来,即使应用被攻破,也只能对配置文件中定义的资源造成有限损害。
Ubuntu 系统中 AppArmor 的特性
- 灵活的配置:允许为不同应用程序创建自定义配置文件,可以对安全策略进行微调,以满足特定要求。
- 强制访问控制:实施强制访问控制,应用程序只能访问(配置文件中定义)被允许的资源。
- 易于使用:非常易于使用,配置方法简单直观。
- 防范恶意攻击:通过将应用程序限制在有限的资源和权限中,以防范恶意攻击。
- 改善系统安全性:将应用程序限制在有限的资源上,AppArmor 提高了系统整体安全性,并降低了未经授权访问的风险。
- 与其他安全工具的良好互操作性:可以与其他安全工具(如 SELinux 和防火墙)配合使用,以提供额外的保护层。
- 与 Linux 内核集成:与 Linux 内核集成,并提供高效、可靠的安全实践。
下面系统极客将为大家介绍,如何在 Ubuntu 管理 AppArmor 服务和配置文件,以及它的一些常规操作和配置。
安装所需的软件包
为了充分利用 AppArmor 的全部功能,需要安装apparmor-utils软件包,请打开「终端」并运行以下命令:
sudo apt install apparmor-utils apparmor-notify apparmor-profiles apparmor-profiles-extra
查看 AppArmor 服务状态
默认情况下,在安装 Ubuntu 系统时就会安装并启用 Apparmor 服务。要验证其状态,请在「终端」中执行以下命令:
systemctl status apparmor
查看 AppArmor 服务状态
以下是一些 AppArmor 与 systemd 一起工作的常用命令:
- 停止 Apparmor 服务
sudo systemctl stop apparmor
- 启动 Apparmor 服务
sudo systemctl start apparmor
- 禁止 Apparmor 随 Ubuntu 系统启动
sudo systemctl disable apparmor
- 在 Ubuntu 系统启动时启用 Apparmor(默认):
sudo systemctl enable apparmor
- 重启 Apparmor 服务:
sudo systemctl restart apparmor
- 重新加载 Apparmor
sudo systemctl reload apparmor
检查已加载的 AppArmor 配置文件
在更改 AppArmor 配置之前,检查配置文件状态非常重要。请在「终端」中运行如下命令:
sudo apparmor_status
检查配置文件
上述命令列出了当前 Ubuntu 系统中的 AppArmor 状态,包括:
- 加载了哪些配置文件
- 运行的模式
- 配置文件相关联的进程数量
检查 AppArmor 配置文件状态的另一种方法是使用aa-status命令,它可以提供运行状态更为详细和准确的输出:
sudo aa-status
检查配置文件
上述命令将显示 Ubuntu 中所有已加载的配置文件状态,包括:配置文件的名称、运行模式(例如强制模式、投诉模式或不受限制)以及与每个配置文件相关联的进程数量。
在进行更改配置之前,强烈建议先进行备份:
sudo cp -R /etc/apparmor.d /etc/apparmor.d.bak
此命令将在/etc/apparmor.d.bak目录中创建配置文件的备份副本,以便在出问题时可以快速还原。
禁用 AppArmor 配置文件
可以在不禁用整个服务的情况下,禁用特定 AppArmor 配置文件:
1导航到/etc/apparmor.d目录:
cd /etc/apparmor.d
2使用ls命令列出/etc/apparmor.d目录中的配置文件:
ls -s
查看配置文件
3要禁用某个配置文件,可以使用以下命令:
sudo aa-disable /etc/apparmor.d/
例如,要禁用usr.sbin.dnsmasq配置文件,可以使用以下命令:
sudo aa-disable /etc/apparmor.d/usr.sbin.dnsmasq
禁用配置文件
命令执行后,更改会立即生效。
4要查看当前已禁用的规则列表,可以导航到/etc/apparmor.d/disable目录并使用ls命令查看:
ls /etc/apparmor.d/disable
查看已禁用配置文件
上述命令会列出所有已禁用的配置文件列表。
启用 AppArmor 配置文件
要重新启用某个配置文件,可以使用以下命令:
sudo aa-enforce /etc/apparmor.d/
例如,要将前文中禁用的usr.sbin.dnsmasq配置文件重新启用,可以执行:
sudo aa-enforce /etc/apparmor.d/usr.sbin.dnsmasq
启用配置文件
Ubuntu 常用 AppArmor 命令汇总
下面介绍一些最 Ubuntu 系统中常用的 AppArmor 命令及其用法:
aa-genprof 命令
aa-genprof命令可以基于当前系统活动生成一个新的 AppArmor 配置文件,它记录了所有应用程序的系统调用,并基于此日志数据创建新的配置文件。使用它,可以为尚未定义配置文件的新应用程序创建配置文件。
例如,要为 Firefox 生成新的配置文件,可以运行以下命令:
sudo aa-genprof firefox
aa-enforce 命令
aa-enforce命令可以在 Ubuntu 系统中强制执行 AppArmor 配置。当对配置文件进行了更改,并希望立即强制执行新的策略,而无需重启系统时,就可以使用这个命令。
要强制执行 AppArmor 配置文件,请运行以下命令:
sudo aa-enforce /etc/apparmor.d/*
或者单独指定某个配置文件:
sudo aa-enforce /etc/apparmor.d/
aa-disable 命令
aa-disable命令用于禁用特定的 AppArmor 配置文件。当禁用配置文件时,它所规定的限制和权限对受其管辖的应用程序将不再生效。
例如,可以运行以下命令来禁用 Firefox 的配置文件:
sudo aa-disable /etc/apparmor.d/firefox
禁用配置文件是一种临时更改,如果重启 Ubuntu 系统或重启 AppArmor 服务,则该配置文件将被重新启用。
aa-complain 命令
aa-complain命令会将一个配置文件切换到投诉模式。在这种模式下,AppArmor 仍会执行该配置文件,但不会限制对受限资源的访问,而是将日志记录到 syslog 中。该命令常用于测试和调试。
sudo aa-complain /etc/apparmor.d/usr.sbin.cupsd
aa-remove-unknown 命令
aa-remove-unknown命令用于移除 Ubuntu 系统中未知应用程序的 AppArmor 配置文件。需要清理配置文件并删除不再使用的配置文件时,就可以使用这个命令:
sudo aa-remove-unknown
总的来说,在 Ubuntu 中管理 AppArmor 服务和配置文件非常简单和直观。通过本文介绍的步骤,可以轻松管理系统的安全性,并控制哪些应用程序或服务受到保护。
通过本文内容,您可以基本了解 AppArmor 安全系统及其工作原理。这些知识在系统管理、安全管理和软件开发等多种场景中都非常有用。无论是经验丰富的 Linux 用户还是新手,了解如何管理 AppArmor 服务和配置文件都是必备的重要技能。