0

0

Linux AppArmor 配置与安全策略

舞夢輝影

舞夢輝影

发布时间:2026-02-18 14:33:25

|

291人浏览过

|

来源于php中文网

原创

apparmor配置文件默认位于/etc/apparmor.d/,需按路径命名(斜杠换为点),加载后仅对新启动进程生效;用aa-status查看生效状态,apparmor_parser -r或systemctl restart apparmor重载。

linux apparmor 配置与安全策略

AppArmor 配置文件在哪?怎么确认它在生效

AppArmor 策略不是写完就自动起作用的,得先加载进内核、再让进程实际按策略跑起来。默认配置文件放在 /etc/apparmor.d/ 下,但注意:文件名必须和被保护程序的完整路径对应(比如 /usr/bin/firefox 对应 /etc/apparmor.d/usr.bin.firefox),中间斜杠要替换成点。

常见错误是改了文件却没 reload,或者 reload 了但进程没重启——策略只对新启动的进程生效。用 aa-status 能立刻看到当前哪些进程正在受保护、用了哪个 profile;如果某进程没列出来,要么没启用 profile,要么它根本没按 profile 启动(比如直接 /usr/bin/python3 script.py,而不是通过 systemd 或 wrapper 启动)。

  • sudo apparmor_parser -r /etc/apparmor.d/usr.bin.python3 重载单个 profile
  • sudo systemctl restart apparmor 重载全部(部分发行版不支持该 service)
  • 检查是否启用:cat /sys/module/apparmor/parameters/enabled 应输出 Y

profile 里 abstractioninclude 有什么区别

两者都用来复用规则,但语义和加载时机不同。abstraction 是 AppArmor 内置的一组通用权限集合(比如 abstraction/python 允许 Python 解释器读取标准库路径),它被设计为“可组合、无副作用”,多个 profile 可以安全 include 同一个 abstraction。

include 则是纯文本包含,类似 C 的 #include,不做任何解析或校验——如果 included 文件里写了 deny /etc/shadow r,,那就真 deny,不会因为上下文自动调整。容易踩的坑是:误把 include 当成 abstraction 复用,结果在多个 profile 里重复包含同一段规则,导致权限叠加出错(比如意外多开了网络访问)。

  • 优先用 abstraction:它们经过测试,适配主流发行版路径
  • include 适合放自定义的通用片段,比如公司内部日志路径规则,但要确保路径不冲突
  • 路径写法:abstraction 在 /usr/share/apparmor/abstractions/,include 默认从 /etc/apparmor.d/ 开始找相对路径

为什么 aa-logprof 生成的规则总不准

aa-logprof 依赖 dmesg 或 /var/log/audit/audit.log 里的拒绝日志(APPARMOR_DENIED),但它只能看到“被拦住的请求”,看不到“本该拦但没拦”的行为。所以它倾向于过度宽松:比如某程序偶尔读 /tmp/foo.sockaa-logprof 就会加一条 /tmp/** rw,,而不是更精确的 /tmp/foo.sock rw,

笔灵降AI
笔灵降AI

论文降AI神器,适配知网及维普!一键降至安全线,100%保留原文格式;无口语化问题,文风更学术,降后字数控制最佳!

下载

真实生产环境里,得手动收紧。关键是看日志里的 operation 字段(如 openconnect)、name(路径)、profile(当前用的 profile 名)和 requested_mask(想要的权限)。别直接信 aa-logprof 推荐的 /**,尤其对 /tmp/dev/proc 这类目录。

  • sudo aa-logprof -f /var/log/syslog 指定日志源(Ubuntu 默认走 syslog)
  • 交互时选 2(Ask again)比直接 1(Add rule)更安全
  • 生成后务必用 aa-complain /path/to/profile 先切到 complain 模式观察几天,再切 enforce

systemd 服务怎么套 AppArmor profile

systemd 不会自动给服务进程套 profile,除非显式指定。最可靠的方式是在 service unit 文件里加 AppArmorProfile=(systemd v245+),比如:

[Service]
AppArmorProfile=/etc/apparmor.d/usr.bin.mydaemon

老版本 systemd 或某些发行版(如 Ubuntu 20.04)不支持该字段,就得靠 ExecStartPre + aa-exec,但要注意:它只影响 ExecStart 启动的主进程,子进程默认继承——如果子进程 exec 了其他程序(比如调 sh -c "curl ..."),就得在 profile 里显式允许 /bin/sh/usr/bin/curl,否则会被拦。

  • 确认 systemd 版本:systemd --version;低于 245 就别设 AppArmorProfile
  • aa-exec -p /etc/apparmor.d/usr.bin.mydaemon -- /usr/bin/mydaemon 测试能否启动
  • profile 中必须声明 capability sys_admin, 才能操作 cgroup,否则 systemd 服务可能卡在 activating

复杂服务往往有多个二进制、临时目录、socket 路径,profile 很容易漏。建议先用 complain 模式跑满一个业务周期,再根据日志补全,别指望一次写对。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

452

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

181

2023.10.30

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1520

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

714

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

300

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

791

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

584

2023.07.06

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

562

2023.07.20

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

561

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.3万人学习

Git 教程
Git 教程

共21课时 | 3.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号