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

相关推荐
DjangoJason26 分钟前
操作系统 :进程概念
linux·笔记·ubuntu
dessler1 小时前
Kubernetes(k8s)-隔离(Cordon)和驱逐(Drain)
linux·运维·kubernetes
行者Sun19891 小时前
【Docker】Dockerfile 优化工具 hadolint
运维·docker·容器
andeyeluguo1 小时前
【运维】负载均衡
运维·负载均衡
SecPulse1 小时前
流影---开源网络流量分析平台(四)(分析引擎部署)
运维·服务器·人工智能·网络安全·开源·流影
浩浩测试一下1 小时前
网络安全之超强Linux信息收集:渗透测试与应急响应的基石(命令超强集合工作手册)
linux·运维·服务器·安全·web安全·网络安全·系统安全
GISer_Jing1 小时前
前端常问的宏观“大”问题详解(二)
linux·前端·ubuntu
amcomputer2 小时前
程序自动化填写网页表单数据
运维·服务器·自动化
不剪发的Tony老师2 小时前
JumpServer:一款企业级开源堡垒机
运维·开源
头发尚存的猿小二3 小时前
Linux--文件
linux·运维·服务器