【问题标题】:How do Netlink and security interact with each other?Netlink 和安全如何相互作用?
【发布时间】:2013-09-10 18:30:54
【问题描述】:

我了解 Netlink 是在 Linux 中通信内核和用户空间的现代且正确的方式。

我有一个需要配置的内核模块,所以我使用 Netlink 让它与用户空间应用程序对话。

一切都很好,但在我看来,任何用户都可以与我的模块交谈。我可以使用权限等锁定应用程序,但该项目是开源的,因此任何用户都可以轻松编译用户空间应用程序。因此,任何用户都可以配置我的内核。这对我来说并不好。

似乎我在这里遗漏了一些非常重要的东西,但我找到的 Netlink 文档都是关于如何让它运行,而不是它如何适应现实世界。

如何限制对模块的 Netlink 套接字的访问?如果这是不可能的,还有什么办法呢?

【问题讨论】:

  • 与 netlink 没有直接关系,但仍然:如果您想配置内核模式组件,也许 debugfs 中的文件和模块的参数也是要考虑的选项。如果需要传递大量数据,是的,netlink 和内存映射文件通常是更好的选择。这取决于您,什么最适合您的项目。
  • @Eugene 我希望他们将此列为 Netlink 的弱点之一,这样我很久以前就可以放弃它了:/。当然,假设确实没有解决方案。但如果真的没有,我想知道 Netlink 有什么好的应用程序,因为这有点危险。

标签: linux kernel netlink


【解决方案1】:

捂脸

来自 RFC 3549:

Netlink 存在于由内核和用户空间分隔的单个主机的可信环境中。 Linux 功能确保只有具有 CAP_NET_ADMIN 功能的人(通常是 root 用户)才能打开套接字。

内核应该是决定模块是否应该让用户继续进行的人,而不是 Netlink。很明显。

通过在内核空间中编码来阻塞

/* If the current thread of execution doesn't have the proper privileges... */
if (!capable(CAP_NET_ADMIN)) { /* Or CAP_SYS_ADMIN or whatever */
    /* Throw this request away. */
    return -EPERM;

,完成。

感谢ipcloudstadokoro 为我指引正确的方向。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 2022-11-27
    • 1970-01-01
    • 2019-10-03
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    相关资源
    最近更新 更多