尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Ubuntu 中的 AppArmor

Ubuntu 中的 AppArmor
📅 发布时间:2026/6/21 6:24:56
好的,我们来详细介绍一下 Ubuntu 中的 AppArmor。

1. AppArmor 是什么?

AppArmor是一个内置于 Linux 内核的强制访问控制系统。可以把它理解成一个应用程序的“安全带”或“安全监狱”。它的核心思想是 “只允许程序做它该做的事”。
  • 传统 Linux 权限模型的问题: 一个程序(例如,一个网络服务或浏览器)如果以用户权限或 root 权限运行,它基本上可以访问该用户/root 有权访问的任何文件。如果一个程序被黑客攻破(例如,通过一个漏洞),攻击者就能利用该程序的权限做任何事。
  • AppArmor 的解决方案: 为每个应用程序定义一个安全配置文件。这个配置文件明确规定了:
    • 这个程序可以读写哪些文件/目录。
    • 这个程序可以访问哪些网络端口(和协议)。
    • 这个程序可以执行哪些其他程序。
如果一个程序的行为超出了其配置文件的规定,AppArmor 会强制阻止这个行为,并将违规记录到系统日志中,从而极大地限制了潜在攻击所能造成的破坏。

2. AppArmor 的核心概念:配置文件

AppArmor 通过配置文件来工作。配置文件主要有两种模式:
  1. 强制执行模式: 严格遵守配置文件规则。违反规则的操作将被阻止。
  2. 投诉模式: 在此模式下,AppArmor 不会阻止违反规则的操作,但会将这些操作记录到日志中(通常是 /var/log/syslog或 /var/log/audit/audit.log)。这个模式非常有用,用于为现有应用程序“学习”和生成新的配置文件。
配置文件通常存放在 /etc/apparmor.d/目录下。文件名通常与二进制程序的路径对应,例如 /usr/sbin/nginx的配置文件可能是 usr.sbin.nginx。

3. AppArmor 在 Ubuntu 中的现状

AppArmor 是 Ubuntu 默认的安全组件,这一点非常重要。
  • 自 Ubuntu 7.04 以来,AppArmor 就被包含在发行版中。
  • 自 Ubuntu 9.10 以来,许多关键的系统服务(如 Apache, Nginx, MySQL, DNSmasq, CUPS 等)都已经预装了现成的、经过良好测试的 AppArmor 配置文件。
  • Ubuntu Server 和 Ubuntu Desktop 都默认启用 AppArmor。
你可以通过以下命令快速检查 AppArmor 的状态:
 
sudo apparmor_status
 
 
这个命令会列出所有已加载的配置文件,并显示它们当前是处于“强制执行”模式还是“投诉”模式。

4. 基本命令和管理操作

以下是一些常用的 AppArmor 管理命令:
命令作用
sudo systemctl reload apparmor 重新加载所有配置文件(在修改配置文件后使用)。
sudo apparmor_status 查看 AppArmor 状态和已加载的配置文件列表。
sudo aa-complain /path/to/bin 将某个程序的配置文件设置为投诉模式。例如:sudo aa-complain /usr/sbin/nginx
sudo aa-enforce /path/to/bin 将某个程序的配置文件设置为强制执行模式。例如:sudo aa-enforce /usr/sbin/nginx
sudo aa-unconfined 列出所有已建立网络连接但没有被 AppArmor 限制的进程。这对于发现潜在的安全风险很有用。

5. 一个简单的配置文件示例

让我们看一个非常简单的配置文件例子,假设是给一个叫 /usr/local/bin/my_app的程序用的:
 
# /etc/apparmor.d/usr.local.bin.my_app# 包含一些常见的抽象规则,如文件读、写、执行等能力
#include <tunables/global># 配置文件头,指定二进制文件路径和启用抽象规则
/usr/local/bin/my_app {#include <abstractions/base>#include <abstractions/nameservice> # 允许基本的网络查询(DNS)# 程序需要的能力capability sys_admin,# 文件系统规则/etc/my_app/config.txt r, # 只读权限/var/log/my_app.log w,    # 写入权限/opt/my_app/data/** rw,   # 对目录的读写权限(** 表示递归)# 网络规则network inet stream,      # 允许使用 IPv4 流协议(TCP)network inet dgram,       # 允许使用 IPv4 数据报协议(UDP)# 允许执行 /bin/bash,但不继承环境(不限制 bash 本身)/bin/bash ix,
}

 


 
 
规则后缀说明:
  • r: 读
  • w: 写
  • rw: 读写
  • x: 执行
  • px: 执行另一个程序,并为该程序加载一个独立的配置文件。
  • ix: 执行另一个程序,但不为其加载配置文件(继承当前环境)。
  • ux: 执行另一个程序,但不限制它(危险,仅在必要时使用)。
  • l: 链接

6. AppArmor 与 SELinux 的对比

AppArmor 常被拿来与另一个著名的 MAC 系统 SELinux比较。
特性AppArmorSELinux
配置方法 路径基于路径。规则直接指定文件路径(如 /var/www/html/*)。更直观,易于理解和调试。 基于标签。每个文件和进程都有一个安全标签(上下文)。规则基于标签匹配。更强大但更复杂。
学习曲线 相对简单。配置文件更易于阅读和编写。 相对陡峭。需要理解类型强制、上下文等概念。
默认使用 Ubuntu, openSUSE等发行版的默认选择。 Red Hat, Fedora, CentOS等发行版的默认选择。
灵活性 对于常见用例足够强大和灵活。 理论上具有更强的表达能力和更细粒度的控制。
简单来说,AppArmor 的设计哲学是“简单实用”,而 SELinux 则追求“全面和严谨”。对于大多数用户和管理员来说,AppArmor 更容易上手和管理。

总结

AppArmor 是 Ubuntu 提供的一个强大而实用的安全层,它通过为应用程序设置“行为边界”来有效遏制漏洞的影响。作为 Ubuntu 用户,你已经在不知不觉中享受了它带来的安全保护。了解其基本概念和管理命令,可以帮助你更好地调试应用程序的权限问题,并进一步提升系统的安全性。

相关新闻

  • 2025年知名的铝方通格栅厂家最新权威推荐排行榜
  • 2025年阻燃14mm尼龙隔热条厂家最新推荐排行榜
  • 2025年比较好的高压保温风机厂家最新权威实力榜

最新新闻

  • Windows零门槛本地部署Claude Code+Minimax实战指南
  • ControlFoley:统一可控的视频到音频生成框架,解决跨模态冲突
  • Hanime1Plugin完整指南:如何在Android设备上实现纯净观影体验
  • 终极Windows驱动管理指南:DriverStore Explorer完整使用教程
  • PNX2015视频解码芯片寄存器配置实战:从时序到ITU656流生成
  • Linux 系统编程 · 第 34 章:定时器与时间

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号