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

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

【问题讨论】:

    标签: unix rpc nfs


    【解决方案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(媒体播放器)之间共享本地内容..
    猜你喜欢
    • 1970-01-01
    • 2011-01-06
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多