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

相关推荐
易德研发4 分钟前
ubuntu24.04安装NFS网络文件系统/ARM开发板NFS挂载
运维·服务器·网络
生活爱好者!1 小时前
NAS 部署白板工具,实现思维导图/画板/流程图自由
运维·docker·容器
牧以南歌〆8 小时前
在Ubuntu主机中修改ARM Linux开发板的根文件系统
linux·arm开发·驱动开发·ubuntu
互联网搬砖老肖9 小时前
运维打铁: MongoDB 数据库集群搭建与管理
运维·数据库·mongodb
Antonio9159 小时前
【音视频】HLS简介与服务器搭建
运维·服务器·音视频
艾伦_耶格宇10 小时前
【docker】-1 docker简介
运维·docker·容器
R.X. NLOS10 小时前
VS Code远程开发新方案:使用SFTP扩展解决Remote-SSH连接不稳定问题
运维·服务器·ssh·debug·vs code
cuijiecheng201811 小时前
Ubuntu下布署mediasoup-demo
linux·运维·ubuntu
jingyu飞鸟15 小时前
linux系统源代码安装apache、编译隐藏版本号
linux·运维·apache
2401_8582861116 小时前
OS15.【Linux】gdb调试器的简单使用
linux·运维·服务器·开发语言·gdb