2015-10-07 188 views
3

我写在那里认证只能从特定的IP地址我怎样才能在PAM

控制自定义的PAM模块的客户端IP,我无法获取客户端建立连接的IP地址。 有没有例子?

我使用这个功能在我的代码

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

,但我得到phost一如既往空

+2

不是一个好主意,ip地址可以很容易伪造。非常简单地 – Behrooz

回答

2

第一关:

其中认证只能从特定的IP地址

控制

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

其次:

作为man pam_get_itemwill tell you

发出请求的主机名(从其中PAM_RUSER实体正在请求服务的机器的主机名)。即PAM_RUSER @ PAM_RHOST确定请求用户。在某些应用程序中,PAM_RHOST可能为NULL。在这种情况下,不清楚认证请求源自何处。

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

你可能只是混淆PAM请求的起源(这不应该永远信任 - 这些都是试图获得权威性的人,让他们信任你信任他们之前是平原使自己的身份验证机制没用)和在后台工作的“验证者”。

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