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