问题标签 [linux-security-module]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
787 浏览

security - 安全启动和内核锁定之间有什么关系吗?

据我到目前为止搜索,这两个功能似乎是独立的。

安全启动依赖于内核签名,因此引导加载程序将检查(内核/单映像应用程序)签名,如果有效将调用内核启动函数。

锁定是另一个功能,其中“锁定代码旨在允许内核在启动的早期锁定 - 足够早以至于我们还没有能力kmalloc()。甚至不允许特权用户访问内核内存中存在的机密数据。”

在内核被验证为有效后,锁定通过引导参数/sysfs 控制进入。

我的理解正确吗?

因此,在禁用安全启动的情况下,锁定功能应该仍然有效。

0 投票
1 回答
231 浏览

linux - SELinux - 如何调用我的自定义界面?

我写了一个包含新类型定义(.te)和接口方法(.if)的新策略:

.te 文件:

.if 文件:

现在我正在编写一个新策略并想调用 dummy_int 宏:

.te 文件:

但是 - 编译此策略会生成以下错误:

“虚拟”策略已正确编译和安装。

我究竟做错了什么?如何让编译器知道这个宏?

我尝试使用 ifndef 语句包装宏实现,如下所述: fedoraproject.org/wiki/SELinux/IndependentPolicy

向后兼容性部分下 - 没有变化。

谢谢

0 投票
1 回答
436 浏览

linux - 为什么这个 kernel_write-call 会崩溃?

每当我尝试写入正在处理的 Linux 安全模块中的文件时,内核都会崩溃并显示以下错误消息。

我尝试使用vfs_write而不是kernel_write,尝试使用普通字符数组而不是我现在使用的缓冲区,但它总是崩溃并出现类似的错误消息。

错误消息的原因是什么,我该如何解决?

我知道在内核中写入文件是不好的,但我需要持久存储信息。

下面是我正在使用的代码的简化版本,它在 LSM_HOOK 中执行。

详细的崩溃日志:

姓名:

0 投票
0 回答
522 浏览

python - 允许 OAuth2 登录委派给受 Kerberos 保护的资源

我想在 Python 中构建一个使用 OAuth2 的 Web API,并最终在后端使用受 Kerberos 保护的资源。具体来说,我想要一个使用 OAuth2 对用户进行身份验证的 Web API,然后在请求期间将它们切换到 Kerberos 上下文。(我对 Kerberos 不太熟悉,这可能很明显。)许多具有不同凭据的用户将使用相同的 API。应该注意的是,这将在具有一些 Kerberos 实现的 Linux 环境中完成。我想从授权中使用 OAuth2,因为开发人员使用 API 会更容易。

如何委派或模拟使用 OAuth2 进行身份验证的 Kerberbos 用户?我知道我可以在 OAuth2 身份验证令牌 (jwt) 中为 Web API 提供任何必要的信息。此外,我可以让 OAuth2 服务器有一个令牌自省方法,该方法允许我获取进行模拟所需的任何信息。

0 投票
1 回答
558 浏览

bpf - eBPF:插入一个新的内部映射到`BPF_MAP_TYPE_HASH_OF_MAPS`?

我正在尝试实现 LSM BPF 程序,并且我想在触发 LSM 挂钩BPF_MAP_TYPE_HASH_OF_MAPS时用于存储每个超级块的信息。sb_alloc_security例如,我想将地图定义为:

我想使用超级块的 UUID 作为键outer_map,每次分配一个新的超级块时,我想创建一个新的内部映射,例如:

但似乎地图只能在用户空间中创建。有什么解决方法吗?

0 投票
1 回答
118 浏览

linux - 非独占(可堆叠)Linux 安全模块可以使用安全 blob 吗?

我正在尝试使用 Linux 安全模块,试图制作一个。

我关于它们应该如何工作的主要知识来源是邮件列表存档和现有 LSM 的来源,以及 Linux 文档中关于它们的几页。

我知道有两种 LSM。

  • SELinux / AppArmor 等独家 LSM,LSM_FLAG_EXCLUSIVE在其 LSM 定义中设置了标志。
  • 非排他性 LSM,如 Yama、功能或锁定。

浏览所有这些 LSM 的源代码,我发现非排他性的从不使用安全 blob。另一方面,独占者大量使用它们。

例如,请参阅AppArmor LSM 定义Yama 的定义。

那么,非排他性 LSM 可以指定 blob 大小并使用此功能吗?

为了找到答案,我探索了框架的源代码,看看是否可能在每个 LSM 挂钩调用之间切换了安全 blob,我猜这将允许每个 LSM 只能访问自己的 blob,而不能访问另一个 LSM 的 blob。

但是,我们可以在 LSM 框架中看到,情况并非如此。

如果我的 LSM 声明了 blob 大小,如果我的内核也启用了 SELinux,我可以使用这些 blob 吗?SELinux 和我的结构不会重叠吗?

0 投票
0 回答
65 浏览

amazon-web-services - 监控 ec2 实例的 Linux 日志

如何监控 ec2 实例的 Linux 日志?我正在考虑使用警卫职责,但后来知道它不会扫描操作系统日志。我如何确保如果 ec2 实例发生任何类型的攻击/安全威胁,我会立即收到通知?

0 投票
1 回答
126 浏览

linux-kernel - 可动态加载的 Linux 安全模块

我在 LWN 上看到了很多关于允许动态加载 Linux 安全模块 (LSM) 的文章,但无法找到有关如何实现它的具体信息。LSM 钩子(我不知道这是不是正确的术语)不再在内核中导出,但它们的地址可以被检索kallsyms_lookup_name然后分配给函数声明。

有人提到LSM 挂钩不可卸载,但这是真的吗?它甚至意味着什么?如果 Linux 可加载内核模块注册了一些钩子,以后是否无法取消注册它们?为什么会出现这种情况?是否有解决方法或强制他们卸载的方法?

动态可加载 LSM 的编写方式是否必须与内置 LSM 不同?还是两者都使用相同的约定和接口?

0 投票
0 回答
163 浏览

c - 从 linux 内核中的 bprm_check_security 获取 argv。文档有错吗?

根据Linux Kernel 的文档

bprm_check_security: 这个钩子调解了开始搜索二进制处理程序的时间点。它允许检查bprm->cred->security在前面creds_for_exec调用中设置的值。argvlist 和 envplist在bprm. 这个钩子可能在一个execve. bprm包含linux_binprm结构。

然而,argvenvp(例如bprm->mm->arg_start)的值实际上是NULL在这一点上。这是因为这些值的设置是在钩子之后setup_arg_pages调用的。此外,该结构仍然指向旧进程,因此它不能用于获取这些数据。current

所以我的问题是:文档是不正确的,还是有另一种方法可以可靠地获取参数?


旁注:我知道这篇文章已经提出了一个非常相似的问题,但我认为这不是重复的,因为这篇文章询问了一种从 argv 获取的方法bprm_check_security,而我认为这可能是不可能的,因此我要求确认该问题来自文档。此外,该帖子没有给出正确答案。

0 投票
1 回答
91 浏览

linux-kernel - 多分区Linux中可执行文件的绝对路径

我正在使用 LSM 挂钩拦截exec系统调用以打印正在执行的可执行文件的路径。在具有默认分区选项的 Debian 上,可执行文件的路径是绝对路径。但是在 Debian 上,多个分区具有单独的 tmp、home var 等挂载点,第一个父目录被截断。例如,/tmp/abc.sh 中的文件显示为 abc.sh。其他挂载点也是如此。在这种情况下,我怎样才能获得绝对路径?