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

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

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

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

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

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

解决方法:

捂脸

来自RFC 3549:

Netlink lives in a trusted environment of a single host separated by kernel and user space. Linux capabilities ensure that only someone with CAP_NET_ADMIN capability (typically, the root user) is allowed to open sockets.

内核应该是告诉模块是否应该让用户继续进行的内核,而不是Netlink.明显.

只是通过在kernelspace中编码来阻止

/* 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指导我正确的方向.

上一篇:监控镜头如何选型及故障处理


下一篇:《jQuery Mobile快速入门》—— 导读