如何在pam

时间:2015-10-07 09:34:43

标签: c linux pam

我正在编写一个自定义pam模块,其中只能从特定的ip地址控制身份验证

我无法获取客户端建立连接的IP地址。 有什么例子吗?

我在我的代码中使用此功能

....
    err = pam_get_item(pamh, PAM_RHOST, (const void **) &pHost);
.....

但我总是将视为

1 个答案:

答案 0 :(得分:2)

首先关闭:

  

其中仅从特定IP地址控制身份验证

以IP地址为基础这是一个坏主意,因为它们可能很容易被伪造。根本不要这样做。

其次:

作为man pam_get_item will tell you

  

请求主机名(PAM_RUSER实体请求服务的机器的主机名)。那就是PAM_RUSER @ PAM_RHOST确实标识了请求用户。在某些应用程序中,PAM_RHOST可能为NULL。在这种情况下,不清楚身份验证请求的来源。

现在很多应用都会出现这种情况。

您可能只是混淆了PAM请求来源(不应该 ) - 那些人尝试来获取身份验证,所以相信他们之前你相信他们很明显你自己的auth机制是无用的)和#34;身份验证器"在后台工作。

如果你需要基于主机的验证,虽然设置起来有点复杂但仍然有点复杂但仍然是广泛部署的解决方案:Kerberos正是为了这个目的,对主机进行身份验证,以便进一步的身份验证可以接收主机真实性考虑在内。不要重新发明轮子,特别是在安全环境中。