第138集:AppArmor 基础

教学目标

  • 了解AppArmor的基本概念和工作原理
  • 掌握AppArmor的核心组件和配置文件结构
  • 学会使用AppArmor的基本管理命令
  • 理解AppArmor的安全策略类型和工作模式
  • 能够查看和管理AppArmor配置文件

主要知识点

  • AppArmor概述
  • AppArmor核心概念
  • AppArmor工作原理
  • AppArmor配置文件结构
  • AppArmor管理命令
  • AppArmor工作模式
  • AppArmor安全策略类型
  • AppArmor日志管理

实用案例分析

案例1:查看AppArmor状态和配置文件

场景描述:需要了解系统中AppArmor的运行状态和已加载的配置文件。

操作步骤

  1. 查看AppArmor状态

    # 查看AppArmor状态
    sudo apparmor_status
    
    # 查看AppArmor服务状态
    sudo systemctl status apparmor
  2. 查看已加载的配置文件

    # 查看已加载的配置文件
    sudo apparmor_status | grep profiles
    
    # 查看配置文件目录
    ls -la /etc/apparmor.d/
  3. 查看特定应用的配置文件

    # 查看SSH服务的AppArmor配置
    cat /etc/apparmor.d/usr.sbin.sshd
    
    # 查看Apache服务的AppArmor配置
    cat /etc/apparmor.d/usr.sbin.apache2

案例2:管理AppArmor配置文件模式

场景描述:需要调整特定应用的AppArmor配置文件模式,从强制模式切换到投诉模式进行测试。

操作步骤

  1. 查看当前配置文件模式

    # 查看所有配置文件的模式
    sudo aa-status
    
    # 查看特定配置文件的模式
    sudo aa-status | grep sshd
  2. 切换配置文件到投诉模式

    # 切换到投诉模式
    sudo aa-complain /etc/apparmor.d/usr.sbin.sshd
    
    # 验证模式变更
    sudo aa-status | grep sshd
  3. 切换配置文件到强制模式

    # 切换到强制模式
    sudo aa-enforce /etc/apparmor.d/usr.sbin.sshd
    
    # 验证模式变更
    sudo aa-status | grep sshd

案例3:理解AppArmor配置文件结构

场景描述:需要分析一个AppArmor配置文件的结构,了解其规则组成。

操作步骤

  1. 分析基本配置文件结构

    # 查看一个简单的配置文件示例
    cat /etc/apparmor.d/bin.ping
  2. 理解配置文件语法

    • 配置文件以应用程序路径命名
    • 规则以权限和路径的形式表示
    • 权限包括:r(读取)、w(写入)、x(执行)、m(内存映射执行)等
    • 路径可以使用通配符
  3. 查看配置文件示例解析

    # 配置文件示例解析
    # 以 /etc/apparmor.d/bin.ping 为例
    # 第一行指定应用程序路径
    #include <tunables/global>
    
    /bin/ping {
      #include <abstractions/base>
      #include <abstractions/consoles>
      
      # 允许读取系统时间
      /etc/localtime r,
      
      # 允许使用网络
      network inet raw,
      
      # 允许读取/proc文件系统
      /proc/sys/net/core/wmem_max r,
      /proc/sys/net/core/rmem_max r,
      /proc/sys/net/ipv4/ip_icmp_echo_ignore_all r,
      /proc/sys/net/ipv4/ip_icmp_ratelimit r,
      /proc/sys/net/ipv4/ip_no_pmtu_disc r,
      
      # 允许读取设备文件
      /dev/urandom r,
    }

案例4:AppArmor日志查看和分析

场景描述:应用程序在AppArmor强制模式下运行异常,需要查看相关日志进行分析。

操作步骤

  1. 查看AppArmor日志

    # 使用grep查看syslog中的AppArmor日志
    sudo grep -i apparmor /var/log/syslog
    
    # 使用journalctl查看AppArmor日志
    sudo journalctl -t apparmor
    
    # 查看最近的AppArmor拒绝事件
    sudo grep -i "denied" /var/log/syslog | grep apparmor
  2. 使用aa-logprof分析日志

    # 分析日志并生成配置建议
    sudo aa-logprof

课后练习

  1. 练习1:查看AppArmor状态

    • 查看系统中AppArmor的运行状态
    • 列出所有已加载的AppArmor配置文件
    • 查看特定服务(如Apache或Nginx)的AppArmor配置文件
  2. 练习2:管理AppArmor配置文件模式

    • 选择一个非关键服务的配置文件
    • 将其从强制模式切换到投诉模式
    • 验证模式变更是否成功
    • 测试应用程序是否正常运行
    • 切换回强制模式
  3. 练习3:分析AppArmor配置文件

    • 选择一个AppArmor配置文件进行分析
    • 识别配置文件中的规则类型和权限
    • 理解配置文件中的include语句的作用
    • 尝试解释配置文件的整体安全策略
  4. 练习4:查看AppArmor日志

    • 查看系统中的AppArmor日志
    • 识别AppArmor拒绝事件
    • 尝试理解拒绝事件的原因
    • 使用aa-logprof工具分析日志

总结

本集详细介绍了AppArmor的基础知识,包括:

  1. AppArmor概述:AppArmor是Linux系统中的一种安全增强工具,通过强制访问控制(MAC)机制限制应用程序的行为。

  2. 核心概念:包括配置文件、安全策略、模式(强制/投诉)等基本概念。

  3. 工作原理:AppArmor通过为每个应用程序加载特定的配置文件,限制其对文件、网络、系统调用等资源的访问。

  4. 配置文件结构:配置文件以应用程序路径命名,包含一系列允许或拒绝的访问规则。

  5. 管理命令:包括apparmor_status、aa-complain、aa-enforce、aa-logprof等基本管理命令。

  6. 工作模式:AppArmor支持强制模式(Enforcing)和投诉模式(Complain)两种工作模式。

  7. 日志管理:AppArmor的拒绝事件会记录到系统日志中,可通过日志分析工具进行查看和分析。

AppArmor与SELinux相比,配置更加简单直观,适合对安全性有一定要求但不需要过于复杂配置的场景。掌握AppArmor的基础知识,有助于提高系统的安全性,防止应用程序的越权行为。

« 上一篇 SELinux 配置 下一篇 » AppArmor 配置