AppArmor 使用说明

目录

      • [一:AppArmor 功能介绍](#一:AppArmor 功能介绍)
      • [二:AppArmor 配置介绍](#二:AppArmor 配置介绍)
        • [1、AppArmor 配置文件存放路径](#1、AppArmor 配置文件存放路径)
        • [2、AppArmor 配置文件命名规则](#2、AppArmor 配置文件命名规则)
      • [三: AppArmor 工作模式](#三: AppArmor 工作模式)
      • [四:apparmor.service 服务](#四:apparmor.service 服务)

一:AppArmor 功能介绍

AppArmor 和 SELinux 一样,都是基于 强制访问控制的安全框架,AppArmor 通过定义规则来限制进程能够访问的资源和操作,从而控制进程的权限。即使是root用户启动的进程也绕不开 AppArmor 的规则,去执行未授权的操作。

例如 :通过AppAemor定义MySQL进程只能对 /var/lib/mysql 目录进行读写,后续通过MySQL配置文件更改了MySQL数据目录,但是没有更改AppArmor 配置文件,即使文件系统上给予 MySQL 进程对该目录的读写权限,但是MySQL进程仍然会受到AppAemor规则的限制,无法访问新的目录。

  • 使用 AppArmor 的发行版:Ubuntu、Debian等都是默认开启。
  • 使用 SELinux 的发行版:RHEL、CentOS、Fedora等。

二:AppArmor 配置介绍

1、AppArmor 配置文件存放路径
  • 配置文件存放路径/etc/apparmor.d/ 目录下
  • 配置文件命名规则:进程路径作为文件名(将斜杠替换为点,去掉根目录部分)

例如 :MySQL的服务进程mysqld的路径为/usr/sbin/mysqld,对应的配置文件是:

bash 复制代码
/etc/apparmor.d/usr.sbin.mysqld

2、AppArmor 配置文件命名规则

配置文件格式

bash 复制代码
# 启动进程的可执行文件路径
/PATH/COMMAND {
	# 规则行
	/PATH 允许的权限,
	/PATH 允许的权限,
	/PATH 允许的权限,
}

文件路径访问规则

  • r:表示只读权限,程序可以读取文件。
  • w:表示写权限,程序可以写入文件。
  • x:表示执行权限,程序可以执行文件。
  • k:表示链接权限,程序可以创建符号链接。

文件路径匹配时候的符号

  • *:匹配指定路径下的所有文件和目录。只会匹配当前目录下的文件或目录,而不会递归到子目录中
  • ** :会递归地匹配指定路径下的所有文件和子目录,包括子目录中的文件。

例如

bash 复制代码
/usr/sbin/mysqld {
	# 对/etc/mysql/下的所有文件都具有读权限,包括子目录中的文件
	/etc/mysql/** r,
	# 对 /var/lib/mysql/目录具有读权限
	/var/lib/mysql/ r,
	# 对/var/lib/mysql/下所有文件都具有读写和可以创建符号链接的权限
	/var/lib/mysql/** rwk,
	# 对/data/mysql目录有读权限
	/data/mysql/ r,
	# 对/data/mysql下的所有文件,包括子目录文件都具有读写和创建符号链接文件的权限
	/data/mysql/** rwk,  
}

三: AppArmor 工作模式

1、AppArmor 两种工作模式
  • Enforce(强制模式) :AppArmo默认的工作模式,该模式会严格执行配置文件中的限制。

  • Complain(宽容模式):但如果有违规行为,AppArmor 会记录警告信息,而不会阻止程序运行。

2、查看当前进程的工作模式

查看所有配置有AppArmor 规则的进程的工作模式sudo aa-status

例如

bash 复制代码
sudo aa-status
3、给指定进程切换工作模式

系统重启后,会恢复到默认的强制模式,所以如果要持久化生效,可以在 /etc/rc.local中加入 aa-complain 命令来切换模式,或者通过其他方式来在系统启动时执行 aa-complain 命令,切换到指定模式。

  • 临时切换到 Enforce 模式sudo aa-enforce /etc/apparmor.d/<profile_name>
  • 临时切换到 Complain 模式sudo aa-complain /etc/apparmor.d/<profile_name>

4、重新加载配置文件生效

修改某个进程的 AppArmor 配置文件后,重新加载生效:sudo apparmor_parser -r /etc/apparmor.d/<profile_name>

例如

bash 复制代码
sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld

四:apparmor.service 服务

apparmor.service 服务的作用就是系统启动时负责加载和管理 AppArmor 的配置文件以及相应的安全策略。

  • 手动停止 apparmor.service :当前的进程仍然会遵循加载时应用的规则,所以AppArmor 的配置文件规则仍然生效。因为配置已经被内核加载。

  • 禁止apparmor.service自启动:然后重启操作系统后, AppArmor 的相关规则将不会生效,因为开机这些规则不会被加载。

相关推荐
安顾里2 小时前
Linux命令-iostat
linux·运维·服务器
100编程朱老师2 小时前
面试:什么叫Linux多路复用 ?
linux·运维·服务器
群联云防护小杜2 小时前
云服务器主动防御策略与自动化防护(下)
运维·服务器·分布式·安全·自动化·音视频
PPIO派欧云2 小时前
PPIO X OWL:一键开启任务自动化的高效革命
运维·人工智能·自动化·github·api·教程·ppio派欧云
enyp803 小时前
麒麟系统(基于Ubuntu)上使用Qt编译时遇到“type_traits文件未找到”的错误
linux·qt·ubuntu
明天一定早睡早起3 小时前
Ubuntu20.04 Ollama 配置相关
ubuntu·llama
struggle20253 小时前
LinuxAgent开源程序是一款智能运维助手,通过接入 DeepSeek API 实现对 Linux 终端的自然语言控制,帮助用户更高效地进行系统运维工作
linux·运维·服务器·人工智能·自动化·deepseek
不知名。。。。。。。。6 小时前
Linux—— 版本控制器Git
linux·运维·git
遇到我又惊又喜6 小时前
佛山大旺高新区3650 M5 ERP服务器维修案例
运维·服务器
安全系统学习7 小时前
网络安全之红队LLM的大模型自动化越狱
运维·人工智能·安全·web安全·机器学习·php