当前位置: 首页 > news >正文

AppArmor(Application Armor)是 Linux 内核的一个安全模块

AppArmor(Application Armor)是 Linux 内核的一个安全模块,用于通过限制应用程序的权限来增强系统安全性。它通过定义每个程序可以访问的文件、网络端口、进程等资源,实现最小权限原则(Principle of Least Privilege),从而减少潜在的攻击面。


1. AppArmor 的核心概念

  • 基于路径的访问控制
    AppArmor 的规则基于文件路径(而非传统的 SELinux 的标签系统),配置更直观。

  • 配置文件(Profile)
    每个受保护的应用程序都有一个对应的配置文件(通常位于 /etc/apparmor.d/),明确允许或禁止其访问特定资源。

  • 两种模式

    • Enforce(强制模式):拒绝违反规则的访问并记录日志。

    • Complain(投诉模式):仅记录违规行为但不阻止(用于调试)。


2. AppArmor 的作用

  • 限制应用程序行为
    例如,禁止 Apache 访问用户家目录,或限制 MySQL 只能读写特定数据库文件。

  • 防御零日漏洞
    即使应用程序存在漏洞,AppArmor 也能阻止攻击者利用漏洞访问无关资源。

  • 容器安全
    在 Docker/LXC 等容器环境中,AppArmor 可限制容器的权限(如阻止容器访问宿主机设备)。


3. AppArmor vs SELinux

特性AppArmorSELinux
配置方式基于文件路径基于安全上下文(标签)
学习曲线较低(规则更直观)较高(需理解标签和策略语言)
默认启用Ubuntu、Debian、OpenSUSERHEL、Fedora、CentOS
适用场景桌面/服务器应用高安全需求环境(如政府、军事)

4. 常见操作命令

检查状态
sudo apparmor_status

输出示例:

apparmor module is loaded.
X profiles are loaded.
X profiles are in enforce mode.
X profiles are in complain mode.
禁用/启用
  • 临时禁用:

    sudo systemctl stop apparmor
  • 永久禁用(不推荐):

    sudo systemctl disable apparmor
切换模式
  • 将配置文件设为投诉模式(仅记录不阻止):

    sudo aa-complain /path/to/profile
  • 重新设为强制模式:

    sudo aa-enforce /path/to/profile
日志查看

AppArmor 的日志通常记录在 /var/log/syslog 或 /var/log/audit/audit.log(取决于系统配置):

sudo grep "apparmor" /var/log/syslog

5. 实际案例

问题场景
  • 某次启动 KVM 虚拟机时,AppArmor 阻止了 libvirtd 访问磁盘镜像:

    audit: type=1400 audit(1620000000.123:456): apparmor="DENIED" operation="open" profile="/usr/sbin/libvirtd" path="/var/lib/libvirt/images/vm.qcow2"
解决方案
  1. 查看当前规则

    sudo cat /etc/apparmor.d/usr.sbin.libvirtd
  2. 修改规则(添加允许访问的路径):

    sudo nano /etc/apparmor.d/usr.sbin.libvirtd

    在文件中添加:

    /var/lib/libvirt/images/** rw,
  3. 重新加载配置

    sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.libvirtd

6. 注意事项

  • 不要盲目禁用 AppArmor
    虽然禁用可以快速解决问题,但会降低系统安全性。建议优先调整规则。

  • 调试技巧
    遇到权限问题时,先将相关配置文件设为 complain 模式,通过日志定位具体拒绝项。

  • 与容器配合
    Docker 默认使用 AppArmor 限制容器,自定义规则需放在 /etc/apparmor.d/docker/


总结

AppArmor 是 Linux 中轻量级且易用的安全模块,适合通过配置文件限制应用程序权限。在虚拟化、容器和高安全需求场景中尤为有用。遇到权限问题时,结合日志和规则调整(而非直接关闭)是最佳实践。

http://www.xdnf.cn/news/668953.html

相关文章:

  • 比亚迪“双剑”电池获中汽中心权威认证,堪称“移动安全堡垒”。
  • HTTPS 协议:数据传输安全的坚实堡垒
  • 视频监控汇聚平台EasyCVR工业与安全监控:防爆摄像机的安全应用与注意事项
  • 大模型(5)——编码器(Encoder)、解码器(Decoder)
  • 分布式爬虫监控架构设计
  • Camera相机人脸识别系列专题分析之一:人脸识别系列专题SOP及理论知识介绍
  • 用Qt/C++玩转观察者模式:一个会聊天的设计模式
  • 32.第二阶段x64游戏实战-封包-公共call
  • [Windows] 视频配音:Krillin AI v1.1.4
  • 【NLP基础知识系列课程-Tokenizer的前世今生第一课】Tokenizer 是什么?为什么重要?
  • Mac redis下载和安装
  • 【Docker】存储卷
  • 阿里云配置安全组策略开放端口
  • 阿里云CDN和腾讯云CDN综合对比
  • 飞牛fnNAS之手机访问篇
  • OpenSSH 服务配置与会话保活完全指南
  • 参数/非参数检验和连续/离散/分类等变量类型的关系
  • 好坏质检分类实战(异常数据检测、降维、KNN模型分类、混淆矩阵进行模型评估)
  • Ubuntu20.04系统安装,使用系统盘安装
  • 在thinkphp5.0中。单表使用 model clone 时就会有问题。 需要使用 alias(), 否则会报错。
  • 防腐防爆配电箱:采用 304 不锈钢材质,抗腐蚀、抗冲击,适应恶劣工况
  • 第三届黄河流域网安技能挑战赛复现
  • 2025吉林CCPC 题解(前六题)
  • [图文]图6.3会计事项-Fowler分析模式的剖析和实现
  • docker 搭建php 开发环境 添加扩展redis、swoole、xdebug(1)
  • Qt不同布局添加不同控件
  • 模型评价指标介绍
  • Spark、Hadoop对比
  • Excel 操作 转图片,转pdf等
  • Go语言中的浮点数类型详解