2015-10-07 729 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具有完全相同的目的,驗證主機,以便進一步驗證可以考慮主機真實性。不要重新發明輪子,特別是在安全環境中。