[英]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.