文章目录
- 简介
- Yama 的来源
- Yama 的主要功能
- Yama 的配置
- 如何验证 Yama 是否启用?
简介
Yama 是 Linux 内核中的一个安全模块(LSM,Linux Security Module),其主要目的是通过额外的限制来强化进程间的隔离,减少高权限操作可能带来的安全风险。
Yama 的来源
Yama 这个名字来源于印度神话中的阎罗王(Yama),他是掌管死亡和秩序的神明。这个名称隐喻了 Yama 模块的功能:为系统中的进程交互制定规则和限制,从而增强系统的安全性。
Yama 的主要功能
Yama 专注于管理进程之间的权限和访问控制,尤其是限制调试相关的 ptrace 调用和与内存相关的操作。它通过以下几个方面提高安全性:
限制 ptrace 调试权限:
ptrace 是一个强大的系统调用,用于调试进程,但也可能被恶意利用,造成信息泄露或注入攻击。
Yama 的核心功能是通过 /proc/sys/kernel/yama/ptrace_scope 来限制哪些进程可以被调试。
控制跨进程操作:
限制非父子关系的进程之间的调试操作。
防止用户无意或恶意干扰其他进程,尤其是在多用户或共享系统中。
增强内存访问控制:
阻止通过 /proc/$pid/mem 的直接内存操作,除非特定条件满足。
对一些低级调试操作实施限制,避免泄露敏感信息。
防止凭据泄露:
阻止进程获取其他进程的内存内容或关键数据(如密码、加密密钥)。
Yama 的配置
通过 /proc/sys/kernel/yama/ptrace_scope 配置 Yama 的行为。值的意义如下:
值 描述
0 无额外限制,同一用户 ID 的进程可以互相调试(与传统行为一致)。
1 限制非直接父子关系的进程调试,只允许调试自己创建的子进程(默认值,增强安全性)。
2 需要明确授权才能进行调试,必须通过 /proc/$pid/attach 进行授权后才能附加到目标进程。
3 完全禁用 ptrace 调试功能,任何进程都无法附加到其他进程,即使是子进程也不例外。
如何验证 Yama 是否启用?
Yama 是内核的一部分,通常默认启用。可以通过以下方法确认:
查看 /proc/sys/kernel/yama/ptrace_scope 是否存在:
cat /proc/sys/kernel/yama/ptrace_scope
检查内核是否加载了 Yama 模块:
dmesg | grep -i yama
与其他安全机制的关系
Yama 补充了其他 Linux 安全机制,如:
SELinux 或 AppArmor:提供更细粒度的访问控制。
Capability(能力)管理:Yama 的功能可以结合能力管理(如 CAP_SYS_PTRACE)进一步增强安全性。
用户命名空间隔离:进一步保护系统中的进程。