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 的相关规则将不会生效,因为开机这些规则不会被加载。

相关推荐
RisunJan1 小时前
Linux命令-ngrep(方便的数据包匹配和显示工具)
linux·运维·服务器
热爱Liunx的丘丘人1 小时前
Ansible-doc及常用模块
linux·运维·服务器·ansible
tianyuanwo2 小时前
OS/DevOps程序员切入Harness Engineering的入门与进阶指南
运维·devops·harness
飞飞传输2 小时前
国产化FTP替代方案哪个好?选对平台让传输更安全高效
大数据·运维·安全
一生了无挂2 小时前
自己编译RustDesk,并将自建ID服务器和key信息写入客户端
运维·服务器
王飞飞不会飞2 小时前
Mac 安装Hermes Agent 过程记录
运维·深度学习·机器学习
徐子元竟然被占了!!3 小时前
Nginx
运维·nginx
烛衔溟3 小时前
TypeScript this 参数类型与全局 this
javascript·ubuntu·typescript
SPC的存折4 小时前
6、Docker常用配置
运维·docker·容器
星谐5 小时前
AutoUploadLL:自动化上传工具开发实践
运维·自动化