RADIUS-сервер: хеширование пароля перед проверкой

RADIUS-сервер: хеширование пароля перед проверкой

Мне нужно настроить сервер RADIUS для аутентификации с помощью портала захвата pfSense. К сожалению, все пароли в базе данных RADIUS хэшируются с помощью определенного алгоритма. Я использую базу данных MySQL.

Поскольку пользователи отправляют свои пароли на RADIUS-сервер в открытом виде, мне интересно, могу ли я хешировать отправленный пароль на RADIUS-сервере и впоследствии проверить существование имени пользователя и хешированного пароля.

Если этого можно избежать, я не хочу хэшировать пароль на стороне клиента. Captive portal pfSense в настоящее время является единственным приложением, использующим RADIUS-сервер. Но если я хочу расширить свою инфраструктуру, мне придется реализовать алгоритм хэширования на каждом клиенте.

Есть ли вообще возможность модифицировать RADIUS-сервер таким образом? Может быть с модификацией ядра? К сожалению, я не знаю, в каком файле в базе данных ищутся отправленные данные.

Есть ли у кого-нибудь совет, куда мне следует обратиться?

(Я использую Ubuntu Server 12.04 x86, freeradius, freeradius-mysql)

решение1

В качестве альтернативы, если вы хотите использовать внешний PHP-скрипт, вы можете поместить в authorize следующее:

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
    }
}

Затем повторите «Принять» или «Отклонить».

решение2

Настройте экземпляр модуля rlm_sql.

Добавьте запрос authorize {}для получения хешированного пароля.

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

Атрибут пароля может быть одним из следующих: Открытый текстовый пароль MD5-пароль SMD5-пароль Crypt-пароль SHA2-пароль SHA-пароль SSHA-пароль LM-пароль NT-пароль.

Затем вызовите papмодуль. Модуль pap должен установить Auth-Type на papи будет хэшировать значение User-Password, чтобы оно соответствовало схеме, используемой для значения password-attribute, и сравнивать их.

Связанный контент