Mysql

RADIUS-sever:檢查前散列密碼

  • November 7, 2016

我必須設置一個 RADIUS 伺服器以使用 pfSense 強制門戶進行身份驗證。不幸的是,RADIUS 數據庫中的所有密碼都使用某種算法進行了雜湊處理。我確實使用 MySQL 數據庫。

由於使用者以明文形式向 RADIUS 伺服器送出密碼,我想知道是否可以在 RADIUS 伺服器上對送出的密碼進行雜湊處理,然後檢查使用者名和雜湊密碼是否存在。

如果可以避免,我不想在客戶端散列密碼。pfSense 的強制門戶是目前唯一使用 RADIUS 伺服器的應用程序。但是如果我想擴展我的基礎設施,我必須在每個客戶端上實現散列算法。

通常是否有可能以這種方式修改 RADIUS 伺服器?也許通過修改核心?不幸的是,我沒有在數據庫中查找送出的數據的哪個文件。

有沒有人給我提示我必須看的地方?

(我確實使用 Ubuntu Server 12.04 x86、freeradius、freeradius-mysql)

或者,如果您想使用外部 PHP 腳本,您可以將以下內容放入授權中:

authorize {
   update {
       Tmp-String-0 := `/usr/bin/php5 -f /path/to/cpauth.php '%{User-Name}' '%{User-Password}'`
   }

   if (Tmp-String-0 == 'Accept') {
       update control {
           Auth-type := Accept
       }
   }
   else {
       reject
   }
}

然後回顯“接受”或“拒絕”。

配置 rlm_sql 模組的實例。

添加查詢以authorize {}檢索散列密碼。

update control {
   <password-attribute> := "%{sql:SELECT password FROM foo_table WHERE user=%{User-Name}}"
}

Password-Attribute 可以是 Cleartext-Password MD5-Password SMD5-Password Crypt-Password SHA2-Password SHA-Password SSHA-Password LM-Pasword NT-Password 之一。

然後呼叫pap模組。pap 模組應該將 Auth-Type 設置為pap並且將散列 User-Password 值以匹配用於密碼屬性值的方案並比較它們。

引用自:https://serverfault.com/questions/594280