(sun)RPC auth_unix

Posted

技术标签:

【中文标题】(sun)RPC auth_unix【英文标题】: 【发布时间】:2009-09-11 12:06:01 【问题描述】:

我正在实现我自己的 RPC 框架,并且大部分工作都已完成,但我需要一些帮助如何验证 auth_unix?数据结构在http://www.faqs.org/rfcs/rfc1050.html 9.2 UNIX 身份验证中定义,但我应该如何验证用户?

【问题讨论】:

【参考方案1】:

UID 和 GID 与服务器上的 UID 和 GID 进行比较,以验证其真实性。这些 ID 可以使用 NIS 或其他工具在 unix 系统之间共享。随后在远程系统上执行的任何操作都在该有效 UID 和 GID 下运行。

服务器后面的应用程序可能会实现进一步的身份验证,但请注意 AUTH_UNIX 本身不会对用户进行身份验证;它信任提供的 UID 和 GID。

从第 9.3 节开始:

9.3 DES Authentication

   UNIX authentication suffers from two major problems:

         (1) The naming is too UNIX oriented.
         (2) There is no verifier, so credentials can easily be faked.

   DES authentication attempts to fix these two problems.

如果您使用 Unix 身份验证,则只能假设消息来自受信任的主机,并且在用户有机会执行发起调用的操作之前,已经有某种机制对用户进行身份验证。

在这种情况下,由应用程序来验证用户凭据。还提供了原始计算机名称,因此您可以确保原始 IP 地址与其匹配并仅回复该地址 - 这对于 DNS 缓存中毒攻击具有明显的漏洞。此外,如何让 DHCP 或 NAT 很好地发挥作用留给读者作为练习;-

这意味着您别无选择,只能信任 UID 和 GID,或者在位于 RPC 库顶部的应用程序中进行额外验证。 RFC 讨论了更安全的身份验证机制。但是,Sun RPC 并不是最安全的协议,通常不建议将其用于向不受信任的客户端提供的服务。

【讨论】:

非常感谢,我想我会跳过身份验证我想编写的程序只会在我的电脑和我的 tvix(媒体播放器)之间共享本地内容..

以上是关于(sun)RPC auth_unix的主要内容,如果未能解决你的问题,请参考以下文章

使用 SUN RPC 释放内存

通过 Sun RPC 发送二进制文件

从客户端发送结构并使用 SUN-RPC 以链表的形式保存到服务器

从服务器向客户端发送带有 sun rpc 的结构数组

使用 SUN RPC 将文件从客户端传输到服务器

SUN RPC:服务器是不是一一满足请求?