RADIUS-sever:检查前散列密码

我必须build立一个RADIUS服务器来与pfSense的强制门户进行authentication。 不幸的是,RADIUS数据库中的所有密码都是用一定的algorithm散列的。 我使用MySQL数据库。

由于用户将密码以明文方式提交给RADIUS服务器,我不知道是否可以将提交的密码散列在RADIUS服务器上,然后检查用户名是否存在以及密码。

如果这是可以避免的,我不想在客户端散列密码。 pfSense强制门户是目前唯一使用RADIUS服务器的应用程序。 但是如果我想扩展我的基础架构,我将不得不在每个客户端上实现散列algorithm。

通常有这种方法修改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 } } 

然后回显“接受”或“拒绝”。

configurationrlm_sql模块的一个实例。

添加一个查询来authorize {}来检索哈希密码。

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

密码属性可以是Cleartext密码MD5密码SMD5密码密码密码SHA2密码SHA密码SSHA密码LM密码密码之一。

然后调用pap模块。 pap模块应将Auth-Type设置为pap ,并将用户密码的值与用于密码属性值的scheme相匹配并进行比较。