簡體   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