繁体   English   中英

如何在pam中获取客户端ip

[英]how can I get the client ip in pam

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

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

我在我的代码中使用此函数

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

但是我总是因为总是空了

首先:

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

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

其次:

正如man pam_get_item 会告诉你的那样

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

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

你可能只是混淆PAM请求的起源(这应该永远不被信任-这些都是人们试图获得身份验证,那么信任他们,你相信他们是普通的使自己的身份验证机制之前没用)和“认证”工作中的背景。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM