Netlink和安全性如何相互影响?

时间:2013-09-06 15:36:54

标签: linux kernel netlink

据我所知,Netlink是在Linux中进行内核和用户空间通信的现代正确方法。

我有一个需要配置的内核模块,因此我使用Netlink让它与用户空间应用程序通信。

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

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

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

1 个答案:

答案 0 :(得分:4)

捂脸

来自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指导我朝着正确的方向前进。