第138集:AppArmor 基础
教学目标
- 了解AppArmor的基本概念和工作原理
- 掌握AppArmor的核心组件和配置文件结构
- 学会使用AppArmor的基本管理命令
- 理解AppArmor的安全策略类型和工作模式
- 能够查看和管理AppArmor配置文件
主要知识点
- AppArmor概述
- AppArmor核心概念
- AppArmor工作原理
- AppArmor配置文件结构
- AppArmor管理命令
- AppArmor工作模式
- AppArmor安全策略类型
- AppArmor日志管理
实用案例分析
案例1:查看AppArmor状态和配置文件
场景描述:需要了解系统中AppArmor的运行状态和已加载的配置文件。
操作步骤:
查看AppArmor状态:
# 查看AppArmor状态 sudo apparmor_status # 查看AppArmor服务状态 sudo systemctl status apparmor查看已加载的配置文件:
# 查看已加载的配置文件 sudo apparmor_status | grep profiles # 查看配置文件目录 ls -la /etc/apparmor.d/查看特定应用的配置文件:
# 查看SSH服务的AppArmor配置 cat /etc/apparmor.d/usr.sbin.sshd # 查看Apache服务的AppArmor配置 cat /etc/apparmor.d/usr.sbin.apache2
案例2:管理AppArmor配置文件模式
场景描述:需要调整特定应用的AppArmor配置文件模式,从强制模式切换到投诉模式进行测试。
操作步骤:
查看当前配置文件模式:
# 查看所有配置文件的模式 sudo aa-status # 查看特定配置文件的模式 sudo aa-status | grep sshd切换配置文件到投诉模式:
# 切换到投诉模式 sudo aa-complain /etc/apparmor.d/usr.sbin.sshd # 验证模式变更 sudo aa-status | grep sshd切换配置文件到强制模式:
# 切换到强制模式 sudo aa-enforce /etc/apparmor.d/usr.sbin.sshd # 验证模式变更 sudo aa-status | grep sshd
案例3:理解AppArmor配置文件结构
场景描述:需要分析一个AppArmor配置文件的结构,了解其规则组成。
操作步骤:
分析基本配置文件结构:
# 查看一个简单的配置文件示例 cat /etc/apparmor.d/bin.ping理解配置文件语法:
- 配置文件以应用程序路径命名
- 规则以权限和路径的形式表示
- 权限包括:r(读取)、w(写入)、x(执行)、m(内存映射执行)等
- 路径可以使用通配符
查看配置文件示例解析:
# 配置文件示例解析 # 以 /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强制模式下运行异常,需要查看相关日志进行分析。
操作步骤:
查看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使用aa-logprof分析日志:
# 分析日志并生成配置建议 sudo aa-logprof
课后练习
练习1:查看AppArmor状态
- 查看系统中AppArmor的运行状态
- 列出所有已加载的AppArmor配置文件
- 查看特定服务(如Apache或Nginx)的AppArmor配置文件
练习2:管理AppArmor配置文件模式
- 选择一个非关键服务的配置文件
- 将其从强制模式切换到投诉模式
- 验证模式变更是否成功
- 测试应用程序是否正常运行
- 切换回强制模式
练习3:分析AppArmor配置文件
- 选择一个AppArmor配置文件进行分析
- 识别配置文件中的规则类型和权限
- 理解配置文件中的include语句的作用
- 尝试解释配置文件的整体安全策略
练习4:查看AppArmor日志
- 查看系统中的AppArmor日志
- 识别AppArmor拒绝事件
- 尝试理解拒绝事件的原因
- 使用aa-logprof工具分析日志
总结
本集详细介绍了AppArmor的基础知识,包括:
AppArmor概述:AppArmor是Linux系统中的一种安全增强工具,通过强制访问控制(MAC)机制限制应用程序的行为。
核心概念:包括配置文件、安全策略、模式(强制/投诉)等基本概念。
工作原理:AppArmor通过为每个应用程序加载特定的配置文件,限制其对文件、网络、系统调用等资源的访问。
配置文件结构:配置文件以应用程序路径命名,包含一系列允许或拒绝的访问规则。
管理命令:包括apparmor_status、aa-complain、aa-enforce、aa-logprof等基本管理命令。
工作模式:AppArmor支持强制模式(Enforcing)和投诉模式(Complain)两种工作模式。
日志管理:AppArmor的拒绝事件会记录到系统日志中,可通过日志分析工具进行查看和分析。
AppArmor与SELinux相比,配置更加简单直观,适合对安全性有一定要求但不需要过于复杂配置的场景。掌握AppArmor的基础知识,有助于提高系统的安全性,防止应用程序的越权行为。